Wikilivres
frwikibooks
https://fr.wikibooks.org/wiki/Accueil
MediaWiki 1.47.0-wmf.7
first-letter
Média
Spécial
Discussion
Utilisateur
Discussion utilisateur
Wikilivres
Discussion Wikilivres
Fichier
Discussion fichier
MediaWiki
Discussion MediaWiki
Modèle
Discussion modèle
Aide
Discussion aide
Catégorie
Discussion catégorie
Transwiki
Discussion Transwiki
Wikijunior
Discussion Wikijunior
TimedText
TimedText talk
Module
Discussion module
Event
Event talk
Fonctionnement d'un ordinateur/Les circuits pour l'addition et la soustraction
0
65787
768298
768213
2026-06-22T16:07:10Z
Mewtow
31375
/* Les accélérations de la propagation de retenue */
768298
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
===L'additionneur complet conçu avec deux demi-additionneurs===
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
Les autres implémentations de l'additionneur complet que nous allons voir sont des dérivés de ce circuit, auquel on a appliqué quelques simplifications. Les simplifications portent surtout sur le circuit de calcul de la retenue. En effet, le calcul de la retenue doit absolument être le plus rapide possible,vu que la propagation des retenues est le point limitant pour les performances d'un additionneur.
===L'additionneur complet basé sur la propagation et la génération de retenue===
L'additionneur complet précédent est de loin le plus simple, le plus évident. Il est utilisé dans les additionneurs simples, peu performants. Mais il existe d'autres implémentations, utilisées dans des additionneurs performants, qui sont terriblement importantes pour la suite du chapitre. Ces additionneurs performants cherchent à calculer la retenue le plus rapidement possible. Par contre, le bit de somme est toujours calculé avec deux portes XOR, cela ne change pas.
Pour comprendre comment ils fonctionnent, regardons ce que vaut la retenue sortante en fonction de la retenue entrante, en analysant la table de vérité de l'additionneur complet. Il y a trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
Si les deux bits sont différents, la retenue sortante est égale à la retenue entrante. On dit que la retenue entrante est propagée sur la sortie de retenue. Cependant, il y a aussi deux cas où la retenue n'est pas propagée : celui où la retenue sortante est forcée à 1, et celui où elle est forcée à 0, peu importe la valeur de la retenue entrante. Dans le premier cas, l'addition donne une retenue à 1, quelle que soit la retenue envoyée en entrée (sous-entendu, même si celle-ci vaut 0). On dit que la retenue sortante est générée. Dans le cas inverse, la retenue sortante est forcée à 0, peu importe la retenue entrante. On dit que la retenue entrante est absorbée.
Il y a cependant une petite ambiguïté à dire que la retenue a été propagée, absorbée ou générée. En effet, prenons le cas où la retenue sortante et entrantes valent toutes deux 0 : est-ce que la retenue a été propagée ou bien absorbée, ou les deux ? Idem quand les deux retenues sont à 1. Il y a un choix arbitraire à faire dans ce genre de cas, pour la plupart des lignes de la table de vérité. Cependant, il y a un choix bien précis qui est supérieur aux autres, et c'est celui qui est présenté dans le tableau suivant. Les lignes rouge correspondent à une retenue propagée, celles en bleu à une retenue absorbée, celle en vert à une retenue générée.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_rouge"
||0||0||1|| ||0||1
|- class="f_rouge"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_bleu"
||1||0||0|| ||0||1
|- class="f_rouge"
||1||0||1|| ||1||0
|- class="f_rouge"
||1||1||0|| ||1||0
|- class="f_vert"
||1||1||1|| ||1||1
|}
Avec ce choix, on peut déterminer si la retenue est propagée, absorbée ou générée, sans tenir compte de la retenue elle-même. On peut déterminer dans quel cas on est seulement en regardant les bits d'opérandes nommés A et B.
* La retenue est propagée si les deux bits d'opérande sont différents.
* La retenue est générée si les deux bits d'opérande sont à 1.
* La retenue est absorbée si les deux bits d'opérande sont à 0.
On peut donc détecter si une retenue est générée, absorbée ou propagée avec une simple porte logique : un ET entre les deux bits d'opérande pour la génération, un NOR pour l'absorption, un XOR pour la propagation.
L'additionneur que nous allons voir détermine si la retenue est propagée, absorbée ou générée, et calcule la retenue sortante en fonction de ça. Il génère deux bits, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P indique que la retenue entrante doit être propagée ou non : il est mis à 1 pour propager la retenue entrante, à 0 si elle ne doit pas être propagée. Le bit G indique si une retenue a été générée ou non : 1 si une retenue générée, 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Pour rappel, la retenue est propagée si les deux bits sont différents, n'est pas propagée s'ils sont identiques. Déterminer si deux bits sont identiques ou différents est le comportement d'une banale porte XOR. Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET.
Il existe des pseudo-additionneurs qui ne calculent pas la retenue sortante et fournissent à la place les signaux P et G, en plus du résultat. Un tel additionneur est appelé un '''additionneur P/G''' (P/G pour propagation/génération). Ils sont très utiles pour créer des additionneurs dits "à anticipation de retenue", comme on le verra dans la suite du chapitre.
{| class="flexible"
| [[File:FulladderPG.png|Additionneur P/G : entrées et sorties.]]
| [[File:Partial Full-Adder.svg|class=transparent|Additionneur P/G : circuit de génération des signaux P et G.]]
|}
Pour créer un additionneur complet avec cette méthode, il faut ajouter un circuit qui calcule la retenue sortante à partir des bits P et G. La retenue finale vaut 1 soit quand la retenue est générée, soit quand la retenue d'entrée vaut 1 et qu'elle est propagée. La traduction en équation logique; puis en circuits, donne un circuit strictement identique à celui basé sur deux demi-additionneurs... Vous remarquerez que les signaux P et G sont calculés par le premier demi-additionneur.
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Une méthode alternative utilise un multiplexeur pour la retenue. L'idée est que si la retenue est propagée, alors il suffit de recopier la retenue entrante sur la sortie de retenue. Par contre, si elle n'est pas propagée, la retenue sortante est calculée par un circuit, en l'occurrence celui qui dit si une retenue à été générée ou non. Le choix entre les deux se fait avec un multiplexeur, commandé par le bit P.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est celui-ci :
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Le circuit semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
L'optimisation la plus évidente est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' accélèrent le calcul des retenues en les calculant sans les propager. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes à additionner. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule la valeur de la retenue d'un étage ;
* et d'un circuit qui additionne les deux bits et la retenue pré-calculée : il s'agit d'une couche d'additionneurs complets simplifiés, qui ne fournissent pas de retenue.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit qui détermine la valeur de la retenue est lui-même composé de deux grandes parties, qui ont chacune leur utilité. La première partie réutilise des additionneurs qui donnent les signaux de propagation et génération de retenue. L'additionneur commence donc à prendre forme, et est composé de trois parties :
* un circuit qui crée les signaux P et G ;
* un circuit qui déduit la retenue à partir des signaux P et G adéquats ;
* et une couche d'additionneurs qui additionnent chacun deux bits et une retenue.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui reste. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue ;
* à zéro sinon.
Ainsi, l'addition des bits de rangs i va produire une retenue Ci, qui est égale à Gi+(Pi·Ci−1). Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
asr1tuj4bwho2p2sp4vt2wfhbynnvb3
768299
768298
2026-06-22T16:07:25Z
Mewtow
31375
/* Le calcul parallèle de la retenue */
768299
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
===L'additionneur complet conçu avec deux demi-additionneurs===
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
Les autres implémentations de l'additionneur complet que nous allons voir sont des dérivés de ce circuit, auquel on a appliqué quelques simplifications. Les simplifications portent surtout sur le circuit de calcul de la retenue. En effet, le calcul de la retenue doit absolument être le plus rapide possible,vu que la propagation des retenues est le point limitant pour les performances d'un additionneur.
===L'additionneur complet basé sur la propagation et la génération de retenue===
L'additionneur complet précédent est de loin le plus simple, le plus évident. Il est utilisé dans les additionneurs simples, peu performants. Mais il existe d'autres implémentations, utilisées dans des additionneurs performants, qui sont terriblement importantes pour la suite du chapitre. Ces additionneurs performants cherchent à calculer la retenue le plus rapidement possible. Par contre, le bit de somme est toujours calculé avec deux portes XOR, cela ne change pas.
Pour comprendre comment ils fonctionnent, regardons ce que vaut la retenue sortante en fonction de la retenue entrante, en analysant la table de vérité de l'additionneur complet. Il y a trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
Si les deux bits sont différents, la retenue sortante est égale à la retenue entrante. On dit que la retenue entrante est propagée sur la sortie de retenue. Cependant, il y a aussi deux cas où la retenue n'est pas propagée : celui où la retenue sortante est forcée à 1, et celui où elle est forcée à 0, peu importe la valeur de la retenue entrante. Dans le premier cas, l'addition donne une retenue à 1, quelle que soit la retenue envoyée en entrée (sous-entendu, même si celle-ci vaut 0). On dit que la retenue sortante est générée. Dans le cas inverse, la retenue sortante est forcée à 0, peu importe la retenue entrante. On dit que la retenue entrante est absorbée.
Il y a cependant une petite ambiguïté à dire que la retenue a été propagée, absorbée ou générée. En effet, prenons le cas où la retenue sortante et entrantes valent toutes deux 0 : est-ce que la retenue a été propagée ou bien absorbée, ou les deux ? Idem quand les deux retenues sont à 1. Il y a un choix arbitraire à faire dans ce genre de cas, pour la plupart des lignes de la table de vérité. Cependant, il y a un choix bien précis qui est supérieur aux autres, et c'est celui qui est présenté dans le tableau suivant. Les lignes rouge correspondent à une retenue propagée, celles en bleu à une retenue absorbée, celle en vert à une retenue générée.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_rouge"
||0||0||1|| ||0||1
|- class="f_rouge"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_bleu"
||1||0||0|| ||0||1
|- class="f_rouge"
||1||0||1|| ||1||0
|- class="f_rouge"
||1||1||0|| ||1||0
|- class="f_vert"
||1||1||1|| ||1||1
|}
Avec ce choix, on peut déterminer si la retenue est propagée, absorbée ou générée, sans tenir compte de la retenue elle-même. On peut déterminer dans quel cas on est seulement en regardant les bits d'opérandes nommés A et B.
* La retenue est propagée si les deux bits d'opérande sont différents.
* La retenue est générée si les deux bits d'opérande sont à 1.
* La retenue est absorbée si les deux bits d'opérande sont à 0.
On peut donc détecter si une retenue est générée, absorbée ou propagée avec une simple porte logique : un ET entre les deux bits d'opérande pour la génération, un NOR pour l'absorption, un XOR pour la propagation.
L'additionneur que nous allons voir détermine si la retenue est propagée, absorbée ou générée, et calcule la retenue sortante en fonction de ça. Il génère deux bits, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P indique que la retenue entrante doit être propagée ou non : il est mis à 1 pour propager la retenue entrante, à 0 si elle ne doit pas être propagée. Le bit G indique si une retenue a été générée ou non : 1 si une retenue générée, 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Pour rappel, la retenue est propagée si les deux bits sont différents, n'est pas propagée s'ils sont identiques. Déterminer si deux bits sont identiques ou différents est le comportement d'une banale porte XOR. Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET.
Il existe des pseudo-additionneurs qui ne calculent pas la retenue sortante et fournissent à la place les signaux P et G, en plus du résultat. Un tel additionneur est appelé un '''additionneur P/G''' (P/G pour propagation/génération). Ils sont très utiles pour créer des additionneurs dits "à anticipation de retenue", comme on le verra dans la suite du chapitre.
{| class="flexible"
| [[File:FulladderPG.png|Additionneur P/G : entrées et sorties.]]
| [[File:Partial Full-Adder.svg|class=transparent|Additionneur P/G : circuit de génération des signaux P et G.]]
|}
Pour créer un additionneur complet avec cette méthode, il faut ajouter un circuit qui calcule la retenue sortante à partir des bits P et G. La retenue finale vaut 1 soit quand la retenue est générée, soit quand la retenue d'entrée vaut 1 et qu'elle est propagée. La traduction en équation logique; puis en circuits, donne un circuit strictement identique à celui basé sur deux demi-additionneurs... Vous remarquerez que les signaux P et G sont calculés par le premier demi-additionneur.
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Une méthode alternative utilise un multiplexeur pour la retenue. L'idée est que si la retenue est propagée, alors il suffit de recopier la retenue entrante sur la sortie de retenue. Par contre, si elle n'est pas propagée, la retenue sortante est calculée par un circuit, en l'occurrence celui qui dit si une retenue à été générée ou non. Le choix entre les deux se fait avec un multiplexeur, commandé par le bit P.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est celui-ci :
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Le circuit semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' accélèrent le calcul des retenues en les calculant sans les propager. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes à additionner. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule la valeur de la retenue d'un étage ;
* et d'un circuit qui additionne les deux bits et la retenue pré-calculée : il s'agit d'une couche d'additionneurs complets simplifiés, qui ne fournissent pas de retenue.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit qui détermine la valeur de la retenue est lui-même composé de deux grandes parties, qui ont chacune leur utilité. La première partie réutilise des additionneurs qui donnent les signaux de propagation et génération de retenue. L'additionneur commence donc à prendre forme, et est composé de trois parties :
* un circuit qui crée les signaux P et G ;
* un circuit qui déduit la retenue à partir des signaux P et G adéquats ;
* et une couche d'additionneurs qui additionnent chacun deux bits et une retenue.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui reste. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue ;
* à zéro sinon.
Ainsi, l'addition des bits de rangs i va produire une retenue Ci, qui est égale à Gi+(Pi·Ci−1). Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
6zqb9r27301z7kt0wyd6b03h4c9g66b
768300
768299
2026-06-22T16:11:57Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768300
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
===L'additionneur complet conçu avec deux demi-additionneurs===
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
Les autres implémentations de l'additionneur complet que nous allons voir sont des dérivés de ce circuit, auquel on a appliqué quelques simplifications. Les simplifications portent surtout sur le circuit de calcul de la retenue. En effet, le calcul de la retenue doit absolument être le plus rapide possible,vu que la propagation des retenues est le point limitant pour les performances d'un additionneur.
===L'additionneur complet basé sur la propagation et la génération de retenue===
L'additionneur complet précédent est de loin le plus simple, le plus évident. Il est utilisé dans les additionneurs simples, peu performants. Mais il existe d'autres implémentations, utilisées dans des additionneurs performants, qui sont terriblement importantes pour la suite du chapitre. Ces additionneurs performants cherchent à calculer la retenue le plus rapidement possible. Par contre, le bit de somme est toujours calculé avec deux portes XOR, cela ne change pas.
Pour comprendre comment ils fonctionnent, regardons ce que vaut la retenue sortante en fonction de la retenue entrante, en analysant la table de vérité de l'additionneur complet. Il y a trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
Si les deux bits sont différents, la retenue sortante est égale à la retenue entrante. On dit que la retenue entrante est propagée sur la sortie de retenue. Cependant, il y a aussi deux cas où la retenue n'est pas propagée : celui où la retenue sortante est forcée à 1, et celui où elle est forcée à 0, peu importe la valeur de la retenue entrante. Dans le premier cas, l'addition donne une retenue à 1, quelle que soit la retenue envoyée en entrée (sous-entendu, même si celle-ci vaut 0). On dit que la retenue sortante est générée. Dans le cas inverse, la retenue sortante est forcée à 0, peu importe la retenue entrante. On dit que la retenue entrante est absorbée.
Il y a cependant une petite ambiguïté à dire que la retenue a été propagée, absorbée ou générée. En effet, prenons le cas où la retenue sortante et entrantes valent toutes deux 0 : est-ce que la retenue a été propagée ou bien absorbée, ou les deux ? Idem quand les deux retenues sont à 1. Il y a un choix arbitraire à faire dans ce genre de cas, pour la plupart des lignes de la table de vérité. Cependant, il y a un choix bien précis qui est supérieur aux autres, et c'est celui qui est présenté dans le tableau suivant. Les lignes rouge correspondent à une retenue propagée, celles en bleu à une retenue absorbée, celle en vert à une retenue générée.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_rouge"
||0||0||1|| ||0||1
|- class="f_rouge"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_bleu"
||1||0||0|| ||0||1
|- class="f_rouge"
||1||0||1|| ||1||0
|- class="f_rouge"
||1||1||0|| ||1||0
|- class="f_vert"
||1||1||1|| ||1||1
|}
Avec ce choix, on peut déterminer si la retenue est propagée, absorbée ou générée, sans tenir compte de la retenue elle-même. On peut déterminer dans quel cas on est seulement en regardant les bits d'opérandes nommés A et B.
* La retenue est propagée si les deux bits d'opérande sont différents.
* La retenue est générée si les deux bits d'opérande sont à 1.
* La retenue est absorbée si les deux bits d'opérande sont à 0.
On peut donc détecter si une retenue est générée, absorbée ou propagée avec une simple porte logique : un ET entre les deux bits d'opérande pour la génération, un NOR pour l'absorption, un XOR pour la propagation.
L'additionneur que nous allons voir détermine si la retenue est propagée, absorbée ou générée, et calcule la retenue sortante en fonction de ça. Il génère deux bits, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P indique que la retenue entrante doit être propagée ou non : il est mis à 1 pour propager la retenue entrante, à 0 si elle ne doit pas être propagée. Le bit G indique si une retenue a été générée ou non : 1 si une retenue générée, 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Pour rappel, la retenue est propagée si les deux bits sont différents, n'est pas propagée s'ils sont identiques. Déterminer si deux bits sont identiques ou différents est le comportement d'une banale porte XOR. Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET.
Il existe des pseudo-additionneurs qui ne calculent pas la retenue sortante et fournissent à la place les signaux P et G, en plus du résultat. Un tel additionneur est appelé un '''additionneur P/G''' (P/G pour propagation/génération). Ils sont très utiles pour créer des additionneurs dits "à anticipation de retenue", comme on le verra dans la suite du chapitre.
{| class="flexible"
| [[File:FulladderPG.png|Additionneur P/G : entrées et sorties.]]
| [[File:Partial Full-Adder.svg|class=transparent|Additionneur P/G : circuit de génération des signaux P et G.]]
|}
Pour créer un additionneur complet avec cette méthode, il faut ajouter un circuit qui calcule la retenue sortante à partir des bits P et G. La retenue finale vaut 1 soit quand la retenue est générée, soit quand la retenue d'entrée vaut 1 et qu'elle est propagée. La traduction en équation logique; puis en circuits, donne un circuit strictement identique à celui basé sur deux demi-additionneurs... Vous remarquerez que les signaux P et G sont calculés par le premier demi-additionneur.
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Une méthode alternative utilise un multiplexeur pour la retenue. L'idée est que si la retenue est propagée, alors il suffit de recopier la retenue entrante sur la sortie de retenue. Par contre, si elle n'est pas propagée, la retenue sortante est calculée par un circuit, en l'occurrence celui qui dit si une retenue à été générée ou non. Le choix entre les deux se fait avec un multiplexeur, commandé par le bit P.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est celui-ci :
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Le circuit semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue indépendamment les unes des autres, sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule la valeur de la retenue d'un étage ;
* et d'un circuit qui additionne les deux bits et la retenue pré-calculée : il s'agit d'une couche d'additionneurs complets simplifiés, qui ne fournissent pas de retenue.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit qui détermine la valeur de la retenue est lui-même composé de deux grandes parties, qui ont chacune leur utilité. La première partie réutilise des additionneurs qui donnent les signaux de propagation et génération de retenue. L'additionneur commence donc à prendre forme, et est composé de trois parties :
* un circuit qui crée les signaux P et G ;
* un circuit qui déduit la retenue à partir des signaux P et G adéquats ;
* et une couche d'additionneurs qui additionnent chacun deux bits et une retenue.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui reste. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue ;
* à zéro sinon.
Ainsi, l'addition des bits de rangs i va produire une retenue Ci, qui est égale à Gi+(Pi·Ci−1). Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
1faie906ot8ndgckd38mtomu8mcw6lo
768301
768300
2026-06-22T16:13:13Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768301
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
===L'additionneur complet conçu avec deux demi-additionneurs===
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
Les autres implémentations de l'additionneur complet que nous allons voir sont des dérivés de ce circuit, auquel on a appliqué quelques simplifications. Les simplifications portent surtout sur le circuit de calcul de la retenue. En effet, le calcul de la retenue doit absolument être le plus rapide possible,vu que la propagation des retenues est le point limitant pour les performances d'un additionneur.
===L'additionneur complet basé sur la propagation et la génération de retenue===
L'additionneur complet précédent est de loin le plus simple, le plus évident. Il est utilisé dans les additionneurs simples, peu performants. Mais il existe d'autres implémentations, utilisées dans des additionneurs performants, qui sont terriblement importantes pour la suite du chapitre. Ces additionneurs performants cherchent à calculer la retenue le plus rapidement possible. Par contre, le bit de somme est toujours calculé avec deux portes XOR, cela ne change pas.
Pour comprendre comment ils fonctionnent, regardons ce que vaut la retenue sortante en fonction de la retenue entrante, en analysant la table de vérité de l'additionneur complet. Il y a trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
Si les deux bits sont différents, la retenue sortante est égale à la retenue entrante. On dit que la retenue entrante est propagée sur la sortie de retenue. Cependant, il y a aussi deux cas où la retenue n'est pas propagée : celui où la retenue sortante est forcée à 1, et celui où elle est forcée à 0, peu importe la valeur de la retenue entrante. Dans le premier cas, l'addition donne une retenue à 1, quelle que soit la retenue envoyée en entrée (sous-entendu, même si celle-ci vaut 0). On dit que la retenue sortante est générée. Dans le cas inverse, la retenue sortante est forcée à 0, peu importe la retenue entrante. On dit que la retenue entrante est absorbée.
Il y a cependant une petite ambiguïté à dire que la retenue a été propagée, absorbée ou générée. En effet, prenons le cas où la retenue sortante et entrantes valent toutes deux 0 : est-ce que la retenue a été propagée ou bien absorbée, ou les deux ? Idem quand les deux retenues sont à 1. Il y a un choix arbitraire à faire dans ce genre de cas, pour la plupart des lignes de la table de vérité. Cependant, il y a un choix bien précis qui est supérieur aux autres, et c'est celui qui est présenté dans le tableau suivant. Les lignes rouge correspondent à une retenue propagée, celles en bleu à une retenue absorbée, celle en vert à une retenue générée.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_rouge"
||0||0||1|| ||0||1
|- class="f_rouge"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_bleu"
||1||0||0|| ||0||1
|- class="f_rouge"
||1||0||1|| ||1||0
|- class="f_rouge"
||1||1||0|| ||1||0
|- class="f_vert"
||1||1||1|| ||1||1
|}
Avec ce choix, on peut déterminer si la retenue est propagée, absorbée ou générée, sans tenir compte de la retenue elle-même. On peut déterminer dans quel cas on est seulement en regardant les bits d'opérandes nommés A et B.
* La retenue est propagée si les deux bits d'opérande sont différents.
* La retenue est générée si les deux bits d'opérande sont à 1.
* La retenue est absorbée si les deux bits d'opérande sont à 0.
On peut donc détecter si une retenue est générée, absorbée ou propagée avec une simple porte logique : un ET entre les deux bits d'opérande pour la génération, un NOR pour l'absorption, un XOR pour la propagation.
L'additionneur que nous allons voir détermine si la retenue est propagée, absorbée ou générée, et calcule la retenue sortante en fonction de ça. Il génère deux bits, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P indique que la retenue entrante doit être propagée ou non : il est mis à 1 pour propager la retenue entrante, à 0 si elle ne doit pas être propagée. Le bit G indique si une retenue a été générée ou non : 1 si une retenue générée, 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Pour rappel, la retenue est propagée si les deux bits sont différents, n'est pas propagée s'ils sont identiques. Déterminer si deux bits sont identiques ou différents est le comportement d'une banale porte XOR. Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET.
Il existe des pseudo-additionneurs qui ne calculent pas la retenue sortante et fournissent à la place les signaux P et G, en plus du résultat. Un tel additionneur est appelé un '''additionneur P/G''' (P/G pour propagation/génération). Ils sont très utiles pour créer des additionneurs dits "à anticipation de retenue", comme on le verra dans la suite du chapitre.
{| class="flexible"
| [[File:FulladderPG.png|Additionneur P/G : entrées et sorties.]]
| [[File:Partial Full-Adder.svg|class=transparent|Additionneur P/G : circuit de génération des signaux P et G.]]
|}
Pour créer un additionneur complet avec cette méthode, il faut ajouter un circuit qui calcule la retenue sortante à partir des bits P et G. La retenue finale vaut 1 soit quand la retenue est générée, soit quand la retenue d'entrée vaut 1 et qu'elle est propagée. La traduction en équation logique; puis en circuits, donne un circuit strictement identique à celui basé sur deux demi-additionneurs... Vous remarquerez que les signaux P et G sont calculés par le premier demi-additionneur.
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Une méthode alternative utilise un multiplexeur pour la retenue. L'idée est que si la retenue est propagée, alors il suffit de recopier la retenue entrante sur la sortie de retenue. Par contre, si elle n'est pas propagée, la retenue sortante est calculée par un circuit, en l'occurrence celui qui dit si une retenue à été générée ou non. Le choix entre les deux se fait avec un multiplexeur, commandé par le bit P.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est celui-ci :
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Le circuit semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit qui détermine la valeur de la retenue est lui-même composé de deux grandes parties, qui ont chacune leur utilité. La première partie réutilise des additionneurs qui donnent les signaux de propagation et génération de retenue. L'additionneur commence donc à prendre forme, et est composé de trois parties :
* un circuit qui crée les signaux P et G ;
* un circuit qui déduit la retenue à partir des signaux P et G adéquats ;
* et une couche d'additionneurs qui additionnent chacun deux bits et une retenue.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui reste. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue ;
* à zéro sinon.
Ainsi, l'addition des bits de rangs i va produire une retenue Ci, qui est égale à Gi+(Pi·Ci−1). Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
3ftaxuvszk0wd9vn5xxpzrwknv8oeqe
768302
768301
2026-06-22T16:15:27Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768302
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
===L'additionneur complet conçu avec deux demi-additionneurs===
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
Les autres implémentations de l'additionneur complet que nous allons voir sont des dérivés de ce circuit, auquel on a appliqué quelques simplifications. Les simplifications portent surtout sur le circuit de calcul de la retenue. En effet, le calcul de la retenue doit absolument être le plus rapide possible,vu que la propagation des retenues est le point limitant pour les performances d'un additionneur.
===L'additionneur complet basé sur la propagation et la génération de retenue===
L'additionneur complet précédent est de loin le plus simple, le plus évident. Il est utilisé dans les additionneurs simples, peu performants. Mais il existe d'autres implémentations, utilisées dans des additionneurs performants, qui sont terriblement importantes pour la suite du chapitre. Ces additionneurs performants cherchent à calculer la retenue le plus rapidement possible. Par contre, le bit de somme est toujours calculé avec deux portes XOR, cela ne change pas.
Pour comprendre comment ils fonctionnent, regardons ce que vaut la retenue sortante en fonction de la retenue entrante, en analysant la table de vérité de l'additionneur complet. Il y a trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
Si les deux bits sont différents, la retenue sortante est égale à la retenue entrante. On dit que la retenue entrante est propagée sur la sortie de retenue. Cependant, il y a aussi deux cas où la retenue n'est pas propagée : celui où la retenue sortante est forcée à 1, et celui où elle est forcée à 0, peu importe la valeur de la retenue entrante. Dans le premier cas, l'addition donne une retenue à 1, quelle que soit la retenue envoyée en entrée (sous-entendu, même si celle-ci vaut 0). On dit que la retenue sortante est générée. Dans le cas inverse, la retenue sortante est forcée à 0, peu importe la retenue entrante. On dit que la retenue entrante est absorbée.
Il y a cependant une petite ambiguïté à dire que la retenue a été propagée, absorbée ou générée. En effet, prenons le cas où la retenue sortante et entrantes valent toutes deux 0 : est-ce que la retenue a été propagée ou bien absorbée, ou les deux ? Idem quand les deux retenues sont à 1. Il y a un choix arbitraire à faire dans ce genre de cas, pour la plupart des lignes de la table de vérité. Cependant, il y a un choix bien précis qui est supérieur aux autres, et c'est celui qui est présenté dans le tableau suivant. Les lignes rouge correspondent à une retenue propagée, celles en bleu à une retenue absorbée, celle en vert à une retenue générée.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_rouge"
||0||0||1|| ||0||1
|- class="f_rouge"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_bleu"
||1||0||0|| ||0||1
|- class="f_rouge"
||1||0||1|| ||1||0
|- class="f_rouge"
||1||1||0|| ||1||0
|- class="f_vert"
||1||1||1|| ||1||1
|}
Avec ce choix, on peut déterminer si la retenue est propagée, absorbée ou générée, sans tenir compte de la retenue elle-même. On peut déterminer dans quel cas on est seulement en regardant les bits d'opérandes nommés A et B.
* La retenue est propagée si les deux bits d'opérande sont différents.
* La retenue est générée si les deux bits d'opérande sont à 1.
* La retenue est absorbée si les deux bits d'opérande sont à 0.
On peut donc détecter si une retenue est générée, absorbée ou propagée avec une simple porte logique : un ET entre les deux bits d'opérande pour la génération, un NOR pour l'absorption, un XOR pour la propagation.
L'additionneur que nous allons voir détermine si la retenue est propagée, absorbée ou générée, et calcule la retenue sortante en fonction de ça. Il génère deux bits, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P indique que la retenue entrante doit être propagée ou non : il est mis à 1 pour propager la retenue entrante, à 0 si elle ne doit pas être propagée. Le bit G indique si une retenue a été générée ou non : 1 si une retenue générée, 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Pour rappel, la retenue est propagée si les deux bits sont différents, n'est pas propagée s'ils sont identiques. Déterminer si deux bits sont identiques ou différents est le comportement d'une banale porte XOR. Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET.
Il existe des pseudo-additionneurs qui ne calculent pas la retenue sortante et fournissent à la place les signaux P et G, en plus du résultat. Un tel additionneur est appelé un '''additionneur P/G''' (P/G pour propagation/génération). Ils sont très utiles pour créer des additionneurs dits "à anticipation de retenue", comme on le verra dans la suite du chapitre.
{| class="flexible"
| [[File:FulladderPG.png|Additionneur P/G : entrées et sorties.]]
| [[File:Partial Full-Adder.svg|class=transparent|Additionneur P/G : circuit de génération des signaux P et G.]]
|}
Pour créer un additionneur complet avec cette méthode, il faut ajouter un circuit qui calcule la retenue sortante à partir des bits P et G. La retenue finale vaut 1 soit quand la retenue est générée, soit quand la retenue d'entrée vaut 1 et qu'elle est propagée. La traduction en équation logique; puis en circuits, donne un circuit strictement identique à celui basé sur deux demi-additionneurs... Vous remarquerez que les signaux P et G sont calculés par le premier demi-additionneur.
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Une méthode alternative utilise un multiplexeur pour la retenue. L'idée est que si la retenue est propagée, alors il suffit de recopier la retenue entrante sur la sortie de retenue. Par contre, si elle n'est pas propagée, la retenue sortante est calculée par un circuit, en l'occurrence celui qui dit si une retenue à été générée ou non. Le choix entre les deux se fait avec un multiplexeur, commandé par le bit P.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est celui-ci :
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Le circuit semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit de calcul des retenues est lui-même composé de deux circuits séparés. Le premier génère les signaux de propagation et génération de retenue, avec une couche d'additionneurs P/G. Le second circuit détermine chaque retenue à partir de ces singuax P et G. Le tout donne ceci :
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui calcule les retenues à partir des signaux P et G. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue ;
* à zéro sinon.
Ainsi, l'addition des bits de rangs i va produire une retenue Ci, qui est égale à Gi+(Pi·Ci−1). Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
o0ktm8mkjzpxphmxb1dg0mvqo676ci8
768303
768302
2026-06-22T16:17:16Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768303
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
===L'additionneur complet conçu avec deux demi-additionneurs===
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
Les autres implémentations de l'additionneur complet que nous allons voir sont des dérivés de ce circuit, auquel on a appliqué quelques simplifications. Les simplifications portent surtout sur le circuit de calcul de la retenue. En effet, le calcul de la retenue doit absolument être le plus rapide possible,vu que la propagation des retenues est le point limitant pour les performances d'un additionneur.
===L'additionneur complet basé sur la propagation et la génération de retenue===
L'additionneur complet précédent est de loin le plus simple, le plus évident. Il est utilisé dans les additionneurs simples, peu performants. Mais il existe d'autres implémentations, utilisées dans des additionneurs performants, qui sont terriblement importantes pour la suite du chapitre. Ces additionneurs performants cherchent à calculer la retenue le plus rapidement possible. Par contre, le bit de somme est toujours calculé avec deux portes XOR, cela ne change pas.
Pour comprendre comment ils fonctionnent, regardons ce que vaut la retenue sortante en fonction de la retenue entrante, en analysant la table de vérité de l'additionneur complet. Il y a trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
Si les deux bits sont différents, la retenue sortante est égale à la retenue entrante. On dit que la retenue entrante est propagée sur la sortie de retenue. Cependant, il y a aussi deux cas où la retenue n'est pas propagée : celui où la retenue sortante est forcée à 1, et celui où elle est forcée à 0, peu importe la valeur de la retenue entrante. Dans le premier cas, l'addition donne une retenue à 1, quelle que soit la retenue envoyée en entrée (sous-entendu, même si celle-ci vaut 0). On dit que la retenue sortante est générée. Dans le cas inverse, la retenue sortante est forcée à 0, peu importe la retenue entrante. On dit que la retenue entrante est absorbée.
Il y a cependant une petite ambiguïté à dire que la retenue a été propagée, absorbée ou générée. En effet, prenons le cas où la retenue sortante et entrantes valent toutes deux 0 : est-ce que la retenue a été propagée ou bien absorbée, ou les deux ? Idem quand les deux retenues sont à 1. Il y a un choix arbitraire à faire dans ce genre de cas, pour la plupart des lignes de la table de vérité. Cependant, il y a un choix bien précis qui est supérieur aux autres, et c'est celui qui est présenté dans le tableau suivant. Les lignes rouge correspondent à une retenue propagée, celles en bleu à une retenue absorbée, celle en vert à une retenue générée.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_rouge"
||0||0||1|| ||0||1
|- class="f_rouge"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_bleu"
||1||0||0|| ||0||1
|- class="f_rouge"
||1||0||1|| ||1||0
|- class="f_rouge"
||1||1||0|| ||1||0
|- class="f_vert"
||1||1||1|| ||1||1
|}
Avec ce choix, on peut déterminer si la retenue est propagée, absorbée ou générée, sans tenir compte de la retenue elle-même. On peut déterminer dans quel cas on est seulement en regardant les bits d'opérandes nommés A et B.
* La retenue est propagée si les deux bits d'opérande sont différents.
* La retenue est générée si les deux bits d'opérande sont à 1.
* La retenue est absorbée si les deux bits d'opérande sont à 0.
On peut donc détecter si une retenue est générée, absorbée ou propagée avec une simple porte logique : un ET entre les deux bits d'opérande pour la génération, un NOR pour l'absorption, un XOR pour la propagation.
L'additionneur que nous allons voir détermine si la retenue est propagée, absorbée ou générée, et calcule la retenue sortante en fonction de ça. Il génère deux bits, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P indique que la retenue entrante doit être propagée ou non : il est mis à 1 pour propager la retenue entrante, à 0 si elle ne doit pas être propagée. Le bit G indique si une retenue a été générée ou non : 1 si une retenue générée, 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Pour rappel, la retenue est propagée si les deux bits sont différents, n'est pas propagée s'ils sont identiques. Déterminer si deux bits sont identiques ou différents est le comportement d'une banale porte XOR. Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET.
Il existe des pseudo-additionneurs qui ne calculent pas la retenue sortante et fournissent à la place les signaux P et G, en plus du résultat. Un tel additionneur est appelé un '''additionneur P/G''' (P/G pour propagation/génération). Ils sont très utiles pour créer des additionneurs dits "à anticipation de retenue", comme on le verra dans la suite du chapitre.
{| class="flexible"
| [[File:FulladderPG.png|Additionneur P/G : entrées et sorties.]]
| [[File:Partial Full-Adder.svg|class=transparent|Additionneur P/G : circuit de génération des signaux P et G.]]
|}
Pour créer un additionneur complet avec cette méthode, il faut ajouter un circuit qui calcule la retenue sortante à partir des bits P et G. La retenue finale vaut 1 soit quand la retenue est générée, soit quand la retenue d'entrée vaut 1 et qu'elle est propagée. La traduction en équation logique; puis en circuits, donne un circuit strictement identique à celui basé sur deux demi-additionneurs... Vous remarquerez que les signaux P et G sont calculés par le premier demi-additionneur.
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Une méthode alternative utilise un multiplexeur pour la retenue. L'idée est que si la retenue est propagée, alors il suffit de recopier la retenue entrante sur la sortie de retenue. Par contre, si elle n'est pas propagée, la retenue sortante est calculée par un circuit, en l'occurrence celui qui dit si une retenue à été générée ou non. Le choix entre les deux se fait avec un multiplexeur, commandé par le bit P.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est celui-ci :
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Le circuit semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit de calcul des retenues est lui-même composé de deux circuits séparés. Le premier génère les signaux de propagation et génération de retenue, avec une couche d'additionneurs P/G. Le second circuit détermine chaque retenue à partir de ces singuax P et G. Le tout donne ceci :
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui calcule les retenues à partir des signaux P et G. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue et que la retenue entrante est à 1 ;
* à zéro sinon.
Ainsi, l'addition des bits de rangs i va produire une retenue Ci, qui est égale à <math>G_i + (P_i . C_{i-1})</math>. Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
28s3852fw83oxat5xsh7ugleuc25cno
768304
768303
2026-06-22T16:19:23Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768304
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
===L'additionneur complet conçu avec deux demi-additionneurs===
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
Les autres implémentations de l'additionneur complet que nous allons voir sont des dérivés de ce circuit, auquel on a appliqué quelques simplifications. Les simplifications portent surtout sur le circuit de calcul de la retenue. En effet, le calcul de la retenue doit absolument être le plus rapide possible,vu que la propagation des retenues est le point limitant pour les performances d'un additionneur.
===L'additionneur complet basé sur la propagation et la génération de retenue===
L'additionneur complet précédent est de loin le plus simple, le plus évident. Il est utilisé dans les additionneurs simples, peu performants. Mais il existe d'autres implémentations, utilisées dans des additionneurs performants, qui sont terriblement importantes pour la suite du chapitre. Ces additionneurs performants cherchent à calculer la retenue le plus rapidement possible. Par contre, le bit de somme est toujours calculé avec deux portes XOR, cela ne change pas.
Pour comprendre comment ils fonctionnent, regardons ce que vaut la retenue sortante en fonction de la retenue entrante, en analysant la table de vérité de l'additionneur complet. Il y a trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
Si les deux bits sont différents, la retenue sortante est égale à la retenue entrante. On dit que la retenue entrante est propagée sur la sortie de retenue. Cependant, il y a aussi deux cas où la retenue n'est pas propagée : celui où la retenue sortante est forcée à 1, et celui où elle est forcée à 0, peu importe la valeur de la retenue entrante. Dans le premier cas, l'addition donne une retenue à 1, quelle que soit la retenue envoyée en entrée (sous-entendu, même si celle-ci vaut 0). On dit que la retenue sortante est générée. Dans le cas inverse, la retenue sortante est forcée à 0, peu importe la retenue entrante. On dit que la retenue entrante est absorbée.
Il y a cependant une petite ambiguïté à dire que la retenue a été propagée, absorbée ou générée. En effet, prenons le cas où la retenue sortante et entrantes valent toutes deux 0 : est-ce que la retenue a été propagée ou bien absorbée, ou les deux ? Idem quand les deux retenues sont à 1. Il y a un choix arbitraire à faire dans ce genre de cas, pour la plupart des lignes de la table de vérité. Cependant, il y a un choix bien précis qui est supérieur aux autres, et c'est celui qui est présenté dans le tableau suivant. Les lignes rouge correspondent à une retenue propagée, celles en bleu à une retenue absorbée, celle en vert à une retenue générée.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_rouge"
||0||0||1|| ||0||1
|- class="f_rouge"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_bleu"
||1||0||0|| ||0||1
|- class="f_rouge"
||1||0||1|| ||1||0
|- class="f_rouge"
||1||1||0|| ||1||0
|- class="f_vert"
||1||1||1|| ||1||1
|}
Avec ce choix, on peut déterminer si la retenue est propagée, absorbée ou générée, sans tenir compte de la retenue elle-même. On peut déterminer dans quel cas on est seulement en regardant les bits d'opérandes nommés A et B.
* La retenue est propagée si les deux bits d'opérande sont différents.
* La retenue est générée si les deux bits d'opérande sont à 1.
* La retenue est absorbée si les deux bits d'opérande sont à 0.
On peut donc détecter si une retenue est générée, absorbée ou propagée avec une simple porte logique : un ET entre les deux bits d'opérande pour la génération, un NOR pour l'absorption, un XOR pour la propagation.
L'additionneur que nous allons voir détermine si la retenue est propagée, absorbée ou générée, et calcule la retenue sortante en fonction de ça. Il génère deux bits, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P indique que la retenue entrante doit être propagée ou non : il est mis à 1 pour propager la retenue entrante, à 0 si elle ne doit pas être propagée. Le bit G indique si une retenue a été générée ou non : 1 si une retenue générée, 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Pour rappel, la retenue est propagée si les deux bits sont différents, n'est pas propagée s'ils sont identiques. Déterminer si deux bits sont identiques ou différents est le comportement d'une banale porte XOR. Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET.
Il existe des pseudo-additionneurs qui ne calculent pas la retenue sortante et fournissent à la place les signaux P et G, en plus du résultat. Un tel additionneur est appelé un '''additionneur P/G''' (P/G pour propagation/génération). Ils sont très utiles pour créer des additionneurs dits "à anticipation de retenue", comme on le verra dans la suite du chapitre.
{| class="flexible"
| [[File:FulladderPG.png|Additionneur P/G : entrées et sorties.]]
| [[File:Partial Full-Adder.svg|class=transparent|Additionneur P/G : circuit de génération des signaux P et G.]]
|}
Pour créer un additionneur complet avec cette méthode, il faut ajouter un circuit qui calcule la retenue sortante à partir des bits P et G. La retenue finale vaut 1 soit quand la retenue est générée, soit quand la retenue d'entrée vaut 1 et qu'elle est propagée. La traduction en équation logique; puis en circuits, donne un circuit strictement identique à celui basé sur deux demi-additionneurs... Vous remarquerez que les signaux P et G sont calculés par le premier demi-additionneur.
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Une méthode alternative utilise un multiplexeur pour la retenue. L'idée est que si la retenue est propagée, alors il suffit de recopier la retenue entrante sur la sortie de retenue. Par contre, si elle n'est pas propagée, la retenue sortante est calculée par un circuit, en l'occurrence celui qui dit si une retenue à été générée ou non. Le choix entre les deux se fait avec un multiplexeur, commandé par le bit P.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est celui-ci :
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Le circuit semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit de calcul des retenues est lui-même composé de deux circuits séparés. Le premier génère les signaux de propagation et génération de retenue, avec une couche d'additionneurs P/G. Le second circuit détermine chaque retenue à partir de ces singuax P et G. Le tout donne ceci :
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui calcule les retenues à partir des signaux P et G. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue et que la retenue entrante est à 1 ;
* à zéro sinon.
Ainsi, l'addition des deux bits de rangs i va produire une retenue <math>C_i</math>, qui est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
cp6obkc65r3s8w67fczlcuqprr8pz7j
768305
768304
2026-06-22T18:20:05Z
Mewtow
31375
/* L'additionneur complet basé sur la propagation et la génération de retenue */
768305
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
===L'additionneur complet conçu avec deux demi-additionneurs===
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
Les autres implémentations de l'additionneur complet que nous allons voir sont des dérivés de ce circuit, auquel on a appliqué quelques simplifications. Les simplifications portent surtout sur le circuit de calcul de la retenue. En effet, le calcul de la retenue doit absolument être le plus rapide possible,vu que la propagation des retenues est le point limitant pour les performances d'un additionneur.
===L'additionneur complet basé sur la propagation et la génération de retenue===
L'additionneur complet précédent est de loin le plus simple, le plus évident. Il est utilisé dans les additionneurs simples, peu performants. Mais il existe d'autres implémentations, utilisées dans des additionneurs performants, qui sont terriblement importantes pour la suite du chapitre. Ces additionneurs performants cherchent à calculer la retenue sortante le plus rapidement possible. L'idée est de calculer la retenue sortante en fonction de la retenue d'entrée. Il y a trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
Le circuit que nous allons voir détermine si la retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P indique que la retenue entrante est propagée s'il est à 1, qu'elle ne l'est pas s'il est à 0. Le bit G indique qu'une retenue a été générée s'il est à 1. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Il y a cependant une petite ambiguïté à dire que la retenue a été propagée, absorbée ou générée. En effet, prenons le cas où la retenue sortante et entrantes valent toutes deux 0 : est-ce que la retenue a été propagée ou bien absorbée ? Idem quand les deux retenues sont à 1. Il y a un choix bien précis qui est supérieur aux autres, et c'est celui qui est présenté dans le tableau suivant. Les lignes rouge correspondent à une retenue propagée, celles en bleu à une retenue absorbée, celle en vert à une retenue générée.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_rouge"
||0||0||1|| ||0||1
|- class="f_rouge"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_bleu"
||1||0||0|| ||0||1
|- class="f_rouge"
||1||0||1|| ||1||0
|- class="f_rouge"
||1||1||0|| ||1||0
|- class="f_vert"
||1||1||1|| ||1||1
|}
Avec ce choix, on peut déterminer si la retenue est propagée, absorbée ou générée, sans tenir compte de la retenue elle-même. Le choix se fait en regardant la valeur des deux bits d'opérande A et B, uniquement. On peut déterminer dans quel cas on est seulement en regardant les bits d'opérandes nommés A et B.
* La retenue est propagée si les deux bits d'opérande sont différents.
* La retenue est générée si les deux bits d'opérande sont à 1.
* La retenue est absorbée si les deux bits d'opérande sont à 0.
On peut donc détecter si une retenue est générée, absorbée ou propagée avec une simple porte logique : un ET entre les deux bits d'opérande pour la génération, un NOR pour l'absorption, un XOR pour la propagation. Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que le circuit en question est un simple demi-additionneur !
Pour créer un additionneur complet avec cette méthode, il faut ajouter un circuit qui calcule la retenue sortante à partir des bits P et G. La retenue finale vaut 1 soit quand la retenue est générée, soit quand la retenue d'entrée vaut 1 et qu'elle est propagée. La traduction en équation logique; puis en circuits, donne un circuit strictement identique à celui basé sur deux demi-additionneurs... Vous remarquerez que les signaux P et G sont calculés par le premier demi-additionneur.
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Une méthode alternative utilise un multiplexeur pour la retenue. L'idée est que si la retenue est propagée, alors il suffit de recopier la retenue entrante sur la sortie de retenue. Par contre, si elle n'est pas propagée, la retenue sortante est calculée par un circuit, en l'occurrence celui qui dit si une retenue à été générée ou non. Le choix entre les deux se fait avec un multiplexeur, commandé par le bit P.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est celui-ci :
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Le circuit semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit de calcul des retenues est lui-même composé de deux circuits séparés. Le premier génère les signaux de propagation et génération de retenue, avec une couche d'additionneurs P/G. Le second circuit détermine chaque retenue à partir de ces singuax P et G. Le tout donne ceci :
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui calcule les retenues à partir des signaux P et G. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue et que la retenue entrante est à 1 ;
* à zéro sinon.
Ainsi, l'addition des deux bits de rangs i va produire une retenue <math>C_i</math>, qui est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
hlqwxmozvicub31fuy364ae8cvd5hbz
768306
768305
2026-06-22T18:54:56Z
Mewtow
31375
/* Les circuits pour additionner 2 ou 3 bits */
768306
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===Le calcul de la retenue sortante à partir de la retenue entrante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Une méthode alternative utilise un multiplexeur pour la retenue. L'idée est que si la retenue est propagée, alors il suffit de recopier la retenue entrante sur la sortie de retenue. Par contre, si elle n'est pas propagée, la retenue sortante est calculée par un circuit, en l'occurrence celui qui dit si une retenue à été générée ou non. Le choix entre les deux se fait avec un multiplexeur, commandé par le bit P.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est celui-ci :
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Le circuit semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit de calcul des retenues est lui-même composé de deux circuits séparés. Le premier génère les signaux de propagation et génération de retenue, avec une couche d'additionneurs P/G. Le second circuit détermine chaque retenue à partir de ces singuax P et G. Le tout donne ceci :
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui calcule les retenues à partir des signaux P et G. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue et que la retenue entrante est à 1 ;
* à zéro sinon.
Ainsi, l'addition des deux bits de rangs i va produire une retenue <math>C_i</math>, qui est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
giqo9z7lg98rilnh17au3y9ibnrfo7w
768307
768306
2026-06-22T18:56:54Z
Mewtow
31375
/* Le calcul de la retenue sortante à partir de la retenue entrante */
768307
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===Le calcul de la retenue sortante à partir de la retenue entrante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit de calcul des retenues est lui-même composé de deux circuits séparés. Le premier génère les signaux de propagation et génération de retenue, avec une couche d'additionneurs P/G. Le second circuit détermine chaque retenue à partir de ces singuax P et G. Le tout donne ceci :
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui calcule les retenues à partir des signaux P et G. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue et que la retenue entrante est à 1 ;
* à zéro sinon.
Ainsi, l'addition des deux bits de rangs i va produire une retenue <math>C_i</math>, qui est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
j9nyq0u61zq7zy3emrbvkd68l1wnx7x
768308
768307
2026-06-22T18:57:16Z
Mewtow
31375
/* Le calcul de la retenue sortante à partir de la retenue entrante */
768308
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le circuit de calcul des retenues est lui-même composé de deux circuits séparés. Le premier génère les signaux de propagation et génération de retenue, avec une couche d'additionneurs P/G. Le second circuit détermine chaque retenue à partir de ces singuax P et G. Le tout donne ceci :
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui calcule les retenues à partir des signaux P et G. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue et que la retenue entrante est à 1 ;
* à zéro sinon.
Ainsi, l'addition des deux bits de rangs i va produire une retenue <math>C_i</math>, qui est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
ijpbizq7ok5gpn8pmnqud52muvlbcgd
768309
768308
2026-06-22T19:00:36Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768309
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Il ne nous reste plus qu'à voir comment fabriquer le circuit qui calcule les retenues à partir des signaux P et G. Pour cela, il faut remarquer que la retenue est égale :
* à 1 si l'addition des deux bits génère une retenue ;
* à 1 si l'addition des deux bits propage une retenue et que la retenue entrante est à 1 ;
* à zéro sinon.
Ainsi, l'addition des deux bits de rangs i va produire une retenue <math>C_i</math>, qui est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
nqhv16evtb31pkw9k0xukv5r5oil3qo
768313
768309
2026-06-22T19:10:49Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768313
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Les additionneurs à anticipation de retenue générent des signaux ''propagate'' et ''generate'' pour un bit, sous-entedu 1 bit par opérande. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour un bit, mais aussi pour des groupes de 2, 3, 4, ..., N bits. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
lnbvvouqeecumlmtn5wryxw90xh1dji
768314
768313
2026-06-22T19:13:42Z
Mewtow
31375
/* L'additionneur à calcul parallèle de préfixes */
768314
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale.
Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
mtpmgqzvupdxxeos29pls9t4xj88zip
768315
768314
2026-06-22T19:29:13Z
Mewtow
31375
/* L'addition non signée */
768315
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué. On peut même simplifier le tout en fusionnant les deux couches d'additionneurs.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale. Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
blzycvh3xo3umneg3vxee0g6ffi1lpw
768316
768315
2026-06-22T19:38:09Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768316
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Une présentation équivalente utilise des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
{|
|[[File:FulladderPG.png|centre|vignette|upright=1.5|Additionneur complet avec deux sorties P et G.]]
|[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
|}
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale. Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
3umqz1x0t94l8zm34j8n008d8cfhh6r
768317
768316
2026-06-22T19:39:17Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768317
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Une présentation équivalente utilise des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale. Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
lvu6ee18h8g0urruxvvow7kfjou60sc
768318
768317
2026-06-22T19:40:59Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768318
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
[[File:4bitKoggeStone.svg|vignette|upright=1.5|Additionneur de Kogge-Stone pour 4 bits.]]
L'additionneur Kogge-Stone est illustré ci-contre. Il est composé de plusieurs couches de portes logiques. La toute première calcule les signaux P et G pour chaque colonne, comme le ferait un additionneur à anticipation de retenue. Il s'agit de la couche en rouge dans le schéma ci-dessous. Les circuits en jaune combinent ces signaux de manière à calculer les signaux P et G pour plusieurs colonnes. En vert, les circuits calculent la retenue finale. Voici le circuit pour 8 bits :
[[File:Kogge-stone-8-bit.png|centre|vignette|upright=2|Additionneur de Kogge-Stone pour 8 bits.]]
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
mwroy1pmyfv75b2isxnqe3h6n3sykns
768319
768318
2026-06-22T19:45:17Z
Mewtow
31375
/* L'additionneur à calcul parallèle de préfixes */
768319
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
rm2fmpujil1brp2q3q425bspq7656de
768320
768319
2026-06-22T19:52:56Z
Mewtow
31375
/* La propagation et la génération de la retenue sortante */
768320
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Ces additionneurs sont plus rapides que les additionneurs à propagation de retenue. Ceci dit, utiliser un additionneur à anticipation de retenue sur des nombres très grands (16/32bits) utiliserait trop de portes logiques. Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
8taop4u1lz2gwheaa57ev0m0ll0czsj
768321
768320
2026-06-22T20:01:35Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768321
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances.
Pour éviter tout problème, nos additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
eqqvqm8xqpf1s3446x76mdty70nor8l
768322
768321
2026-06-22T20:05:33Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768322
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Il existe plusieurs manière d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
k1tos3b4ka4va4w3kpqkhfyc6s6bnfb
768323
768322
2026-06-22T20:05:56Z
Mewtow
31375
/* L'additionneur à sélection de retenue */
768323
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Il existe plusieurs manière d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue multi-niveau===
Les additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
odycm5hj7crnek95yq5gfep7hzh7yiq
768324
768323
2026-06-22T20:06:16Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue multi-niveau */
768324
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Il existe plusieurs manière d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Les additionneurs à anticipation de retenue multi-niveau====
Les additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
fm0z113kye3ne4qofx5neydifns6icb
768325
768324
2026-06-22T20:07:20Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue multi-niveau */
768325
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Il existe plusieurs manière d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Les additionneurs à anticipation de retenue multi-niveau====
Les additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse. Il est aussi possible de créer des additionneurs à anticipation de retenue comme suit. Chaque additionneur est utilisé comme bloc pour l'additionneur suivant.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
pjtnxib8sh65jjwbe1g36yj7lv8jipk
768326
768325
2026-06-22T20:09:13Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768326
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Il existe plusieurs manière d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Les additionneurs à anticipation de retenue multi-niveau====
Les additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse. Il est aussi possible de créer des additionneurs à anticipation de retenue comme suit. Chaque additionneur est utilisé comme bloc pour l'additionneur suivant.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
5qjmeky7za31o87183gel7p3hyaa8pl
768327
768326
2026-06-22T20:12:14Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768327
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Les additionneurs à anticipation de retenue multi-niveau====
Les additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse. Il est aussi possible de créer des additionneurs à anticipation de retenue comme suit. Chaque additionneur est utilisé comme bloc pour l'additionneur suivant.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
a4ur7h4blh6t34kbhbkjgisrsq3ar1x
768328
768327
2026-06-22T20:16:19Z
Mewtow
31375
/* La propagation et la génération de la retenue sortante */
768328
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Les additionneurs à anticipation de retenue multi-niveau====
Les additionneurs à anticipation de retenue sont souvent découpés en blocs, avec soit une anticipation de retenue entre les blocs et une propagation de retenue dans les blocs, soit l'inverse. Il est aussi possible de créer des additionneurs à anticipation de retenue comme suit. Chaque additionneur est utilisé comme bloc pour l'additionneur suivant.
[[File:4-bit carry lookahead adder.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
00uemfc4cosc8c4g749qiszb2cesoe2
768329
768328
2026-06-22T20:23:51Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue multi-niveau */
768329
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante.
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
nd4ujz4pwl15r3n9lxgkq071w3brlg0
768330
768329
2026-06-22T20:24:38Z
Mewtow
31375
/* Les accélérations de la propagation de retenue */
768330
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante.
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
pejz7196r0rz1gai3wlhbg0rr3f6jc8
768331
768330
2026-06-22T20:26:09Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue multi-niveau */
768331
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les accélérations de la propagation de retenue===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
3re99vfgsynvzhtd87ho3kx8v3xf1yj
768332
768331
2026-06-22T20:26:31Z
Mewtow
31375
/* Les accélérations de la propagation de retenue */
768332
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir quelques additionneurs qui visent à accélérer la propagation de la retenue, mais en gardant la base de l'additionneur de propagation de retenue. Avant de poursuivre, partons du principe que l'additionneur est conçu en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat codé sur 4/5 bits, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
5feqgey6n9xzkj7xycbvbqsjkzl9z8u
768333
768332
2026-06-22T20:26:57Z
Mewtow
31375
/* Les additionneurs obtenus en combinant plusieurs additionneurs */
768333
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
3qosk96p0ckfs28ayh77raprzlavvkm
768334
768333
2026-06-22T20:35:39Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue multi-niveau */
768334
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Le calcul parallèle de la retenue====
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Un optimisation assez évident est de calculer la retenue sortante en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
3g0yj25hr2a61gmf4b0tz1e9t7750t1
768335
768334
2026-06-22T20:43:51Z
Mewtow
31375
/* Le calcul parallèle de la retenue */
768335
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Le calcul parallèle de la retenue====
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée serait d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Il y a plusieurs manières de combiner des additionneurs de ce type, mais la plus simple propage les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, pour concevoir un additionneur 16 bits. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'idée est que l'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante. La plus simple consiste à établir la table de vérité de l'entrée de retenue et d'utiliser les techniques du chapitre sur les circuits combinatoires. Cela marche si les blocs sont de petite taille, mais elle devient difficile si le bloc a des opérandes de 2/3 bits ou plus. Mais des techniques alternatives existent.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
pfdbfq70pb6s4pfpqtvqnc1fzd8605f
768336
768335
2026-06-22T20:44:31Z
Mewtow
31375
/* Le calcul parallèle de la retenue */
768336
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Le calcul parallèle de la retenue====
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée serait d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Il y a plusieurs manières de combiner des additionneurs de ce type, mais la plus simple propage les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, pour concevoir un additionneur 16 bits. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'idée est que l'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
jkvanmmvr0jaulgnwlscrxqjofd53fo
768337
768336
2026-06-22T20:44:45Z
Mewtow
31375
/* Le calcul parallèle de la retenue */
768337
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Le calcul parallèle de la retenue====
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée serait d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Il y a plusieurs manières de combiner des additionneurs de ce type, mais la plus simple propage les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, pour concevoir un additionneur 16 bits. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est intéressant de voir comment fonctionne ce circuit. Aussi, voici son implémentation. Le circuit est décomposé en trois sections. Une première couche de demi-additionneurs, le circuit de calcul de la retenue sortante, le reste du circuit qui calcule l'addition en propageant les retenues. Le circuit de calcul de la retenue sortante prend les résultats des demi-additionneurs, et les utilise pour calculer la retenue sortante. C'est là une constante de tous les circuits qui vont suivre.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
Le point important à comprendre est que les demi-additionneurs génèrent les signaux P et G, qui disent si l'additionneur propage ou génère une retenue. Ces signaux sont alors combinés pour déterminer la retenue sortante. La méthode de combinaison des signaux P et G dépend fortement de l'additionneur utilisé. La méthode utilisée sur le 4008 utilise à la fois les signaux P et G, ce qui fait que c'est un hybride entre un additionneur à propagation de retenue, et un additionneur à anticipation de retenue qui sera vu dans la suite du chapitre. Mais il existe des techniques alternatives pour calculer la retenue sortante.
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
1jr6juh3097nrh0q8y1fp7acelmb8n7
768338
768337
2026-06-22T20:46:51Z
Mewtow
31375
/* Le calcul parallèle de la retenue */
768338
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée. Il fournit en sortie un résultat, mais aussi une retenue sortante.
Dans un bloc, la retenue sortante est plus ou moins calculée à part du résultat. L'enjeu est de calculer la retenue sortante d'un bloc rapidement, plus rapidement qu'un additionneur à propagation de retenue. Le calcul du résultat n'a pas besoin d'être accéléré, on garde des additionneurs à propagation de retenue. En enchaînant plusieurs blocs les uns à la suite des autres, la retenue sortante d'un bloc est connectée sur l'entrée de retenue du bloc suivant, la retenue est propagée d'un bloc au suivant.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
====Le calcul parallèle de la retenue====
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée serait d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Il y a plusieurs manières de combiner des additionneurs de ce type, mais la plus simple propage les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, pour concevoir un additionneur 16 bits. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
1nu2io2coax6klovl9hchtxsthylwjo
768339
768338
2026-06-22T20:49:38Z
Mewtow
31375
/* Les additionneurs obtenus en combinant plusieurs additionneurs */
768339
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée serait d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
a9ky655b9r8t6f7nhiwavy8mahutw2h
768340
768339
2026-06-22T20:50:26Z
Mewtow
31375
/* Le calcul parallèle de la retenue */
768340
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
gox9a3ol9ud98cjzfqoyq96kwhoqwnz
768341
768340
2026-06-22T20:53:04Z
Mewtow
31375
/* Le calcul parallèle de la retenue */
768341
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
===L'additionneur à calcul parallèle de préfixes===
Les '''additionneurs à calcul parallèle de préfixes''' sont des additionneurs à anticipation de retenue améliorés pour gagner en performances. Sans optimisation, les additionneurs à anticipation de retenue génèrent des signaux ''propagate'' et ''generate'' pour chaque colonne. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non.
En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération. De plus, les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
8wp8w27i8doqggo5fz00gwlhy7wdi29
768342
768341
2026-06-22T20:59:30Z
Mewtow
31375
/* L'additionneur à calcul parallèle de préfixes */
768342
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''.
L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 7'', qui précise si la retenue de la seconde colonne est propagée jusqu'à la 7ème colonne ou non. Un autre exemple est un signal de génération qui indique si les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Les signaux pour un intervalle peuvent se calculer en combinant les signaux pour des intervalles plus restreints. Par exemple, pour calculer P pour les colonnes 0 à 10 peuvent se calculer à partir des deux signaux P des colonnes 0-4 et 5-10.
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
ro8ld30qutzvwze8eskpjtodmyrhqm5
768343
768342
2026-06-22T21:03:19Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768343
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Néanmoins, il y a plusieurs manières pour subdiviser les intervalles en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride. Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques.
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
3ed2heht62q4wiyb5dcbnavktod3upt
768344
768343
2026-06-22T21:08:36Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768344
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Néanmoins, il y a plusieurs manières pour subdiviser les colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride.
Voici ce que cela donne pour l'additionneur de Kogge-Stone, sur 4 bits. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.svg|centre|vignette|upright=2|Additionneur Kogge-Stone de 4 bits.]]
Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques. L'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits. jugez plutôt, avec les schémas suivants. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
2rbisrjp5rwgxl4m60gwi967kwei31m
768345
768344
2026-06-22T21:15:51Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768345
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Néanmoins, il y a plusieurs manières pour subdiviser les colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différent, comme l'additionneur de Ladner-Fisher, l'additionneur de Brent-Kung, l'additionneur de Kogge-Stone, ou tout design hybride.
Voici ce que cela donne pour l''''additionneur de Kogge-Stone''', sur 4 bits. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
Ne vous affolez pas, le circuit est assez simple à comprendre. Prenons la quatrième retenue, celle tout à gauche. L'idée est de la calculer à partir de deux groupes de 2 bits chacun : un pour les deux bits de poids fort, l'autre pour les deux bits de poids faible. Ensuite, pour chaque groupe, on détermine la retenue avec anticipation de retenue sur ces deux bits. L'avantage est que pour les deux bits de poids faible, ces signaux ont déjà été calculés pour le calcul de la seconde retenue. Pour la troisième retenue, on ne profite d'aucune redondance.
[[File:4bitKoggeStone.svg|centre|vignette|upright=2|Additionneur Kogge-Stone de 4 bits.]]
Ils ont des caractéristiques différentes. L'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques. L'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits. jugez plutôt, avec les schémas suivants. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
pddl8nrvn8xijqm4b8y5021lozisxwc
768346
768345
2026-06-22T21:17:01Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768346
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Néanmoins, il y a plusieurs manières pour subdiviser les colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Kogge-Stone''', sur 4 bits. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
Ne vous affolez pas, le circuit est assez simple à comprendre. Prenons la quatrième retenue, celle tout à gauche. L'idée est de la calculer à partir de deux groupes de 2 bits chacun : un pour les deux bits de poids fort, l'autre pour les deux bits de poids faible. Ensuite, pour chaque groupe, on détermine la retenue avec anticipation de retenue sur ces deux bits. L'avantage est que pour les deux bits de poids faible, ces signaux ont déjà été calculés pour le calcul de la seconde retenue. Pour la troisième retenue, on ne profite d'aucune redondance.
[[File:4bitKoggeStone.svg|centre|vignette|upright=2|Additionneur Kogge-Stone de 4 bits.]]
L'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits. En comparaison, l'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques. Mais jugez plutôt, avec les schémas suivants. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
ju6mjjirqwa588t706gwm9uul3xxfkw
768347
768346
2026-06-22T21:26:50Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768347
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Néanmoins, il y a plusieurs manières pour subdiviser les colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Kogge-Stone''', sur 4 bits. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
Ne vous affolez pas, le circuit est assez simple à comprendre. Prenons la quatrième retenue, celle tout à gauche. L'idée est de la calculer à partir de deux groupes de 2 bits chacun : un pour les deux bits de poids fort, l'autre pour les deux bits de poids faible. Ensuite, pour chaque groupe, on détermine la retenue avec anticipation de retenue sur ces deux bits. L'avantage est que pour les deux bits de poids faible, ces signaux ont déjà été calculés pour le calcul de la seconde retenue. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. Là encore, on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur Kogge-Stone de 4 bits.]]
L'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits. En comparaison, l'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques. Mais jugez plutôt, avec les schémas suivants. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
8xj16ph5g9instw18xfm766jwsysnyi
768348
768347
2026-06-22T21:27:31Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768348
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Néanmoins, il y a plusieurs manières pour subdiviser les colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
Ne vous affolez pas, le circuit est assez simple à comprendre. Prenons la quatrième retenue, celle tout à gauche. L'idée est de la calculer à partir de deux groupes de 2 bits chacun : un pour les deux bits de poids fort, l'autre pour les deux bits de poids faible. Ensuite, pour chaque groupe, on détermine la retenue avec anticipation de retenue sur ces deux bits. L'avantage est que pour les deux bits de poids faible, ces signaux ont déjà été calculés pour le calcul de la seconde retenue. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. Là encore, on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur Kogge-Stone de 4 bits.]]
L'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits. En comparaison, l'additionneur de Brent-Kung est le plus lent de tous les additionneurs cités, mais c'est celui qui utilise le moins de portes logiques. Les autres ont des performances un peu plus variables, mais utilisent plus de portes logiques. Mais jugez plutôt, avec les schémas suivants. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
{|
|[[File:Additionneur de Kogge-Stone.jpg|vignette|Additionneur de Kogge-Stone.]]
|[[File:Additionneur de Ladner-Fisher.jpg|vignette|Additionneur de Ladner-Fisher.]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
jqmwvg4ttp89n23dzu5qd8klaydn6c7
768349
768348
2026-06-22T21:29:22Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768349
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Néanmoins, il y a plusieurs manières pour subdiviser les colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
Ne vous affolez pas, le circuit est assez simple à comprendre. Prenons la quatrième retenue, celle tout à gauche. L'idée est de la calculer à partir de deux groupes de 2 bits chacun : un pour les deux bits de poids fort, l'autre pour les deux bits de poids faible. Ensuite, pour chaque groupe, on détermine la retenue avec anticipation de retenue sur ces deux bits. L'avantage est que pour les deux bits de poids faible, ces signaux ont déjà été calculés pour le calcul de la seconde retenue. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. Là encore, on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance. L'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Mais jugez plutôt, avec les schémas suivants. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
j3p61u5wirmy51fm01wa6gtvz7kh254
768350
768349
2026-06-22T21:31:19Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768350
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Néanmoins, il y a plusieurs manières pour subdiviser les colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
Ne vous affolez pas, le circuit est assez simple à comprendre. Prenons la quatrième retenue, celle tout à gauche. L'idée est de la calculer à partir de deux groupes de 2 bits chacun : un pour les deux bits de poids fort, l'autre pour les deux bits de poids faible. Ensuite, pour chaque groupe, on détermine la retenue avec anticipation de retenue sur ces deux bits. L'avantage est que pour les deux bits de poids faible, ces signaux ont déjà été calculés pour le calcul de la seconde retenue. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. Là encore, on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance. Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui est fait différemment, et ne profite pas de la redondance avec la seconde colonne.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
31enyj3bvc1zbbgvdzrcux60qoh2gxu
768351
768350
2026-06-22T21:31:57Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768351
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Néanmoins, il y a plusieurs manières pour subdiviser les colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. Prenons la quatrième retenue, celle tout à gauche. L'idée est de la calculer à partir de deux groupes de 2 bits chacun : un pour les deux bits de poids fort, l'autre pour les deux bits de poids faible. Ensuite, pour chaque groupe, on détermine la retenue avec anticipation de retenue sur ces deux bits. L'avantage est que pour les deux bits de poids faible, ces signaux ont déjà été calculés pour le calcul de la seconde retenue. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. Là encore, on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
ebjbh3phrnxws8b9qimutxaipk5wk3q
768352
768351
2026-06-22T21:35:14Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768352
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux. Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. Prenons la quatrième retenue, celle tout à gauche. L'idée est de la calculer à partir de deux groupes de 2 bits chacun : un pour les deux bits de poids fort, l'autre pour les deux bits de poids faible. Ensuite, pour chaque groupe, on détermine la retenue avec anticipation de retenue sur ces deux bits. L'avantage est que pour les deux bits de poids faible, ces signaux ont déjà été calculés pour le calcul de la seconde retenue. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. Là encore, on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
gq15t20472wrz89o0olzti2k3o96kwm
768353
768352
2026-06-22T21:42:09Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768353
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. Prenons la quatrième retenue, celle tout à gauche. L'idée est de la calculer à partir de deux groupes de 2 bits chacun : un pour les deux bits de poids fort, l'autre pour les deux bits de poids faible. Ensuite, pour chaque groupe, on détermine la retenue avec anticipation de retenue sur ces deux bits. L'avantage est que pour les deux bits de poids faible, ces signaux ont déjà été calculés pour le calcul de la seconde retenue. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. Là encore, on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
kdiba52e9lbxj7trlosnv3tps4tx14v
768354
768353
2026-06-22T21:45:39Z
Mewtow
31375
/* Les additionneurs à calcul parallèle de préfixe */
768354
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération de la retenue sortante===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
8621r3wn7zqyksss72hcc2dn2ayp2c3
768358
768354
2026-06-22T23:55:28Z
Mewtow
31375
/* La propagation et la génération de la retenue sortante */
768358
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs complets qui rajoutent deux sorties P et G, qui indiquent si l'addition propage ou génère une retenue. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
opyy27vp0mqxfeiqm52vum46upr2k4i
768359
768358
2026-06-22T23:57:25Z
Mewtow
31375
/* La propagation et la génération des retenues */
768359
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels''', ou additionneurs P/G. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, mais pas de portes logiques. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
{|
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
|[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
|}
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
6f44owv633ywzvyzgdaro06nm1axqqw
768360
768359
2026-06-23T00:00:28Z
Mewtow
31375
/* La propagation et la génération des retenues */
768360
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
====L'additionneur à sélection de retenue====
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
671kp1bxv78nrovxvchzxcz9nv1avgk
768361
768360
2026-06-23T00:01:10Z
Mewtow
31375
/* L'additionneur à sélection de retenue */
768361
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs obtenus en combinant plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
90ji6o4lta6y1i4uewyv1o8nee9zexg
768362
768361
2026-06-23T00:01:41Z
Mewtow
31375
/* Les additionneurs obtenus en combinant plusieurs additionneurs */
768362
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
tpcriot5nnwi2qmjh420m1qkrkxhw78
768363
768362
2026-06-23T00:01:55Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768363
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, tandis qu'il sera aussi long qu'avec un additionneur à propagation de retenue avec d'autres. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
L'additionneur à saut de retenue est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
4frx4rr3z1k9jlm17em0pefazjc04cm
768364
768363
2026-06-23T00:04:59Z
Mewtow
31375
/* L'additionneur à saut de retenue */
768364
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations : calculer les retenues en parallèle, éliminer certaines opérations inutiles quand c'est possible, accélérer le calcul de la retenue avec des techniques d'anticipation de retenue, etc. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité.
La plupart des processeurs 8 et 16 bits utilisaient une optimisation appelée la ''Manchester carry chain'', qu'on ne peut pas encore expliquer à ce stade du cours. Mais pour simplifier, c'était des additionneurs à propagation de retenue assez classique, si ce n'est que les additionneurs complets étaient optimisés de manière à calculer la retenue beaucoup plus vite. De nombreux processeurs très connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Nous allons les voir dans les sections suivantes.
==Les optimisations de l'additionneur ''ripple carry''==
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types. Les premières accélèrent la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante.
Une autre classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
4uvn00bgl8su89qqrlgb7nglod1jy83
768365
768364
2026-06-23T00:06:15Z
Mewtow
31375
/* L'addition non signée */
768365
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
==Les optimisations de l'additionneur ''ripple carry''==
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types. Les premières accélèrent la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante.
Une autre classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
0rmqvdhcifp4fin8twbip9b2iox4pt9
768366
768365
2026-06-23T00:07:35Z
Mewtow
31375
/* Les optimisations de l'additionneur ripple carry */
768366
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
==Les optimisations de l'additionneur ''ripple carry''==
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
cje3hawsj10urtugfi9gjwgt0531i01
768367
768366
2026-06-23T00:07:51Z
Mewtow
31375
/* Les optimisations de l'additionneur ripple carry */
768367
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L'additionneur à propagation de retenue pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
===Les optimisations de l'additionneur ''ripple carry''===
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
1d4ht58cgknqtxfi481x8ihwy7nub83
768368
768367
2026-06-23T00:08:56Z
Mewtow
31375
/* L'additionneur à propagation de retenue */
768368
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L''''additionneur à propagation de retenue''' est le plus simple de tous. Il est aussi appelé l'additionneur ''ripple carry'', c'est son nom anglais. J'utiliserais occasionnellement le nom anglais dans ce qui suit, car celui-ci est plus court.
L''additionneur ''ripple carry'' pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
===Les optimisations de l'additionneur ''ripple carry''===
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
1ohvjyagnlmz9u27y4kbtuxxhl96aba
768369
768368
2026-06-23T00:09:05Z
Mewtow
31375
/* L'additionneur à propagation de retenue */
768369
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L''''additionneur à propagation de retenue''' est le plus simple de tous. Il est aussi appelé l'additionneur ''ripple carry'', c'est son nom anglais. J'utiliserais occasionnellement le nom anglais dans ce qui suit, car celui-ci est plus court.
L'additionneur ''ripple carry'' pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
===Les optimisations de l'additionneur ''ripple carry''===
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est composé de blocs qui additionnent 4/5 bits. Il peut, sous certaines conditions, sauter complètement la propagation de la retenue dans le bloc. L'idée est de calculer si un bloc génère une retenue sortante, ou si la retenue entrante est simplement propagée. Dans le second cas, le bloc ne fait que recopier la retenue entrante sur la sortie de retenue. La propagation de retenue entre blocs est alors skippée (mais elle a quand même lieu). Si une retenue est générée dans le bloc, on envoie cette retenue sur la retenue sortante. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
atvl51gnfp9mlycssh23w1tzokeh2bc
768370
768369
2026-06-23T00:19:02Z
Mewtow
31375
/* L'additionneur à saut de retenue */
768370
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L''''additionneur à propagation de retenue''' est le plus simple de tous. Il est aussi appelé l'additionneur ''ripple carry'', c'est son nom anglais. J'utiliserais occasionnellement le nom anglais dans ce qui suit, car celui-ci est plus court.
L'additionneur ''ripple carry'' pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
===Les optimisations de l'additionneur ''ripple carry''===
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est composé de blocs qui additionnent 4/5 bits, rarement plus. LA taille d'un bloc varie d'un additionneur à l'autre, elle peut même varier dans l'additionneur, mais nous allons prendre un exemple où les blocs font 4 bits.
L'idée est de détecter précocement si la retenue entrante est propagée à travers tout le bloc. Si la retenue est propagée dans tous le bloc, on peut simplement prendre la retenue entrante et la propager sur la retenue sortante. La retenue saute le bloc entier. Dans le cas contraire, on n'a pas le choix : on doit calculer la retenue sortante normalement, en faisant l'addition. Le choix entre les deux est le fait d'un multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Toute la difficulté est de savoir comment commander le multiplexeur. Pour cela, on doit savoir si le circuit propage une retenue ou non. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Les additionneurs complets doivent donc fournir le résultat, mais aussi indiquer s'ils propagent la retenue d'entrée ou non. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
he3426cpl0a5vgpmcv357hrts7apvs8
768371
768370
2026-06-23T00:22:54Z
Mewtow
31375
/* L'additionneur à saut de retenue */
768371
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L''''additionneur à propagation de retenue''' est le plus simple de tous. Il est aussi appelé l'additionneur ''ripple carry'', c'est son nom anglais. J'utiliserais occasionnellement le nom anglais dans ce qui suit, car celui-ci est plus court.
L'additionneur ''ripple carry'' pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
===Les optimisations de l'additionneur ''ripple carry''===
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance.
====L'additionneur à saut de retenue====
L''''additionneur à saut de retenue''' (''carry-skip adder'') est composé de blocs qui additionnent 4/5 bits, rarement plus. LA taille d'un bloc varie d'un additionneur à l'autre, elle peut même varier dans l'additionneur, mais nous allons prendre un exemple où les blocs font 4 bits.
L'idée est de détecter précocement si la retenue entrante est propagée à travers tout le bloc. Si la retenue est propagée dans tous le bloc, on peut simplement prendre la retenue entrante et la propager sur la retenue sortante. La retenue saute le bloc entier. Dans le cas contraire, on n'a pas le choix : on doit calculer la retenue sortante normalement, en faisant l'addition. Le choix entre les deux est le fait d'un multiplexeur. Toute la difficulté est de savoir comment commander le multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Pour savoir si une retenue est propagée dans un bloc entier, il y a un moyen très simple. Mais il demande d'utiliser des additionneurs complets de type P/G, à savoir qu'ils fournissent une sortie P indiquant que l'additionneur propage la retenue. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Tous les additionneurs complets doivent avoir leur sortie P à 1. Un simple ET logique suffit à déterminer si c'est le cas. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
Voici ce que ca donne pour un blmoc de 4 bits :
[[File:CSAdder4Bit.svg|centre|vignette|upright=1.5|Additionneur ''carry skip'' : bloc de 4 bits.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
1ghemsan8s24pzprbm61ywwwgasoo39
768372
768371
2026-06-23T01:40:40Z
Mewtow
31375
/* Les optimisations de l'additionneur ripple carry */
768372
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L''''additionneur à propagation de retenue''' est le plus simple de tous. Il est aussi appelé l'additionneur ''ripple carry'', c'est son nom anglais. J'utiliserais occasionnellement le nom anglais dans ce qui suit, car celui-ci est plus court.
L'additionneur ''ripple carry'' pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
===L'additionneur à saut de retenue===
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance. L'optimisation en question donne l''''additionneur à saut de retenue''' (''carry-skip adder'').
Il est composé de blocs qui additionnent 4/5 bits, rarement plus. LA taille d'un bloc varie d'un additionneur à l'autre, elle peut même varier dans l'additionneur, mais nous allons prendre un exemple où les blocs font 4 bits. L'idée est de détecter précocement si la retenue entrante est propagée à travers tout le bloc. Si la retenue est propagée dans tous le bloc, on peut simplement prendre la retenue entrante et la propager sur la retenue sortante. La retenue saute le bloc entier. Dans le cas contraire, on n'a pas le choix : on doit calculer la retenue sortante normalement, en faisant l'addition. Le choix entre les deux est le fait d'un multiplexeur. Toute la difficulté est de savoir comment commander le multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Pour savoir si une retenue est propagée dans un bloc entier, il y a un moyen très simple. Mais il demande d'utiliser des additionneurs complets de type P/G, à savoir qu'ils fournissent une sortie P indiquant que l'additionneur propage la retenue. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Tous les additionneurs complets doivent avoir leur sortie P à 1. Un simple ET logique suffit à déterminer si c'est le cas. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
Voici ce que ca donne pour un blmoc de 4 bits :
[[File:CSAdder4Bit.svg|centre|vignette|upright=1.5|Additionneur ''carry skip'' : bloc de 4 bits.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
luc28nqtnyyvqs6re96au0phsidu6e8
768373
768372
2026-06-23T01:41:24Z
Mewtow
31375
/* L'additionneur à sélection de retenue */
768373
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L''''additionneur à propagation de retenue''' est le plus simple de tous. Il est aussi appelé l'additionneur ''ripple carry'', c'est son nom anglais. J'utiliserais occasionnellement le nom anglais dans ce qui suit, car celui-ci est plus court.
L'additionneur ''ripple carry'' pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
===L'additionneur à saut de retenue===
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance. L'optimisation en question donne l''''additionneur à saut de retenue''' (''carry-skip adder'').
Il est composé de blocs qui additionnent 4/5 bits, rarement plus. LA taille d'un bloc varie d'un additionneur à l'autre, elle peut même varier dans l'additionneur, mais nous allons prendre un exemple où les blocs font 4 bits. L'idée est de détecter précocement si la retenue entrante est propagée à travers tout le bloc. Si la retenue est propagée dans tous le bloc, on peut simplement prendre la retenue entrante et la propager sur la retenue sortante. La retenue saute le bloc entier. Dans le cas contraire, on n'a pas le choix : on doit calculer la retenue sortante normalement, en faisant l'addition. Le choix entre les deux est le fait d'un multiplexeur. Toute la difficulté est de savoir comment commander le multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Pour savoir si une retenue est propagée dans un bloc entier, il y a un moyen très simple. Mais il demande d'utiliser des additionneurs complets de type P/G, à savoir qu'ils fournissent une sortie P indiquant que l'additionneur propage la retenue. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Tous les additionneurs complets doivent avoir leur sortie P à 1. Un simple ET logique suffit à déterminer si c'est le cas. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
Voici ce que ca donne pour un blmoc de 4 bits :
[[File:CSAdder4Bit.svg|centre|vignette|upright=1.5|Additionneur ''carry skip'' : bloc de 4 bits.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à propagation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1.5|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
2on72s7yjd91sz7lgidq07x1lnkbmuz
768374
768373
2026-06-23T01:42:00Z
Mewtow
31375
/* L'addition non signée */
768374
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L''''additionneur à propagation de retenue''' est le plus simple de tous. Il est aussi appelé l'additionneur ''ripple carry'', c'est son nom anglais. J'utiliserais occasionnellement le nom anglais dans ce qui suit, car celui-ci est plus court.
L'additionneur ''ripple carry'' pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
===L'additionneur à saut de retenue===
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance. L'optimisation en question donne l''''additionneur à saut de retenue''' (''carry-skip adder'').
Il est composé de blocs qui additionnent 4/5 bits, rarement plus. LA taille d'un bloc varie d'un additionneur à l'autre, elle peut même varier dans l'additionneur, mais nous allons prendre un exemple où les blocs font 4 bits. L'idée est de détecter précocement si la retenue entrante est propagée à travers tout le bloc. Si la retenue est propagée dans tous le bloc, on peut simplement prendre la retenue entrante et la propager sur la retenue sortante. La retenue saute le bloc entier. Dans le cas contraire, on n'a pas le choix : on doit calculer la retenue sortante normalement, en faisant l'addition. Le choix entre les deux est le fait d'un multiplexeur. Toute la difficulté est de savoir comment commander le multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Pour savoir si une retenue est propagée dans un bloc entier, il y a un moyen très simple. Mais il demande d'utiliser des additionneurs complets de type P/G, à savoir qu'ils fournissent une sortie P indiquant que l'additionneur propage la retenue. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Tous les additionneurs complets doivent avoir leur sortie P à 1. Un simple ET logique suffit à déterminer si c'est le cas. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
Voici ce que ca donne pour un blmoc de 4 bits :
[[File:CSAdder4Bit.svg|centre|vignette|upright=1.5|Additionneur ''carry skip'' : bloc de 4 bits.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1.5|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs complets où la sortie de retenue a été remplacée par deux sorties P et G. L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à anticipation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
3dxux52xocio43lr9ccc2mpx6kjjrul
768375
768374
2026-06-23T01:43:02Z
Mewtow
31375
/* Les additionneurs à anticipation de retenue */
768375
wikitext
text/x-wiki
Dans ce chapitre, nous allons voir les circuits capables de faire une addition ou une soustraction, ainsi que quelques circuits spécialisés. Précisons cependant que les fabricants de processeurs travaillent d'arrache-pied pour trouver des moyens de rendre ces circuits de calcul plus rapides et plus économes en énergie. Autant vous dire que les circuits que vous allez voir sont vraiment des circuits qui font pâle figure comparé à ce que l'on peut trouver dans un vrai processeur commercial !
==Les circuits pour additionner 2 ou 3 bits==
L'addition se fait en binaire de la même manière qu'en décimal. On additionne les chiffres/bits colonne par colonne, une éventuelle retenue est propagée à la colonne d'à côté. La soustraction fonctionne sur le même principe, sur le même modèle qu'en décimal.
[[File:Binary Addition Demonstration.svg|centre|vignette|Exemple d'addition en binaire.]]
En clair, additionner deux nombres demande d'additionner 2 bits et une retenue sur chaque colonne, et de propager les retenues d'une colonne à l'autre. La propagation des retenues est quelque chose de simple en apparence, mais qui est sujet à des optimisations extraordinairement nombreuses. Aussi, pour simplifier l'exposition, nous allons voir comment gérer une colonne avant de voir comment sont propagées les retenues. En effet, tout additionneur est composé d'additionneurs plus simples, capables d'additionner deux ou trois bits suivant la situation. Ceux-ci gèrent ce qui se passe sur une colonne.
===Le demi-additionneur et l'additionneur complet===
Un additionneur deux bits implémente la table d'addition, qui est très simple en binaire. Jugez plutôt :
* 0 + 0 = 0, retenue = 0 ;
* 0 + 1 = 1, retenue = 0 ;
* 1 + 0 = 1, retenue = 0 ;
* 1 + 1 = 0, retenue = 1.
Un circuit capable d'additionner deux bits est donc simple à construire avec les techniques vues dans les premiers chapitres. On voit immédiatement que la colonne des retenues donne une porte ET, alors que celle du bit de somme est calculé par un XOR. Le circuit obtenu est appelé un '''demi-additionneur'''.
{| class="flexible"
|[[File:1-bit half-adder.svg|class=transparent|centre|Demi-addtionneur.]]
|[[File:Half-adder.svg|centre|class=transparent|Circuit d'un demi-addtionneur.]]
|}
[[File:Full Adder Block.svg|vignette|upright=1|class=transparent|Additionneur complet.]]
Si on effectue une addition en colonne, on doit additionner les deux bits sur la colonne, mais aussi additionner une éventuelle retenue. Il faut donc créer un circuit qui additionne trois bits : deux bits de données, plus une retenue. Il fournit en sortie deux bits : un bit de somme et une retenue sortante. Ce circuit qui additionne trois bits est appelé un '''additionneur complet'''. Voici sa table de vérité :
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|-
||0||0||0|| ||0||0
|-
||0||0||1|| ||0||1
|-
||0||1||0|| ||0||1
|-
||0||1||1|| ||1||0
|-
||1||0||0|| ||0||1
|-
||1||0||1|| ||1||0
|-
||1||1||0|| ||1||0
|-
||1||1||1|| ||1||1
|}
Il est possible d'utiliser un tableau de Karnaugh pour traduire la table de vérité, mais elle donne un résultat légèrement sous-optimal. D'autres méthodes donnent des résultats plus compréhensibles. Nous allons les détailler dans ce qui suit.
La solution plus simple consiste à enchaîner deux demi-additionneurs : un qui additionne les deux bits de données, et un second qui additionne la retenue au résultat. La retenue finale se calcule en combinant les sorties de retenue des deux demi-additionneurs, avec une porte OU. Pour vous en convaincre, établissez la table de vérité de ce circuit, vous verrez que ça marche.
{| class="flexible"
|[[File:Full Adder Modules.svg|class=transparent|Composition d'un additionneur complet. On voit bien que celui-ci est composé de deux demi-additionneurs, en rouge et en bleu, auxquels on a ajouté une porte OU pour calculer la retenue finale.]]
|[[File:Full-adder.svg|300px|class=transparent|Circuit d'un additionneur complet.]]
|}
Le circuit de calcul de la retenue peut être remplacé par une '''porte à majorité''', mais cette possibilité n'est presque jamais utilisée, on lui préfère le circuit à trois portes logiques.
[[File:Additionneur crée avec une porte à majorité.png|centre|vignette|upright=2|Additionneur crée avec une porte à majorité]]
===La propagation et la génération des retenues===
Le fait de combiner les deux retenues avec une porte OU n'est pas ce qu'il y a de plus intuitif. La table de vérité nous dit que ça fonctionne, mais on comprend mal pourquoi. L'explication exacte fait appel aux concepts de propagation, génération et absorption de retenue. L'explication part d'un principe très simple : la retenue sortante dépend de la retenue d'entrée. La relation entre les deux se résume à trois cas, qui dépendent de la valeur des deux bits additionnés, nommés A et B.
* Dans le premier cas, la retenue entrante est égale à la retenue sortante. On dit que la retenue entrante est propagée par l'additionneur.
* Dans le second cas, la retenue est forcée à 0 : la retenue sortante vaut 0, peu importe la valeur de la retenue entrante.
* Dans le troisième cas, la retenue est forcée à 1 : la retenue entrante vaut 1, peu importe la valeur de la retenue entrante.
[[File:Signaux P et G fournis par un demi-additionneur.png|vignette|Signaux P et G fournis par un demi-additionneur]]
Maintenant, imaginez que l'on ait un circuit qui nous dise sur une retenue est propagée ou générée. Il a deux bits de sortie, nommés P et G : P pour ''Propagate'', G pour ''Generate''. Le bit P est à 1 si la retenue entrante est propagée, il est à 0 sinon. Le bit G est à 1 si une retenue est générée, à 0 sinon. Une retenue est considérée comme absorbée si elle n'est pas ni propagée ni générée, pas besoin d'un troisième bit pour gérer ce cas.
Nous n'allons pas voir immédiatement comment construire un tel circuit, laissons la surprise pour plus tard. Pour le moment, créons un circuit qui prend ces deux sorties P et G, et calcule la retenue sortante en fonction. Le circuit en question a trois entrées : la retenue entrante, les deux bits P et G. La retenue sortante vaut 1 soit si une retenue est générée, soit si la retenue entrante est propagée et qu'elle vaut 1. En notant <math>{C_{in}}</math> et <math>{C_{out}}</math> les retenues entrantes et sortante, on a :
: <math>{C_{out}} = G + \left( P . C_{in} \right)</math>
Le circuit est donc composé d'une porte OU et d'une porte ET.
Maintenant, voyons enfin le circuit qui détermine si la retenue est propagée ou générée. Il se trouve que ce circuit n'est autre qu'un demi-additionneur ! Pour vous en rendre compte, regardez la table de vérité d'un additionneur complet, illustrée ci-dessous. Lorsque les deux bits d'opérande sont à 0, la retenue sortante vaut toujours 0. Si ils sont tous deux à 1, alors la retenue sortante vaut 1. S'ils sont différents, alors retenues sortante et entrante sont égales.
{|class="wikitable"
|-
! Opérande 1 !! Opérande 2 !! Retenue entrante !! !! Retenue sortante
|- class="f_rouge"
||0||0||0|| ||0
|- class="f_rouge"
||0||0||1|| ||0
|- class="f_bleu"
||0||1||0|| ||0
|- class="f_bleu"
||0||1||1|| ||1
|- class="f_bleu"
||1||0||0|| ||0
|- class="f_bleu"
||1||0||1|| ||1
|- class="f_vert"
||1||1||0|| ||1
|- class="f_vert"
||1||1||1|| ||1
|}
Le bit P est donc généré par une simple porte XOR. Quant au bit G, il est à 1 si les deux bits d'opérandes sont à 1, ce qui correspond à une porte ET. Il se trouve que ces deux portes forment un demi-additionneur ! En combinant un demi-additionneur avec le circuit de calcul de retenue sortante vu plus haut, on a :
[[File:Additionneur complet avec propagation et génération de retenue.png|class=transparent|centre|vignette|upright=2|Additionneur complet avec propagation et génération de retenue.]]
Il est possible de remplacer le circuit en orange par un multiplexeur, qui choisit entre la retenue générée et la retenue entrante (propagée). Le choix se fait selon la valeur du bit P, qui chosiit entre propager la retenue et la générer.
[[File:Additionneur crée avec un multiplexeur.png|centre|vignette|upright=2|Additionneur crée avec un multiplexeur]]
Le circuit exact est illustré ci-dessous. Il semble utiliser plus de portes logiques que l'additionneur complet précédent. Cependant, nous verrons dans quelques chapitres qu'il est possible d'implémenter un multiplexeur avec seulement 6 transistors, voire moins ! L'implémentation utilise des portes à transmission, mais nous en reparlerons dans le chapitre sur les transistors, quand nous verrons les additionneurs à ''Manchester Carry Chain''. Au passage, une variante de ce circuit a été utilisée dans le processeur processeur 8086 d'Intel, comme on le verra dans le chapitre suivant.
[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
Pour finir, sachez qu'il existe des additionneurs qui fournissent : le bit de résultat, deux sorties P et G qui indiquent si l'addition propage ou génère une retenue. Il ne s'agit pas d'additionneurs complets, car il manque de quoi calculer la retenue sortante. De tels additionneurs seront appelés des '''additionneurs partiels'''. De tels additionneurs sont utilisés dans certains additionneurs pour gagner en performance.
[[File:Partial Full-Adder.svg|centre|vignette|upright=1.5|Circuit d'un additionneur complet avec deux sorties P et G.]]
Enfin, il existe aussi ce que j'ai décidé d'appeler des '''additionneurs P/G''', qui sont des additionneurs complets auxquels on a ajouté deux sorties P et G, en plus de la sortie de retenue. Leur circuit est le même que celui d'un additionneur complet, auquel on a ajouté deux fils. Vu que ces deux sorties sont fournies par le premier demi-additionneur, ajouter ces deux sorties demande d'ajouter des fils, pas de portes logiques. De tels additionneurs sont aussi utilisés dans certains additionneurs pour gagner en performance.
|[[File:FulladderPG.png|centre|vignette|upright=2|Additionneur complet avec deux sorties P et G.]]
===L'additionneur complet basé sur une modification de la retenue sortante===
L'additionneur précédent calcule la retenue sortante à partir de la retenue entrante. L'additionneur que nous allons voir fait quelque chose d'assez différent, et de potentiellement complémentaire : il calcule le 'bit de somme' à partir de la retenue sortante. En effet, le bit de somme est l'inverse de la retenue sortante, sauf dans deux cas : les trois bits d'entrée sont à 0, où ils sont tous à 1. Le bit de somme vaut 0 dans le premier cas, 1 dans le second cas.
{|class="wikitable"
|-
! Retenue entrante !! Opérande 1 !! Opérande 2 !! !! Retenue sortante !! Bit de somme
|- class="f_bleu"
||0||0||0|| ||0||0
|- class="f_vert"
||0||0||1|| ||0||1
|- class="f_vert"
||0||1||0|| ||0||1
|- class="f_vert"
||0||1||1|| ||1||0
|- class="f_vert"
||1||0||0|| ||0||1
|- class="f_vert"
||1||0||1|| ||1||0
|- class="f_vert"
||1||1||0|| ||1||0
|- class="f_rouge"
||1||1||1|| ||1||1
|}
L'implémentation en circuit demande donc trois choses :
* de calculer la retenue sortante et de quoi l'inverser ;
* un circuit qui vérifie si tous les bits opérande valent 0 : une porte NOR ou OU fait l'affaire ;
* un circuit qui vérifie s'ils valent tous 1, à savoir une porte ET.
Ensuite, on combine le résultat des trois circuits précédents pour obtenir le résultat final. La combinaison est le fait du circuit en jaune dans le schéma ci-dessous.
[[File:Full adder basé sur une modification de la retenue.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue]]
Le circuit en jaune est assez simple. Quand la porte ET sort un 1, la sortie doit être forcée à 1. Par contre, quand la porte OU sort un zéro, la sortie doit être forcée à 0. Il suffit donc d'enchainer un circuit de mise à 1 et un circuit de mise à 0. Nous avons vu dans le chapitre sur les opérations de masquage qu'il s'agit respectivement d'une porte OU et d'une porte ET.
[[File:Full adder basé sur une modification de la retenue interne, au complet.png|centre|vignette|upright=2|Full adder basé sur une modification de la retenue interne, au complet]]
Divers processeurs utilisaient des additionneurs complets de ce type : le fameux Z80, l'Intel 4004 et de l'Intel 8008 sont les exemples les plus notables. Pourtant, on pourrait s'étonner qu'un tel circuit ait existé. Il utilise beaucoup de portes logiques, a une profondeur logique supérieure : il n'a rien d'avantageux. Sauf qu'il était utilisé sur d'anciens processeurs, qui utilisaient la technologie dite TTL, différente de la technologie CMOS des transistors modernes. Et avec la technologie TTL, il est possible de fusionner plusieurs portes logiques ET et NOR en une seule porte logique ET/OU/NON ! Un additionneur complet construit ainsi ne prenait que deux portes logiques : une pour le calcul de la retenue sortante, une autre pour le reste du circuit.
==L'addition non signée==
Voyons maintenant un circuit capable d'additionner deux nombres entiers: l''''additionneur'''. Dans la version qu'on va voir, ce circuit manipulera des nombres strictement positifs. L'addition des nombres codés en complètement à deux sera vu dans une section ultérieure.
===L'additionneur série===
Il est possible d'additionner deux nombres bit par bit,colonne par colonne, avec un additionneur complet. Cela demande de coupler un additionneur complet avec plusieurs registres à décalages. Les opérandes sont placées chacune dans un registre à décalage, afin de passer d'un bit au suivant, d'une colonne à la suivante, à chaque cycle. Même chose pour le résultat, qui a sont propre registre à décalage. La retenue de l'addition est stockée dans une bascule de 1 bit, en attente du prochain cycle d'horloge. Un tel additionneur est appelé un '''additionneur série'''.
[[File:Additionneur série.jpg|centre|vignette|upright=2.5|Additionneur série.]]
L'additionneur série a été utilisé sur d'anciens prototypes dans les années 50-60, et quelques ordinateurs commerciaux très rares.
===L'additionneur à propagation de retenue===
L''''additionneur à propagation de retenue''' est le plus simple de tous. Il est aussi appelé l'additionneur ''ripple carry'', c'est son nom anglais. J'utiliserais occasionnellement le nom anglais dans ce qui suit, car celui-ci est plus court.
L'additionneur ''ripple carry'' pose l'addition comme en décimal, en additionnant les bits colonne par colonne avec une éventuelle retenue. Évidemment, on commence par les bits les plus à droite, comme en décimal. Il suffit ainsi de câbler des additionneurs complets les uns à la suite des autres. Notons la présence de la retenue sortante, qui est utilisée pour détecter les débordements d'entier, ainsi que pour d'autres opérations. Le bit de retenue final est souvent stocké dans un registre spécial du processeur (généralement appelé ''carry flag'').
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Notez aussi, sur le schéma précédent, la présence de l’entrée de retenue <math>\text{R}_\text{Entrée}</math> sur l'additionneur. L'additionneur le plus à droite est bien un additionneur complet, et non un demi-additionneur, ce qui fait qui l'additionneur a une entrée de retenue. Tous les additionneurs ont une entrée de retenue de ce type. Elle est très utile pour l'implémentation de certaines opérations comme l'inversion de signe, la soustraction, l'incrémentation, etc. Certains processeurs sont capables de faire une opération appelée ADC, ADDC ou autre nom signifiant ''Addition with Carry'', qui permet de faire le calcul A + B + Retenue (la retenue en question est la retenue sortante de l'addition précédente, stockée dans le registre ''carry flag''). Son utilité principale est de permettre des additions d'entiers plus grands que ceux supportés par le processeur. Par exemple, cela permet de faire des additions d'entiers 32 bits sur un processeur 16 bits.
[[File:Adder Network 3 Bit Sum Delay 003.svg|vignette|upright=0.5|Propagation de retenue dans l'additionneur.]]
L'avantage de cet additionneur est qu'il utilise très peu de portes logiques et est assez économe en transistors, ce qui fait qu'il était utilisé sur certains processeurs 8 et 16 bits assez anciens. Bien que très simple, cet additionneur est cependant peu performant. Le temps de calcul est proportionnel à la taille des opérandes. Par exemple, additionner deux nombres de 32 bits prendra deux fois plus de temps que l'addition de deux nombres de 16 bits. La raison est que le calcul des retenues s'effectue en série, l'une après l'autre. En effet, chaque additionneur doit attendre que la retenue de l'addition précédente soit disponible pour donner son résultat. Les retenues doivent se propager à travers le circuit, du premier additionneur jusqu'au dernier.
L'addition étant une opération fréquente, il vaut mieux utiliser d'autres méthodes d'addition, plus rapides. Pour cela, les autres additionneurs utilisent diverses optimisations, qu'on détaillera plus bas. Mais ces optimisations demandent d'utiliser plus de circuits, quitte à gagner quelque peu en rapidité. Les processeurs 32 bits, et quelques processeurs 8/16 bits évolués, utilisaient d'autres solutions, qui donnent respectivement les additionneurs à saut de retenue, à sélection de retenue, et à anticipation de retenue. Mais avant de voir ces optimisations, noua allons voir s'il est possible d'optimiser les additionneurs à propagation de retenue.
===L'additionneur à saut de retenue===
L'additionneur à propagation de retenue peut être optimisé. Mais les optimisations sont assez limitées. Les optimisations en question peuvent se classer en deux types.
La première accélère la propagation de la retenue, en agissant au niveau des additionneurs complets. Il faut alors modifier la manière dont les additionneurs complets calculent la retenue sortante. La ''Manchester carry chain'' est une optimisation de ce type, mais on ne peut pas encore expliquer à ce stade du cours. En effet, elle optimisait les additionneurs complets au niveau des transistors eux-mêmes. Elle a été utilisée sur de nombreux processeurs connus, comme le 8086 d'Intel ou le Z80, utilisaient des additionneurs de ce type.
La seconde classe d'optimisation rend l'addition plus rapide dans certains cas, mais n'améliore pas le pire des cas. Dans le pire des cas, la retenue doit être propagée du bit de poids faible vers le bit de poids fort, et on ne peut pas accélérer ce cas là. Le résultat est un additionneur dont le temps de calcul est variable. Le calcul prendra quelques cycles d'horloges avec certains opérandes, mais d'autres opérandes ne verront aucune amélioration. Il n'améliore pas le pire des cas, dans lequel la retenue doit être propagée du début à la fin, du bit de poids faible au bit de poids fort. Mais dans les autres cas, il permet d'avoir le résultat en avance. L'optimisation en question donne l''''additionneur à saut de retenue''' (''carry-skip adder'').
Il est composé de blocs qui additionnent 4/5 bits, rarement plus. LA taille d'un bloc varie d'un additionneur à l'autre, elle peut même varier dans l'additionneur, mais nous allons prendre un exemple où les blocs font 4 bits. L'idée est de détecter précocement si la retenue entrante est propagée à travers tout le bloc. Si la retenue est propagée dans tous le bloc, on peut simplement prendre la retenue entrante et la propager sur la retenue sortante. La retenue saute le bloc entier. Dans le cas contraire, on n'a pas le choix : on doit calculer la retenue sortante normalement, en faisant l'addition. Le choix entre les deux est le fait d'un multiplexeur. Toute la difficulté est de savoir comment commander le multiplexeur.
[[File:Carry skip adder, principe de base.png|centre|vignette|upright=2.5|Carry skip adder : principe de base]]
Pour savoir si une retenue est propagée dans un bloc entier, il y a un moyen très simple. Mais il demande d'utiliser des additionneurs complets de type P/G, à savoir qu'ils fournissent une sortie P indiquant que l'additionneur propage la retenue. Le bloc propage une retenue si chaque additionneur complet propage la retenue. Tous les additionneurs complets doivent avoir leur sortie P à 1. Un simple ET logique suffit à déterminer si c'est le cas. Le signal de commande du multiplexeur est généré assez simplement : il vaut 1 si tous les additionneurs complets du bloc propagent la retenue précédente. C'est donc un vulgaire ET entre tous ces signaux.
[[File:Additionneur à saut de retenue.png|centre|vignette|upright=2.5|Calcul de la commande du MUX.]]
Voici ce que ca donne pour un blmoc de 4 bits :
[[File:CSAdder4Bit.svg|centre|vignette|upright=1.5|Additionneur ''carry skip'' : bloc de 4 bits.]]
L'additionneur à saut de retenue est construit en assemblant plusieurs blocs de ce type.
[[File:BCSAdder16Bit.svg|centre|vignette|upright=3|Additionneur à saut de retenue.]]
===L'additionneur à sélection de retenue===
L''''additionneur à sélection de retenue''' utilise aussi des blocs, comme les additionneurs précédents. L'addition se fait en deux versions : une avec la retenue du bloc précédent valant zéro, et une autre version avec la retenue du bloc précédent valant 1. Il suffira alors de choisir le bon résultat avec un multiplexeur, une fois cette retenue connue. On gagne ainsi du temps en calculant à l'avance les valeurs de certains bits du résultat, sans connaître la valeur de la retenue. Petit détail : sur certains additionneurs à sélection de retenue, les blocs de base n'ont pas la même taille. Cela permet de tenir compte des temps de propagation des retenues entre les blocs.
[[File:Additionneur à sélection de retenue.png|centre|vignette|upright=1.5|Additionneur à sélection de retenue avec seulement deux blocs.]]
Dans les exemples du dessus, chaque sous-additionneur étaient des additionneurs à propagation de retenue. Mais ce n'est pas une obligation, et tout autre type d’additionneur peut être utilisé. Par exemple, on peut faire en sorte que les sous-additionneurs soient eux-mêmes des additionneurs à sélection de retenue, et poursuivre ainsi de suite, récursivement. On obtient alors un '''additionneur à somme conditionnelle''', plus rapide que l'additionneur à sélection de retenue, mais qui utilise beaucoup plus de portes logiques.
===Les additionneurs à anticipation de retenue===
Les '''additionneurs à anticipation de retenue''' calculent chaque retenue sans avoir à propager les retenues précédentes. Au lieu de calculer les retenues une par une, ils calculent toutes les retenues en parallèle, à partir des bits des opérandes. Une fois les retenues pré-calculées, il suffit de les additionner avec les deux bits adéquats, pour obtenir le résultat. Ces additionneurs sont composés de deux parties :
* un circuit qui pré-calcule les retenues, sans les propager, directement à partir des opérandes ;
* d'une couche d'additionneurs complets, qui additionnent chacun deux bits d'opérande et la retenue pré-calculée.
[[File:Additionneur à anticipation de retenue.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue.]]
Le calcul des retenues se fait en deux étapes. La première détermine si les retenues sont propagées ou générées, pour chaque colonne. Elle détermine, pour chaque colonne, les bits P et G qui indiquent respectivement : qu'une retenue a été générée sur cette colonne, que la colonne propage la retenue précédente. La seconde étape utilise ces signaux P et G pour déterminer la retenue sur chaque colonne. Le circuit de calcul des retenues est donc composé de deux parties : une couche de demi-additionneurs pour générer les signaux P et G, un circuit de calcul des retenues proprement dit.
[[File:Circuit complet d'un additionneur à anticipation de retenue.png|centre|vignette|upright=2|Circuit complet d'un additionneur à anticipation de retenue.]]
Pour rappel, la retenue de la colonne i, notée <math>C_i</math> est égale à :
: <math>G_i + (P_i . C_{i-1})</math>, avec G le signal de génération de retenue, P le signal de propagation de retenue.
Si on utilisait cette formule sans trop réfléchir, on retomberait sur un additionneur à propagation de retenue inutilement compliqué. L'astuce des additionneurs à anticipation de retenue consiste à remplacer le terme Ci−1 par sa valeur calculée avant. Par exemple, je prends un additionneur 4 bits. Je dispose de deux nombres A et B, contenant chacun 4 bits : A3, A2, A1, et A0 pour le nombre A, et B3, B2, B1, et B0 pour le nombre B. Si j'effectue les remplacements, j'obtiens les formules suivantes :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Ces formules nous permettent de déduire la valeur d'une retenue directement : il reste alors à créer un circuit qui implémente ces formules, et le tour est joué.
[[File:Four bit adder with carry lookahead.svg|centre|vignette|upright=1.5|Additionneur à anticipation de retenue de 4 bits.]]
Plus haut, j'ai dit que le circuit était composé de trois couches : une couche de demi-additionneur pour les signaux P et G ; un circuit d'anticipation de retenue, puis l'addition finale. Mais les deux bits d'opérandes sont déjà additionnés dans la couche de demi-additionneur, autant réutiliser le résultat pour l'additionner à la retenue. Pour éliminer toute redondance de ce type, il est possible d'utiliser des additionneurs partiels (des additionneurs où la sortie de retenue a été remplacée par deux sorties P et G). L'additionneur final est alors composé de plusieurs additionneurs complets de ce type, couplé à un circuit d'anticipation de retenue.
[[File:Cla4bits.png|centre|vignette|upright=2.5|Additionneur à anticipation de retenue de 4 bits.]]
Les additionneurs à anticipation de retenue sont plus rapides que les additionneurs à propagation de retenue. La raison est que les retenues sont calculées rapidement, dans un temps plus petit qu'en propageant la retenue. Pour rentrer dans les détails mathématiques, le temps de calcul n'est pas proportionnel au nombre de bits, mais proportionnel au logarithme de ce nombre de bits. Par contre, le gain en temps de calcul s'accompagne d'un cout en prote logique conséquent. Le circuit qui calcule les retenues anticipées utilise beaucoup de portes logiques.
La conséquence est qu'utiliser un additionneur à anticipation de retenue est une solution pratique pour additionner 4 ou 8 bits. Mais pour des opérandes plus grandes, de 16 ou 32 bits, cela utiliserait trop de portes logiques. Une partie de ce cout en portes logiques est cependant lié à des redondances. Si on analyse deux retenues différentes, à des colonnes différentes. Les circuits qui calculent ces deux retenues seront différents, mais ils contiendront des sous-circuits identiques. Pour vous en rendre compte, reprenons les quatre équations obtenues précédemment et essayez de trouver des redondances :
* C1 = G0 + ( P0 · C0 ) ;
* C2 = G1 + ( P1 · G0 ) + ( P1 · P0 · C0 ) ;
* C3 = G2 + ( P2 · G1 ) + ( P2 · P1 · G0 ) + ( P2 · P1 · P0 · C0 ) ;
* C4 = G3 + ( P3 · G2 ) + ( P3 · P2 · G1 ) + ( P3 · P2 · P1 · G0 ) + ( P3 · P2 · P1 · P0 · C0 ).
Vous devriez trouver :
* le terme ''P0 · C0'' dans toutes les lignes ;
* les termes ''P1 · P0 · C0'' et ''P1 · P0'' dans les trois dernières lignes ;
* le terme ''P2 · P1 · P0 · C0'' ; ''P2 · P1 · G0'' et ''P2 · G1'' dans les deux dernières lignes.
===Les additionneurs à calcul parallèle de préfixe===
Il existe plusieurs manières d'exploiter de telles redondances, exploitées dans les '''additionneurs à calcul parallèle de préfixe'''. L'optimisation apportée est de générer des signaux ''propagate'' et ''generate'' pour des groupes de 2, 3, 4, ..., N colonnes. Par exemple, il est possible de générer un signal ''P 0 vers 3'', qui indique si la retenue de la première colonne est propagée jusqu'à la 4ème colonne. Un autre exemple est un signal qui indique qu'une retenue a été générée entre les colonnes 4 à 7 génèrent une retenue ou non. En clair, les signaux P et G ont maintenant un intervalle, qui précise de quelle colonne vers quelle colonne se fait la propagation, ou entre quelles colonnes se fait la génération.
Il est possible de combiner les signaux P et G de deux groupes de colonne, s'ils sont contiguës (ils peuvent aussi se recouvrir). Par exemple, il est possible de calculer les bits P et G pour les colonnes 0 à 10, à partir des deux signaux P/G des colonnes 0-4 et 5-10. Pour cela, les équations sont assez simples. Si je prends deux groupes nommés A et B, avec A pour les colonnes de poids fort et B celles de poids faible, on a :
: <math>P_{sortie} = P_A . P_B</math>
: <math>G_{sortie} = G_A . P_A . G_B</math>
Pour les bits des colonnes 2, 4, 8, 16, 32, 64, et autres, le calcul est simple. L'idée est de grouper les colonnes par groupes de 2. Puis, on calcule chaque groupe de 4 bits à partir de deux groupes de 2. Puis les groupes de 8 bits sont calculés à partir de deux groupes de 4 bits, et ainsi de suite pour toute puissance de deux.
[[File:Squelette d'un additionneur à calcul parallèle de préfixe.jpg|centre|vignette|upright=2|Squelette d'un additionneur à calcul parallèle de préfixe]]
Les seules difficultés surviennent pour les colonnes dont le nombre n'est pas une puissance de deux. Il y a plusieurs manières pour subdiviser ces colonnes en intervalles plus petits et combiner le tout. Et elles donnent chacune des additionneurs différents. Ils portent les noms d'additionneur de Ladner-Fisher, d'additionneur de Brent-Kung, d'additionneur de Kogge-Stone, etc.
Voici ce que cela donne pour l''''additionneur de Brent-Kung''', sur 4 bits. Ne vous affolez pas, le circuit est assez simple à comprendre. les retenues 1, 2 et 4 sont calculées comme dit plus haut. Pour la troisième retenue, on combine les bits P et G de la seconde colonne avec ceux de la troisième. En clair : on profite d'une redondance.
[[File:Additionneur de Kogge-Stone.jpg|centre|vignette|upright=2|Additionneur de Brent-Kung, 4 bits.]]
L'additionneur de Brent-Kung est le plus lent de tous les additionneurs à calcul parallèle de préfixe, mais c'est celui qui utilise le moins de portes logiques. Il faut dire qu'il profite de toutes les redondances possibles. En comparaison, l'additionneur de Kogge-Stone ne profite pas de certaines redondances, et duplique donc des circuits. Mais en contrepartie, le résultat est un gain en performance.
Pour des additionneurs 4 bits, la seule différence notable est pour le calcul de la troisième retenue, qui ne profite pas de la redondance avec la seconde colonne. Le tout est indiqué dans le schéma ci-dessous. Les circuits en rouge sont des demi-additionneurs, qui génèrent les signaux P et G pour chaque colonne. Les circuits en jaune combinent les bits P et G de deux groupes de colonnes. Les circuits en vert prennent les signaux P et G et calculent la retenue finale.
[[File:4bitKoggeStone.pdf|centre|vignette|upright=2|4bitKoggeStone]]
Dans le cas général, l'additionneur de Kogge-Stone est un des plus rapide, mais aussi un des plus gourmand en circuits, alors que c'est l'inverse pour l'additionneur de Brent-Kung. Mais le mieux que vous en jugiez vous-même, avec les exemples ci-dessous, qui montrent les deux additionneurs pour des opérandes de 8 bits. Dans ceux-ci, chaque losange calculent les bits P et G, à partir des signaux P et G de deux groupes précédents.
{|
|[[File:Brent-kung-8-bit.png|vignette|Brent-kung-8-bit]]
|[[File:Kogge-stone-8-bit.png|vignette|upright=1.2|Kogge-stone-8-bit]]
|}
===Les additionneurs avec anticipation de retenue entre plusieurs additionneurs===
Dans cette section, nous allons voir des additionneurs conçus en assemblant des additionneurs à plus simples, qui additionnent environ 4 à 5 bits, parfois plus, parfois moins. Ces additionneurs simples seront nommés ''blocs'' dans ce qui suit, et l'un d'entre eux est illustré ci-contre. Chaque bloc prend en entrée un morceau des deux opérandes à additionner, mais aussi une retenue d'entrée.
Les blocs sont tous identiques dans le cas le plus simple, mais il est possible d'utiliser des blocs de taille variable. Par exemple, le premier bloc peut avoir des opérandes de 6 bits, le second des opérandes de 7 bits, etc. Faire ainsi permet de gagner un petit peu en performances, si la taille de chaque bloc est bien choisie. La raison est une question de temps de propagation des retenues. La retenue met plus de temps à se propager à travers 8 blocs qu'à travers 4, ce qui prend plus de temps qu'à travers 2 blocs, etc. En tenir compte fait que la taille des blocs tend à augmenter ou diminuer quand on se rapproche des bits de poids fort.
====Le calcul parallèle de la retenue====
[[File:Full-adder-4bits-serial-CEI.svg|vignette|upright=0.5|Additionneur 4 bits, un bloc.]]
Plus haut, nous avons vu l'anticipation de retenue. Il est possible de l'adapter pour fonctionner avec des blocs. Une première idée est d'utiliser plusieurs additionneurs à anticipation de retenue, chacun étant un bloc. Vu qu'il s'agit d'additionneurs, ils disposent d'une sortie de retenue pour la retenue sortante, et d'une entrée de retenue pour la retenue entrante. Par exemple, le schéma ci-contre illustre un additionneur 4 bits de ce type.
De ce fait, il est possible de propager les retenues d'un bloc à l'autre. par exemple, on peut utiliser 4 additionneurs à anticipation de retenue de 4 bits, et propager les retenues entre eux. Le premier bloc calcule une retenue, qui est propagée au second bloc. Le second bloc calcule lui aussi une retenue, qui est propagée au troisième bloc, etc.
[[File:4008 Functional Diagram.svg|vignette|upright=1|4008 Functional Diagram]]
Le gain en performance est significatif, mais il est possible de faire presque aussi rapide, tout en économisant beaucoup de circuits. L'idée est de simplifier les additionneurs 4 bits, afin de ne pas utiliser une anticipation de retenue complète. L'anticipation de retenue n'est utilisée que pour la retenue sortante, alors que les bits de somme sont calculées avec propagation de retenue. La retenue sortante est donc calculée en parallèle de l'addition. Chaque bloc contient, à côté d'un additionneur proprement dit, un circuit qui calcule la retenue sortante. Il existe de nombreuses manières de calculer la retenue sortante.
Le gain en portes logiques est assez significatif. En effet, on se passe de circuits d'anticipation de retenue pour les 4 bits de somme, on ne garde que celui pour la retenue sortante. Le fait d'utiliser la propagation de retenue pour calculer les 4 bits de somme est censé avoir un léger cout en performance, mais il se trouve que ce cout est très faible. En effet, le résultat n'est connu qu'une fois les retenues propagées jusqu'au dernier bloc. Et malgré l'anticipation des retenues, la propagation est assez lente. les additionneurs à propagation de retenue auront terminé leur travail bien avant.
Un exemple est celui de l'additionneur CMOS 4008, un additionneur de 4 bit. Il est composé en trois sections. Une première couche de demi-additionneurs calcule les signaux P et G utilisés à la fois pour l'anticipation de la retenue sortante, que pour calculer les bits de somme. Le circuit de calcul de la retenue sortante utilise l'anticipation de retenue. Le reste du circuit fait l'addition en propageant les retenues.
[[File:CMOS 4008, circuit découpé en sections.png|centre|vignette|upright=1.5|CMOS 4008, circuit découpé en sections]]
====Les additionneurs à anticipation de retenue multi-niveau====
Il est possible d'utiliser l'anticipation de retenue entre deux blocs. Par exemple, il est possible de créer un additionneur 16 bits en utilisant 4 additionneurs/blocs de 4 bits. L'additionneur utilisé peut être un additionneur à propagation de retenue, ou à anticipation de retenue, peu importe.
Pour cela, les additionneurs de 4 bits doivent fournir deux sorties P et G. Les deux sorties indiquent que le bloc soit a généré une retenue, soit a propagé la retenue entrante. Par propagé, on veut dire que la retenue entrante du bloc s'est retrouvée sur la sortie de retenue du bloc. C'est le cas si les 4 colonnes propagent la retenue, ce qui signifie que :
: <math>P_\text{4 bits} = P_0 \cdot P_1 \cdot P_2 \cdot P_3</math>
Pour la génération, cela veut dire qu'une colonne a générée une retenue, qui a été propagée jusqu'à la sortie. En clair, pour chaque colonne, il faut que le G = 1, et que les signaux P des colonnes soient à 1. Pour les 4 colonnes, cela donne :
: <math>G_\text{4 bits} = G_3 + G_2 \cdot P_3 + G_1 \cdot P_3 \cdot P_2 + G_0 \cdot P_3 \cdot P_2 \cdot P_1</math>
[[File:Cla4bitsPG.png|centre|vignette|upright=2|Additionneur à anticipation de retenue de 4 bits.]]
Pour combiner 4 blocs de 4 bits, on devra donc combiner 4 bits P et G, avec un circuit d'anticipation de retenue.
[[File:16-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 16 bits.]]
Il est même possible d'aller plus loin et de combiner 4 additionneurs précédents pour obtenir un additionneur 64 bits.
[[File:64-bit lookahead carry unit.svg|centre|vignette|upright=2|Additionneur à anticipation de retenue de 64 bits.]]
Le résultat est un additionneur à plusieurs niveaux d’anticipation de retenue. Une anticipation de retenue dans un blocs de 4 bits (facultative), entre blocs de 4 bits, entre blocs de 16 bits. La même logique peut être utilisée avec des blocs de taille différente de 4, 16 et 64 bits.
==L'addition signée et la soustraction==
Après avoir vu l'addition, il est logique de passer à la soustraction, les deux opérations étant très proches. Si on sait câbler une addition entre entiers positifs, câbler une soustraction n'est pas très compliqué. De plus, la soustraction permet de faire des additions de nombres signés.
===Le soustracteur pour opérandes entiers===
Pour soustraire deux nombres entiers, on peut adapter l'algorithme de soustraction utilisé en décimal, celui que vous avez appris à l'école. Celui-ci ressemble fortement à l'algorithme d'addition : on soustrait les bits de même poids, et on propage éventuellement une retenue sur la colonne suivante. À la différence de l'addition, la retenue est soustraite, et non ajoutée. La table de soustraction nous dit quel est le résultat de la soustraction de deux bits. La voici :
* 0 - 0 = 0 ;
* 0 - 1 = 1 et une retenue ;
* 1 - 0 = 1 ;
* 1 - 1 = 0.
[[File:Algebra1 05 fig014.svg|centre|vignette|Soustraction en binaire, avec les retenues en rouge.]]
La table de soustraction peut servir de table de vérité pour construire un circuit qui soustrait deux bits. Celui-ci est appelé un '''demi-soustracteur'''. Il ressemble beaucoup à un demi-additionneur, les différences se résumant à une porte NON ajoutée pour le calcul de la retenue.
[[File:Half Subtractor Vektor.svg|centre|vignette|Demi-soustracteur.]]
Comme pour l'additionneur, deux demi-soustracteurs peuvent être combinés pour donner un '''soustracteur complet'''. Le calcul de la retenue se fait en combinant les deux retenues des demi-soustracteurs avec une porte OU. Les soustracteurs complets sont utilisés pour créer des soustracteurs à propagation de retenue ou tout autre circuit soustracteur, sur le même modèle que les additionneurs.
[[File:FullSubtractor.svg|centre|vignette|upright=2|Soustracteur complet.]]
Vous l'aurez sans doute remarqué, mais le demi-soustracteur ressemble beaucoup au demi-additionneur. La seule différence est une porte NON ajoutée au bon endroit dans le demi-soustracteur.
{|
|[[File:Half-adder.svg|vignette|Demi-additionneur]]
|[[File:Half Subtractor Vektor.svg|vignette|upright=1.3|Demi-soustracteur]]
|}
La conséquence est qu'il est possible de créer un circuit capable de faire à la fois des additions et des soustractions. L'idée est de remplacer la porte NON du demi-soustracteur par un inverseur commandable. Si on envoie un zéro sur l'entrée de commande, l'inverseur commandable se comportera comme une porte OUI. Le circuit sera alors identique à un demi-additionneur. Si on envoie un 1 sur l'entrée de commande, l'inverseur commandable se comportera comme une porte NON. le circuit sera alors un demi-soustracteur. Il faut faire cela pour chaque demi-soustracteur, ce qui donne ceci pour un soustracteur complet. le résultat est alors appelé un '''additionneur-soustracteur complet'''.
[[File:Additionneur-soustracteur complet.png|centre|vignette|upright=2|Additionneur-soustracteur complet]]
===L'additionneur-soustracteur pour opérandes codées en complément à deux===
Étudions le cas de la soustraction en complément à deux, dans l'objectif de créer un circuit soustracteur. Vous savez sûrement que a−b et a+(−b) sont deux expressions équivalentes. Et en complément à deux, − b = not(b) + 1. Dit autrement, a − b = a + not(b) + 1. On pourrait se dire qu'il faut deux additionneurs pour faire le calcul, mais la majorité des additionneurs possède une entrée de retenue pour incrémenter le résultat de l'addition. Un soustracteur en complément à deux est donc simplement composé d'un additionneur et d'un inverseur.
[[File:Additionneur soustracteur.png|centre|vignette|upright=2|Soustracteur en complément à deux.]]
Il est possible de créer un circuit capable d'effectuer soit une addition, soit une soustraction : il suffit de remplacer l'inverseur par un inverseur commandable, qui peut être désactivé. On a vu comment créer un tel inverseur commandable dans le chapitre sur les circuits combinatoires. On peut remarquer que l'entrée de retenue et l'entrée de commande de l'inverseur sont activées en même temps : on peut fusionner les deux signaux en un seul.
[[File:Additionneur-soustracteur en complément à deux.png|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux.]]
Une implémentation alternative est la suivante. Elle remplace l'inverseur commandable par un multiplexeur.
[[File:4-bit ripple carry adder-subtracter.svg|centre|vignette|upright=2|Additionneur-soustracteur en complément à deux, version alternative.]]
===L'additionneur-soustracteur pour opérandes codées en signe-magnitude===
Passons maintenant aux nombres codés en signe-valeur absolue, les deux opérandes étant notées A et B. Suivant les signes des deux opérandes, on a quatre cas possibles : A + B, A − B (B négatif), −A + B (A négatif) et −A − B (A et B négatifs). Une astuce est que le circuit n'a besoin que de calculer A + B et A − B : il peut les inverser pour obtenir − A − B ou B − A. A + B et A − B peuvent se calculer avec un additionneur-soustracteur, reste à corriger le résultat. Il suffit de lui ajouter un inverseur commandable pour obtenir le circuit d'addition finale.
[[File:Additionneur en signe-valeur absolue.png|centre|vignette|upright=2|Additionneur en signe-valeur absolue.]]
Toute la difficulté tient dans le calcul du bit de signe du résultat, quand interviennent des soustractions. Autant l'addition de deux nombres de même signe (A + B et −A − B) ne pose aucun problème, autant les soustractions posent problème (A − B et −A + B). Suivant que <math>A<B</math> ou que <math>A>B</math>, le signe du résultat ne sera pas le même. Déterminer le signe du résultat se fait en regardant les bits de débordement d'entier, comme on le verra plus bas.
===L'additionneur-soustracteur pour opérandes codées en représentation par excès===
Passons maintenant aux nombres codés en représentation par excès. On pourrait croire que ces nombres s'additionnent comme des nombres non-signés, mais ce serait oublier la présence du biais, qui pose problème. Dans les cas de nombres signés gérés avec un biais, voyons ce que donne l'addition de deux nombres :
: <math>( n_1 + biais ) + ( n_2 + biais ) = n_1 + n_2 + 2 \times biais</math>
Or, le résultat correct serait :
: <math>n_1 + n_2 + biais</math>
En effectuant l'addition telle quelle, le biais est compté deux fois. On doit donc le soustraire après l'addition pour obtenir le résultat correct.
Même chose pour la soustraction qui donne ceci :
: <math>(n_1 + biais) - (n_2 + biais) = n_1 - n_2</math>
Or, le résultat correct serait :
: <math> ( n_1 - n_2 ) + biais </math>
Il faut rajouter le biais pour obtenir l'exposant correct.
On a donc besoin de deux additionneurs/soustracteurs : un pour additionner/soustraire les représentations binaires des opérandes, et un autre pour ajouter/retirer le biais en trop/manquant.
==L'additionneur BCD==
Maintenant, voyons un additionneur qui additionne deux entiers au format BCD. Pour cela, nous allons devoir passer par deux étapes. La première est de créer un circuit capable d'additionneur deux chiffres BCD. Ensuite, nous allons voir comment enchaîner ces circuits pour créer un additionneur BCD complet.
===L'additionneur BCD qui fait l'opération chiffre par chiffre===
Nous allons commencer par voir un additionneur qui additionne deux chiffres en BCD, une sorte d'équivalent BCD de l'additionneur complet. Il fournit un résultat sur 4 bits et une retenue qui est mise à 1 si le résultat dépasse 10 (la limite d'un chiffre BCD). Les deux opérandes sont des chiffres BCD codés sur 4 bits et sont additionnés en binaire par un additionneur des plus normaux, similaire à ceux vus plus haut. Le résultat est alors un entier codé en binaire, sur 5 bits, qu'on corrige/convertit pour obtenir un chiffre BCD et une retenue sortante.
Pour corriger le résultat, une idée intuitive serait de prendre le résultat et de faire une division par 10. Le quotient donne la retenue, alors que le reste est le résultat, le chiffre BCD. Mais un circuit diviseur par 10 utilise beaucoup de portes logiques, ce qui ne vaut pas le coup. Une autre méthode détecte si le résultat est égal ou supérieur à 10, ce qui correspond à un "débordement" (on dépasse les limites d'un chiffre BCD). Si le résultat est plus petit que 10, il n'y a rien à faire : le résultat est bon et la retenue est de zéro. Par contre, si le résultat vaut 10 ou plus, il faut corriger le résultat et générer une retenue à 1.
Il faut donc ajouter un circuit qui détecte si le résultat est supérieur à 9, qui calcule directement la retenue. Ce circuit peut se fabriquer simplement à partir de sa table de vérité, ou en utilisant les techniques que nous verrons dans un chapitre ultérieur sur les comparateurs. La solution la plus simple est clairement d'utiliser la table de vérité, ce qui est très simple, assez pour être laissé en exercice au lecteur. Pour comprendre comment corriger le résultat, établissons une table de vérité qui associe le résultat et le résultat corrigé. L'entrée vaut au minimum 10 et au maximum 9 + 9 = 18. On considère la sortie comme un tout, la retenue étant un 5ème bit, le bit de poids fort.
{|class="wikitable"
|-
! colspan="5" | Entrée
!
! rowspan="10" |
! Retenue
! Résultat corrigé (sans retenue)
! interprétation de la sortie en binaire (retenue inclue)
|-
| 0 || 1 || 0 || 1 || 0
| (10)
| 1 || 0000
| (16)
|-
| 0 || 1 || 0 || 1 || 1
| (11)
| 1 || 0001
| (17)
|-
| 0 || 1 || 1 || 0 || 0
| (12)
| 1 || 0010
| (18)
|-
| 0 || 1 || 1 || 0 || 1
| (13)
| 1 || 0011
| (19)
|-
| 0 || 1 || 1 || 1 || 0
| (14)
| 1 || 0100
| (20)
|-
| 0 || 1 || 1 || 1 || 1
| (15)
| 1 || 0101
| (21)
|-
| 1 || 0 || 0 || 0 || 0
| (16)
| 1 || 0110
| (22)
|-
| 1 || 0 || 0 || 0 || 1
| (17)
| 1 || 0111
| (23)
|-
| 1 || 0 || 0 || 1 || 0
| (18)
| 1 || 1000
| (24)
|}
En analysant le tableau, on voit que pour corriger le résultat, il suffit d'ajouter 6. La raison est que le résultat déborde d'un nibble à 16 en binaire, mais à 10 en décimal : il suffit d'ajouter la différence entre les deux, à savoir 6, et le débordement binaire fait son travail. Donc, la correction après une addition est très simple : si le résultat dépasse 9, on ajoute 6.
On peut maintenant implémenter l'additionneur BCD, en combinant le comparateur avec 10, le circuit de correction, et l'additionneur. La première solution calcule deux versions du résultat : la version corrigée, la version normale. Le choix entre les deux est réalisée par un multiplexeur, commandé par le comparateur.
[[File:Additionneur BCD.png|centre|vignette|upright=1.5|Additionneur BCD]]
L'autre solution utilise un circuit commandable qui soit additionne 6, soit ne fait rien. Le choix entre les deux est commandé par le bit calculé par le comparateur.
[[File:Additionneur BCD, seconde version.png|centre|vignette|upright=1.5|Additionneur BCD, seconde version.]]
Une version alternative du circuit précédent est la suivante. Il contient deux additionneurs : un pour additionner les deux chiffres BCD, un autre pour additionner 6 si besoin. Le résultat du comparateur est directement utilisé pour générer l'opérande du second additionneur : 0 ou 6. Le circuit est simple à concevoir, mais gaspille beaucoup de circuit. Idéalement, il vaudrait mieux utiliser un circuit combinatoire d'addition avec une constante.
[[File:Adder 4 Bit BCD.svg|centre|vignette|upright=2|Additionneur BCD, circuit complet.]]
Pour obtenir un additionneur BCD complet, il suffit d’enchaîner les additionneurs précédents, comme on le ferait avec les additionneurs complets dans un additionneur à propagation de retenue. Au final, l'additionneur BCD est beaucoup plus compliqué qu'un additionneur normal, car il rajoute un comparateur ">9", un petit additionneur pour ajouter 6 et éventuellement d'autres circuits. De plus, il est difficile d'appliquer les optimisations disponibles sur les additionneurs non-BCD. Notamment, les circuits d'anticipation de retenue sont totalement à refaire et le résultat est relativement compliqué. C'est ce qui explique pourquoi le BCD a progressivement été abandonné au profit du binaire simple.
La soustraction en BCD se fait comme en binaire : le nombre à soustraire est remplacé par son complément, le circuit additionne le complément et l'autre opérande, le débordement d'entier fait que le résultat marche. Sauf qu'ici, le complément est un complément à 9. Il se calcule chiffre par chiffre : chaque chiffre est remplacé par (9 - le chiffre en question).
===L'additionneur BCD par ajustement décimal===
L'additionneur BCD précédent effectuait son travail chiffre BCD par chiffre BCD, mais il existe des additionneurs BCD qui font autrement. Sur les premiers processeurs x86, il n'y avait pas d'opération d'addition BCD proprement dit, seulement une addition binaire normale de 8, 16 ou 32 bits. Par contre, elle était secondée par une opération dite d''''ajustement décimal''' qui transformait un nombre binaire en nombre codé en BCD. L'opération d'ajustement décimal prenait un opérande de 8 bits codé en binaire et fournissait un résultat de la même taille, c'est à dire deux chiffres BCD. Effectuer une addition BCD demandait donc de faire deux opérations à la suite : une addition binaire simple, suivie par l'opération d'ajustement décimal. Cela permettait de gérer des nombres entiers en binaire usuel et des entiers BCD sans avoir deux instructions d'addition séparées pour les deux, sans compter que cela simplifiait aussi les circuits d'addition.
L'ajustement décimal s'effectue en ajoutant une constante bien précise à l'opérande à convertir en BCD. L'idée est que la constante est découpée en morceaux de 4 bits, correspondant chacun à un chiffre BCD de l'opérande, chaque morceau contenant soit un 0, soit 6. Cela permet d'ajouter soit 0, soit 6, à chaque chiffre BCD, et donc de le corriger. La propagation des retenues d'un chiffre à l'autre est effectuée automatiquement par l'addition binaire de la constante. L'opération d'ajustement décimal calcule automatiquement la constante. Elle découpe l'opérande en ''nibbles'', vérifie si chaque ''nibble'' est supérieur ou égal à 10, puis détermine la valeur de chaque ''nibble'' de la constante finale. Par exemple, si je prends l'opérande 1001 1110, le ''nibble'' de poids faible déborde, alors que celui de poids fort non. La constante sera donc 0000 0110 : 0x06. Inversement, si le ''nibble'' de poids fort déborde et pas celui de poids faible, la constante sera alors 0x60. Et la constante est de 0x66 si les deux ''nibbles'' débordent, de 0x00 si aucun ne déborde.
Le circuit d’ajustement décimal est donc composé de trois étapes : deux étapes pour calculer la constante, et un circuit d'addition pour additionner cette constante au nombre de départ. La première étape découpe l'opérande en morceaux de 4 bits, en chiffres BCD, et vérifie si chacun d'entre eux vaut 10 ou plus. La seconde étape prend les résultats de la première étape, et les combine pour calculer la constante. Enfin, on trouve l'addition finale, qui était réalisée par un circuit d'addition utilisé à la fois pour l'ajustement décimal et l'addition binaire. La différence entre une addition normale et une opération d'ajustement décimal tient dans le fait que les deux premières étapes sont désactivées dans une addition normale.
[[File:Additionneur BCD parallèle.png|centre|vignette|upright=1.5|Additionneur BCD parallèle]]
===L'additionneur biquinaire===
Les entiers BCD ne sont qu'un des encodages hybrides entre décimal et binaire. L'encodage biquinaire est l'un d'entre eux et nous allons faire un rappel rapide à ce sujet. Pour simplifier, un chiffre encodé en biquinaire est composé de deux parties : un bit, couplé à une partie quinaire encodée en représentation ''one-hot''. La partie quinaire encode un nombre allant de 0 à 4, ce qui prend 5 bits (0, 1, 2, 3 et 4). Le bit indique s'il faut ou non ajouter 5 à la valeur encodée par la partie quinaire. Ainsi, on peut coder tous les nombres de 0 à 9.
Additionner deux nombres de biquinaire demande donc d'additionner deux parties quinaires encodées en ''one-hot'' et d'additionner deux bits. Mais attention : il faut tenir compte de la retenue de l'addition des parties quinaires. Et idéalement, il faut aussi tenir compte d'une retenue entrante, provenant de l'addition de la colonne de chiffres précédente. Toute la difficulté vient de la création de l'additionneur ''one-hot''. Heureusement, vu qu'il n'y a que 4-5 bits à additionner, il est souvent fabriqué à partir de sa table de vérité.
[[File:Additionneur bi-quinaire.png|centre|vignette|upright=2|Additionneur bi-quinaire]]
Un avantage du biquinaire est que le calcul du complément à 9 est très simple. Il faut pour cela : inverser la partie binaire avec une porte NON, puis inverser l'ordre des bits de la partie quinaire. Concrètement, le bit de poids faible devient le bit de poids fort, et ainsi de suite. Par exemple, une partie quinaire 01000 devient 00010, 10000 devient 00001, 00100 ne change pas, etc. Le tout peut se calculer avec une porte NON et 5 multiplexeurs.
===L'additionneur BCD avec calculs intermédiaires en biquinaire===
L'ordinateur IBM 1401, un ancien ''mainframe'' des années 60, utilisait un additionneur BCD un peu particulier. Les nombres étaient encodés en BCD dans la mémoire de l'ordinateur, mais les circuits de calcul utilisaient la représentation biquinaire. Lors d'un calcul, le processeur de l'ordinateur traduisait les chiffres BCD en représentation biquinaire, faisait une addition en biquinaire, avant de traduire le résultat en BCD normal.
Pour être précis, l'IBM 1401 utilisait une variante du biquinaire. L'encodage biquinaire de l'IBM 1401 est le suivant : la partie binaire disait si le chiffre était pair ou non, la partie quinaire encodait les valeurs 0, 2, 4, 6 et 8. Le chiffre se calculait en additionnant la partie binaire (0 ou 1) au nombre pair encodé par la partie quinaire. Si l'IBM 1401 utilisait cette variante du biquinaire, c'est car elle donnait des circuits de conversion BCD-biquinaire plus économes en portes logiques et plus rapides.
La partie binaire est le bit de poids faible du chiffre BCD, la partie biquinaire est calculée par un simple décodeur qui prend en entrée le chiffre BCD, amputé de son bit de poids faible. La traduction inverse demande d'utiliser un encodeur, à la place du décodeur. Par contre, le circuit d'addition biquinaire était plus compliqué du fait de la gestion des retenues. L'addition des parties binaires et quinaires se faisait en parallèle, dans deux additionneurs séparés. Cependant, l'addition des parties binaire fournit une retenue, qu'il faut prendre en compte. Pour cela, l'IBM 1401 disposait d'un troisième additionneur qui fournissait le résultat final, encodé en biquinaire.
[[File:Additionneur bi-quinaire de l'IBM 1401.png|centre|vignette|upright=2|Additionneur biquinaire de l'IBM 1401]]
Une implémentation moderne demanderait d'utiliser des portes ET combinées à des portes OU, le circuit pouvant être construit simplement à partir de sa table de vérité. Sur l'IBM 1401, le circuit était cependant différent, en raison de l'utilisation de OU câblés, des croisements de fils qui fonctionnent comme des portes OU, que nous n'avons pas encore vu pour le moment, mais qui seront détaillés dans quelques chapitres. Les OU câblés étaient utilisés pour simplifier le design du circuit, mais demandaient des portes logiques spécifiques, ce qui collait avec le fait que ce ''mainframe'' utilisait des transistors en Germanium. L'implémentation exacte est décrite dans cet article de blog, mais je ne recommande sa lecture qu'à ceux qui savent ce qu'est un OU câblé :
* [https://www.righto.com/2015/10/qui-binary-arithmetic-how-1960s-ibm.html Qui-binary arithmetic: how a 1960s IBM mainframe does math].
==Les débordements d'entier lors d'une addition/soustraction==
Les instructions arithmétiques manipulent des entiers codés sur un nombre fixe de bits, qui ne peuvent prendre leurs valeurs que dans un intervalle. Pour les nombres positifs, un ordinateur qui code ses entiers sur n bits pourra coder tous les entiers allant de 0 à <math>2^n -1</math>. Pour les nombres négatifs, l'intervalle est différent et dépend de la représentation utilisée. Dans le cas général, l'ordinateur peut coder les valeurs comprises de <math>N_\text{min}</math> à <math>N_\text{max}</math>. Si le résultat d'un calcul sort de cet intervalle, il ne peut pas être représenté par l'ordinateur et il se produit ce qu'on appelle un '''débordement d'entier'''.
La '''valeur haute de débordement''' désigne la première valeur qui est trop grande pour être représentée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 0 et 7, la valeur haute de débordement est égale à 8. On peut aussi définir la '''valeur basse de débordement''', qui est la première valeur trop petite pour être codée par l'ordinateur. Par exemple, pour un ordinateur qui peut coder tous les nombres entre 8 et 250, la valeur basse de débordement est égale à 7. Pour les nombres entiers, la valeur haute de débordement vaut <math>N_\text{max} + 1</math> , alors que la valeur basse vaut <math>N_\text{min} - 1</math> (avec <math>N_\text{max}</math> et <math>N_\text{min}</math> respectivement la plus grande et la plus petite valeur codable par l'ordinateur).
===La correction des débordements d'entier : l'arithmétique saturée===
Quand un débordement d'entier survient, tous les circuits de calcul ne procèdent pas de la même manière. Dans les grandes lignes, il y a deux réactions possibles : soit on corrige automatiquement le résultat du débordement, soit on ne fait rien et on se contente de détecter le débordement.
Si le débordement n'est pas corrigé automatiquement, le circuit ne conserve que les bits de poids faibles du résultat. Les bits en trop sont simplement ignorés. On dit qu'on utilise l''''arithmétique modulaire'''. Le problème avec ce genre d'arithmétique, c'est qu'une opération entre deux grands nombres peut donner un résultat très petit. Par exemple, si je dispose de registres 4 bits et que je souhaite faire l'addition 1111 + 0010 (ce qui donne 15 + 2), le résultat est censé être 10001 (17), ce qui est un résultat plus grand que la taille d'un registre. En conservant les 4 bits de poids faible, j’obtiens 0001 (1). En clair, un résultat très grand est transformé en un résultat très petit. Cela peut poser problèmes si on travaille uniquement avec des nombres positifs, mais c'est aussi utilisé pour coder des nombres en complément à deux.
D'autres circuits utilisent ce qu'on appelle l''''arithmétique saturée''' : si un calcul génère un débordement, on arrondi le résultat au plus grand entier supporté par le circuit. Les circuits capables de calculer en arithmétique saturée sont un peu plus complexes, vu qu'il faut rajouter des circuits pour corriger le résultat en cas de débordement. Il suffit généralement de rajouter un ''circuit de saturation'', qui prend en entrée le résultat et le corrige en cas de débordement. Ce circuit de saturation met la valeur maximale en sortie si un débordement survient, mais se contente de recopier le résultat du calcul sur sa sortie s'il n'y a pas de débordement. Typiquement, il est composé d'une couche de multiplexeurs, qui sélectionnent quelle valeur mettre sur la sortie : soit le résultat du calcul, soit le plus grand nombre entier géré par le processeur, soit le plus petit (pour les nombres négatifs/soustractions).
L'arithmétique saturée est utilisée pour les additions et soustractions, mais c'est plus rare pour les multiplications/divisions. Une des raisons est que le résultat d'une addition/soustraction prend un bit de plus que le résultat, là où les multiplications doublent le nombre de bits. Quand une addition déborde, le résultat réel est proche de la valeur maximale codable. mais quand une multiplication déborde, le résultat peut parfois valoir 200 à 60000 fois plus que la valeur maximale codable. Les calculs avec une valeur saturée/corrigée sont donc crédibles pour une suite d'additions, mais pas pour une suite de multiplications.
===La détection des débordements entiers===
Quand un débordement d'entier a eu lieu, il vaut mieux que l'additionneur prévienne ! Pour cela, l'additionneur a une '''sortie de débordement''', parfois nommée ''Overflow'', dont la valeur indique si l'addition a généré un débordement d'entier ou non. Reste que détecter un débordement ne se fait pas de la même manière selon que l'on parle d'un additionneur non-signé ou signé.
Pour les additionneur non-signés, l'additionneur calcule un bit de plus que ce qui est supporté par l'ordinateur. Par exemple, un additionneur 32 bits fournit un résultat sur 33 bits, un débordement d'entier a lieu quand le 33ème bit est à 1. Précisément, la sortie de débordement n'est autre que la retenue finale, celle fournie par le dernier additionneur complet. Le seul type de débordement possible est un débordement par le haut, où le résultat dépasse la valeur maximale. Avec l'arithmétique saturée, le circuit de saturation consiste en une seule couche de multiplexeurs, voire en un circuit de mise à la valeur maximale tel que vu dans le chapitre sur les opérations bits à bits.
[[File:Gestion des débordements d'entiers.png|centre|vignette|upright=2.5|Gestion des débordements d'entiers lors d'une addition non-signée.]]
Pour les additionneurs non-signés, la gestion des débordements d'entiers dépend fortement de la représentation signée. Nous allons étudier le cas du complément à deux. Si vous vous rappelez le chapitre 1, les calculs sur des nombres en complètement à deux utilisent les règles de l'arithmétique modulaire, c'est une condition nécessaire. À priori, on peut penser que dans ces conditions, les débordements d'entiers sont une chose parfaitement normale, qui nous permet d'avoir des résultats corrects. Néanmoins, certains débordements d'entiers peuvent survenir malgré tout et produire des bugs assez ennuyeux.
Si l'on tient en compte les règles du complément à deux, on sait que le bit de poids fort (le plus à gauche) permet de déterminer si le nombre est positif ou négatif : il indique le signe du nombre. Tout se passe comme si les entiers en complément à deux étaient codés sur un bit de moins, et avaient leur longueur amputé du bit de poids fort. Si le résultat d'un calcul écrase le bit de poids fort, il y a un débordement d'entiers. Il existe une règle simple qui permet de détecter ces débordements d'entiers. L'addition de deux nombres positifs ne peut pas être un nombre négatif. Si on additionne deux nombres dont le bit de signe est à 0 et que le bit de signe du résultat est à 1, on est en face d'un débordement d'entiers. Même chose pour deux nombres négatifs : le résultat de l'addition ne peut pas être positif. On peut résumer cela en une phrase : si deux nombres de même signe sont ajoutés, un débordement a lieu quand le bit du signe du résultat a le signe opposé.
Modifier les circuits d'au-dessus pour qu'ils détectent les débordements en complément à deux est simple comme bonjour : il suffit créer un petit circuit combinatoire qui prenne en entrée les bits de signe des opérandes et du résultat, et qui fasse le calcul de l'indicateur de débordements. Si l'on rédige sa table de vérité, on doit se retrouver avec la table suivante :
{|class="wikitable"
|-
!Entrées
!Sortie
|-
|000||0
|-
|001||1
|-
|010||0
|-
|011||0
|-
|100||0
|-
|101||0
|-
|110||1
|-
|111||0
|}
L'équation de ce circuit est la suivante, avec <math>S_a</math> et <math>S_b</math> les signes des deux opérandes, et <math>C_i</math> la retenue de la colonne précédente :
: <math> ( S_a . S_b . \overline{C_i} ) + ( \overline{S_a} . \overline{S_b} . C_i )</math>
En simplifiant, on obtient alors :
: <math>( S_a . S_b ) \oplus C_i</math>
Or, il se trouve que <math>S_a . S_b</math> est tout simplement la retenue en sortie du dernier additionneur, que nous noterons <math>C_o</math>. On trouve donc :
: <math>C_o \oplus C_i</math>
Il suffit donc de faire un XOR entre la dernière retenue et la précédente pour obtenir le bit de débordement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de décalage et de rotation
| prevText=Les circuits de décalage et de rotation
| next=Les circuits de comparaison
| nextText=Les circuits de comparaison
}}
</noinclude>
f9um6wtqfldsbl5yt6nsb64xqm817l7
Les cartes graphiques/Les Render Output Target
0
67394
768297
768270
2026-06-22T13:50:33Z
Mewtow
31375
/* Les GPU de type sort-last doivent "trier les pixels" */
768297
wikitext
text/x-wiki
Pour rappel, les étapes précédentes du pipeline graphiques manipulaient non pas des pixels, mais des fragments. Pour rappel, la distinction entre fragment et pixel est pertinente quand plusieurs objets sont l'un derrière l'autre. Si vous tracez une demi-droite dont l'origine est la caméra, et qui passe par le pixel, il arrive qu'elle intersecte la géométrie en plusieurs points. La couleur finale dépend de la couleur de tous ces points d'intersection. Intuitivement, l'objet le plus proche est censé cacher les autres et c'est donc lui qui décide de la couleur du pixel, mais cela demande de déterminer quel est l'objet le plus proche. De plus, certains objets sont transparents et la couleur finale est un mélange de la couleur de plusieurs points d'intersection.
Tout demande de calculer un pseudo-pixel pour chaque point d'intersection et de combiner leurs couleurs pour obtenir le résultat final. Les pseudo-pixels en question sont des '''fragments'''. Chaque fragment possède une position à l'écran, une coordonnée de profondeur, une couleur, ainsi que quelques autres informations potentiellement utiles. Les fragments attribués à un même pixel, qui sont à la même position sur l'écran, sont donc combinés pour obtenir la couleur finale de ce pixel. Pour résumer, la profondeur des fragments doit être gérée, de même que la transparence, etc.
Et c'est justement le rôle de l'étage du pipeline que nous allons voir maintenant. Ces opérations sont réalisées dans un circuit qu'on nomme le '''Raster Operations Pipeline''' (ROP), aussi appelé ''Render Output Target'', situé à la toute fin du pipeline graphique. Dans ce qui suit, nous utiliserons l'abréviation ROP pour simplifier les explications. Le ROP effectue quelques traitements sur les fragments, avant d'enregistrer l'image finale dans la mémoire vidéo.
==Les fonctions des ROP==
Les ROP incorporent plusieurs fonctionnalités qui sont assez diverses. Leur seul lien est qu'il est préférable de les implémenter en matériel plutôt qu'en logiciel, et en dehors des unités de textures. Il s'agit de fonctionnalités assez simples, basiques, mais nécessaires au fonctionnement de tout rendu 3D. Elles ont aussi pour particularité de beaucoup accéder à la mémoire vidéo. C'est la raison pour laquelle le ROP est situé en fin de pipeline, proche de la mémoire vidéo. Voyons quelles sont ces fonctionnalités.
===Le mélange ''alpha'' et le ''z-buffer''===
Sa fonction la plus importante est l'élimination des pixels cachés, grâce au tampon de profondeur. Pour chaque fragment, il lit le pixel correspondant dans le tampon de profondeur, fait la comparaison de profondeur, et met à jour le tampon de profondeur. Nous en avons déjà beaucoup parlé dans les chapitres précédents, notamment dans le chapitre sur les bases du rendu 3D et dans celui sur le rastériseur (avec l'élimination précoce des pixels cachés).
Une autre fonction est le mélange ''alpha'', pour gérer la transparence, qu'on a là encore vu dans le chapitre sur les bases du rendu 3D. Là encore, les ROPs lisent, pour chaque fragment, le pixel correspondant dans le ''framebuffer'', font le mélange ''alpha'', et enregistrent le résultat dans le ''framebuffer''.
Le mélange ''alpha'' est supporté sur tous les ROPs, depuis les premières cartes graphiques, et est encore supporté jusqu'à ce jour. Par contre, ce n'est pas le cas qui est du test ''alpha''. Ce dernier était pris en charge dans les ROPs jusqu'à DirectX 9, mais est maintenant émulé dans les ''pixel shaders'' depuis DirectX 10.
Il en est de même pour les effets de brouillard. Ils impliquent à la fois du mélange ''alpha'' mais aussi la coordonnée de profondeur, ce qui en fait que leur implémentation dans les ROPs parait logique. Aussi, les premières cartes graphiques calculaient le brouillard dans les ROP, en fonction de la coordonnée de profondeur du fragment. De nos jours, il est calculé par les ''pixel shaders'' et les ROP n'incorporent plus de technique de brouillard spécialisée.
Les ROPs ont d'autres fonctions, plus méconnues, qu'on n'a pas abordé dans les chapitres précédents.
===Le tampon de ''stencil''===
Le '''''stencil''''' est une fonctionnalité des API graphiques qui existe depuis très longtemps. Il sert pour générer des effets graphiques très variés, qu'il serait vain de lister ici. Il a notamment été utilisé pour calculer des ombres volumétriques (le moteur de DOOM 3 en faisait grand usage à la base), des réflexions simples, des ''shadowmaps'', et bien d'autres.
Pour le résumer, on peut le voir comme une sorte de tampon de profondeur où la coordonnée z est remplacée par u octet dont le programmeur peut faire ce qu'il veut. L'idée est que chaque pixel/fragment se voit attribuer une valeur entière, généralement codée sur un octet, que les programmeurs peuvent faire varier à loisir. L'octet ajouté est appelé l''''octet de ''stencil'''''. Il a une certaine valeur, qui est calculée par la carte graphique, généralement par les ''shaders''. Il ne remplace pas la coordonnée de profondeur, mais s'ajoute à celle-ci.
Les octets de ''stencil'' sont placés dans le tampon de profondeur. L'ensemble forme un tableau qui associe 32 bits à chaque" pixel : 24 bits pour une coordonnée z, 8 pour l'octet de ''stencil''. Lors du passage d'un fragment les ROPs, la carte graphique lit le pixel correspondant, dans le tampon de profondeur. Il récupère la coordonnée z, mais aussi l'octet de ''stencil''. Puis il compare l'octet de ''stencil'' avec celui du fragment traité. Si le test échoue, le fragment ne passe pas à l'étape de test de profondeur et est abandonné. S'il passe, le tampon de ''stencil'' est mis à jour. Par mis à jour, on veut dire que le ROP peut faire diverses manipulations dessus : l'incrémenter, le décrémenter, le mettre à 0, inverser ses bits, remplacer par l'octet de ''stencil'' du fragment, etc. Les opérations possibles sont bien plus nombreuses qu'avec le tampon de profondeur, qui se contente de remplacer la coordonnée z par celle du fragment.
===Les fonctions héritées des ''blitters'' 2D===
Les ROPS implémentent aussi des techniques utilisées sur les ''blitters'' des anciennes cartes d'affichage 2D, comme l'application d''''opérations logiques''' sur chaque pixel enregistré dans le ''framebuffer''. Les opérations logiques en question peuvent prendre une à deux opérandes. Les opérandes sont soit un pixel lu dans le ''framebuffer'', soit un fragment envoyé au ROP. Les opérations logiques à un opérande peuvent inverser, mettre à 0 ou à 1 le pixel dans le ''framebuffer'', ou faire la même chose sur le fragment envoyé en opérande. Les opérations à deux opérandes lisent un pixel dans le framebuffer, et font un ET/OU/XOR avec le fragment opérande (un opérande peut être inversé). Elles sont utilisées pour faire du traitement d'image ou du rendu 2D, rarement pour du rendu 3D.
Les ROPs gèrent aussi des '''masques d'écritures''', qui permettent de décider si un pixel doit être écrit ou non en mémoire. Il est possible d'inhiber certaines écritures dans le ''framebuffer'', le tampon de profondeur ou le tampon de stencil. Inhiber la mise à jour d'un pixel dans le tampon de profondeur est utile pour gérer la transparence. Si un pixel est transparent, même partiellement, il ne faut pas mettre à jour le tampon de profondeur, et cela peut être géré par ce système de masquage. Les masquages des couleurs permettent de ne modifier qu'une seule composante R/G/B au lieu de modifier les trois en même temps, pour faire certains effets visuels.
==L'architecture matérielle d'un ROP==
Les ROP contiennent des circuits pour gérer la profondeur des fragments. Ils effectuent un test de profondeur, à savoir que les fragments correspondant à un même pixel sont comparés pour savoir lequel est devant l'autre. Ils contiennent aussi des circuits pour gérer la transparence des fragments. Le ROP gère aussi l'antialiasing, de concert avec l'unité de rastérisation. D'autres fonctionnalités annexes sont parfois implémentées dans les ROP. Par exemple, les vielles cartes graphiques implémentaient les effets de brouillards dans les ROPs. Le tout est suivi d'une unité qui enregistre le résultat final en mémoire, où masques et opérations logiques sont appliqués.
Les différentes opérations du ROP doivent se faire dans un certain ordre. Par exemple, gérer la transparence demande que les calculs de profondeur se fassent globalement après ou pendant le mélange ''alpha''. Ou encore, les masques et opérations logiques se font à la toute fin du rendu. L'ordre des opérations est censé être le suivant : test ''alpha'', test du ''stencil'', test de profondeur, mélange ''alpha''. Du moins, la carte graphique doit donner l'impression que c'est le cas. Elle peut optimiser le tout en traitant le tampon de profondeur, de couleur et de ''stencil'' en même temps, mais donner les résultats adéquats.
Un ROP est typiquement organisé comme illustré ci-dessous. Notons que les circuits de gestion de la profondeur et de la transparence sont séparés dans les schémas, mais il s'agit là d'une commodité qui ne reflète pas forcément l'implémentation matérielle. Et si ces deux circuits sont séparés, ils communiquent entre eux, notamment pour gérer la profondeur des fragments transparents.
[[File:Render Output Pipeline-processor.png|centre|vignette|upright=2|Render Output Pipeline-processor]]
Les ROPs récupèrent les fragments calculés par les pixels shaders et/ou les unités de texture, via un circuit d'interconnexion spécialisé. Chaque ROP est connecté à toutes les unités de ''shader'', même si la connexion n'est pas forcément directe. Toute unité de ''shader'' peut envoyer des pixels à n'importe quel ROP. Les circuits d'interconnexion sont généralement des réseaux d'interconnexion de type ''crossbar'', comme illustré ci-contre (le premier rectangle rouge).
Le ROP effectue beaucoup de lectures et écritures en mémoire vidéo. Or, la bande passante mémoire est limitée, ce qui fait que le ROP est un goulot d'étranglement assez important pour le rendu 3D. Heureusement, de nombreuses optimisations permettent d'optimiser le tout. Elles agissent sur la lecture du tampon de profondeur, mais aussi sur le ''framebuffer''.
===Le ''fast clear'' du ''framebuffer''===
Une première optimisation porte sur le ''framebuffer''. Le ''framebuffer''est souvent réutilisé d'une image sur l'autre. Quand une image a été envoyée à l'écran, le ''framebuffer'' est remis à zéro pour accueillir une nouvelle image. Et ce avec ou sans ''double buffering''. La mise à zéro est censée se faire en remettant réellement le ''framebuffer'' à zéro, en écrivant des 0 pour chaque pixel du ''framebuffer''. Mais il y a moyen de s'en passer.
Pour cela, l'idée est que le ''framebuffer'' est découpé en ''tiles'', des carrés de 4, 8, 16 pixels de côté. Les ''tiles'' ont généralement la même taille que les ''tiles'' utilisées pour la rastérisation, mais passons sur ce détail. L'idée est de mémoriser, pour chaque ''tile'', si elle est mise à 0 ou non. Il suffit de cela d'un seul bit par ''tile'', appelé le bit RESET. L'ensemble des bits RESET est mémorisé dans une petite mémoire SRAM, intégrée aux ROPs.
Lorsqu'on souhaite remettre à zéro le ''framebuffer'', il suffit de mettre à 0 tous les bits RESET dans cette SRAM, pas besoin d’accéder à la mémoire vidéo. Avant toute lecture dans le ''framebuffer'', le ROP lit cette SRAM pour vérifier si la ''tile'' en question a été remise à 0. Si ce n'est pas le cas, il lit le pixel voulu depuis le ''framebuffer''. Mais si c'est le cas, alors le ROP ne fait pas la lecture et fournit un pixel à zéro à la place, qui est utilisé pour le mélange ''alpha'' ou autre. La moindre écriture dans une ''tile'' met le bit RESET à 0 : la ''tile'' entière est considérée comme non-remise à zéro, même si un seul pixel a été modifié dedans.
Notons que l'usage d'une granularité par ''tile'' est un compromis. On peut ne peut pas utiliser un bit par pixel, car cela demanderait d'utiliser une SRAM énorme. De même, utiliser un seul bit pour tout le ''framebuffer'' ruinerait totalement l'optimisation : le ''framebuffer'' entier serait considéré comme non-RESET dès la première écriture d'un pixel dedans, on ne sauverait qu'un nombre trop limité d'accès mémoire.
===La z-compression===
La technique de '''z-compression''' compresse le tampon de profondeur. Plus précisément, elle découpe le tampon de profondeur en ''tiles'', en blocs carrés, qui sont compressés séparément les uns des autres. La taille des ''tiles'' est souvent la même que celle utilisée par le rastériseur pour la rastérisation grossière. Par exemple, la ''z-compression'' des cartes graphiques ATI radeon 9800, découpait le tampon de profondeur en ''tiles'' de 8 * 8 fragments, et les encodait avec un algorithme nommé DDPCM (''Differential differential pulse code modulation'').
Précisons que cette compression ne change pas la taille occupée par le tampon de profondeur, mais seulement la quantité de données lue/écrite. La raison est que les ''tiles'' doivent avoir une place fixe en mémoire. Par exemple, si une ''tile'' non-compressée prend 64 octets, on trouvera une ''tile'' tous les 64 octets en mémoire vidéo, afin de simplifier les calculs d'adresse, afin que le ROP sache facilement où se trouve la ''tile'' à lire/écrire. Avec une vraie compression, les ''tiles'' se trouveraient à des endroits très variables d'une image à l'autre.
Par contre, la z-compression réduit la quantité de données écrite dans le tampon de profondeur. Par exemple, au lieu d'écrire une ''tile'' non-compressée de 64 octets, on écrira une ''tile'' de seulement 6 octets, les 58 octets restants étant pas lus ou écrits. On obtient un gain en performance, pas en mémoire.
[[File:AMD HyperZ.svg|centre|vignette|upright=2|AMD HyperZ]]
Le format de compression ajoute un bit par ''tile'', qui indique si elle est compressée ou non. Le bit qui indique si la ''tile'' est compressée permet de laisser certaines ''tiles'' non-compressés, dans le cas où la compression ne permet pas de gagner de la place. La compression ajoute souvent un second bit, qui indique si la ''tile'' est à zéro ou non, sur le même modèle que pour le ''framebuffer''. Il accélère la remise à zéro du tampon de profondeur. Au lieu de réellement remettre tout le tampon de profondeur à 0, il suffit de réécrire un bit par ''tile''. Le gain en nombre d'accès mémoire peut se révéler assez impressionnant.
Les deux bits en question peuvent être placés à deux endroits différents. La première solution serait d'utiliser une portion de la mémoire vidéo, mais cela demanderait de faire deux lectures par accès au tampon de profondeur. La vraie solution est d'utiliser une SRAM reliée aux ROPs, qui est assez grande pour mémoriser tout le tampon de profondeur, du moins avec deux bits par ''tile''.
===Le cache de profondeur===
Une optimisation complémentaire ajoute une ou plusieurs mémoires caches dans le ROP, dans le circuit de profondeur. Ce '''cache de profondeur''' stocke des portions du tampon de profondeur qui ont été lues ou écrite récemment. Comme cela, pas besoin de les recharger plusieurs fois : on charge un bloc une fois pour toutes, et on le conserve pour gérer les fragments qui suivent.
Sur certaines cartes graphiques, les données dans le cache de profondeur sont stockées sous forme compressées dans le cache de profondeur, là encore pour augmenter la taille effective du cache. D'autres cartes graphiques ont un cache qui stocke des données décompressées dans le cache de profondeur. Tout est question de compromis entre accès rapide au cache et augmentation de la taille du cache.
Il faut savoir que les autres unités de la carte graphique peuvent lire le tampon de profondeur, en théorie. Cela peut servir pour certaines techniques de rendu, comme pour le ''shadowmapping''. De ce fait, il arrive que le cache de profondeur contienne des données qui sont copiées dans d'autres caches, comme les caches des processeurs de shaders. Le cache de profondeur n'est pas gardé cohérent avec les autres caches du GPU, ce qui signifie que les écritures dans le cache de profondeur ne sont pas propagées dans les autres caches du GPU. Si on modifie des données dans ce cache, les autres caches qui ont une copie de ces données auront une version périmée de la donnée. C'est souvent un problème, sauf dans le cas du cache de profondeur, pour lequel ce n'est pas nécessaire. Cela évite d'implémenter des techniques de cohérence des caches couteuses en circuits et en performance, alors qu'elles n'auraient pas d'intérêt dans ce cas précis.
===Le ''z-fast pass''===
Le ''z-fast pass'' améliore la performance des '''prépasses z''', une technique utilisée par de nombreux moteurs de jeux vidéo. L'idée est que le moteur de jeu effectue plusieurs passes, chacune faisant un truc précis, la prépasse z étant l'une de ces passes. Lors d'une prépasse z, le moteur de jeu calcule la scène 3D, rastérise l'image, et remplit le tampon de profondeur uniquement. Il ne place pas de textures, ne calcule pas de pixels shaders, il se préoccupe uniquement des coordonnées de profondeur des pixels. Au final, le rendu ne donne que le tampon de profondeur, qui est utilisé par les passes suivantes.
L'utilité est très variable, mais il y a deux raisons pour effectuer une prépasse z : la performance, mais aussi certains effets graphiques. Par exemple, les effets d'occlusion ambiante "''screen space''" utilisent le tampon de profondeur pour faire leur travail. Il en est de même pour les ''shadowmaps'', qui effectuent une prépasse z par ombre à afficher. Une autre utilisation est que cela permet d'utiliser élimination des pixels cachés très performante. On effectue une prépasse z pour calculer le tampon de profondeur final, qui est ensuite utilisé par les passes suivantes pour éliminer les pixels cachés. Ainsi, les pixels cachés ne sont pas texturés et pixel shadés, avec certitude.
Toujours est-il qu'une prépasse z utilise les ROP "à moitié", dans le sens où seul le tampon de profondeur est utilisé, par la gestion des couleurs. Mais il se trouve que les circuits qui servent pour le mélange ''alpha'' peuvent être réutilisés pour faire les comparaisons de profondeur ! Le résultat est que les ROP peuvent fonctionner à double vitesse lors d'une prépasse z ! Cela demande cependant de concevoir les circuits du ROP pour en profiter. L'optimisation est parfois appelée le '''''z-fast pass'''''.
Tous les GPU depuis la Geforce FX en sont capables. Il y a cependant quelques contraintes. Premièrement, le ROP doit être configuré de manière à n’accéder qu'au tampon de profondeur, ils ne doivent pas dessiner dans le ''framebuffer''. Le mélange '''alpha'' doit être désactivé, de même que l'alpha-test. D'autres contraintes supplémentaires sont parfois présentes, surtout sur les vieux GPUs. Par exemple, l'antialiasing doit être désactivé lors de la prépasse z. Et mine de rien, cela ne marche que pour les prépasses z pures. Par exemple, certaines techniques de rendu différé augmentent la prépasse z pour que celle-ci ne calcule pas que le tampon de profondeur, mais aussi d'autres informations comme les normales : elles ne profitent pas de cette optimisation.
==Pourquoi ne pas émuler les ROPs dans les ''pixel shader'' ?==
Les ROPs effectuent plusieurs opérations basiques, mais les deux plus importantes sont la gestion du tampon de profondeur et de la transparence. Par transparence, on veut parler du mélange ''alpha''. Pour la gestion du tampon de profondeur, on veut parler du ''z-test'', qui compare la profondeur de deux pixels/fragments. Il s'agit d'opérations simples, qu'un processeur de shader peut faire sans problèmes.
Par exemple, le ''z-test'' demande de faire plusieurs étapes :
* calculer l'adresse du pixel dans le tampon de profondeur ;
* lire le pixel dans le tampon de profondeur ;
* Faire la comparaison entre profondeurs ;
* Si le résultat de la comparaison est okay :
** écrire la nouvelle valeur z dans le tampon de profondeur, et écrire le nouveau pixel dedans.
Le mélange ''alpha'' demande lui de :
* calculer l'adresse du pixel dans le ''framebuffer'' ;
* lire le pixel dans le ''framebuffer'' ;
* faire des additions et multiplications pour le mélange ''alpha'' :
* écrire le nouveau pixel dans le ''framebuffer''.
Pour résumer il faut pouvoir faire : calcul d'adresse, lecture, écriture, addition, multiplication et comparaisons. Et toutes ces opérations sont supportées nativement par les processeurs de shaders, ce sont des instructions communes. Il est donc possible d'émuler les ROPs dans les pixels shaders. En pratique, c'est assez rare, et il y a une bonne explication à cela.
===Les GPU de type ''sort-last'' doivent "trier les pixels"===
Émuler les ROPs dans un ''pixel shader'' est trivial, comme on vient de le voir. Sauf que le test de profondeur est conçu pour traiter un pixel à la fois, idem pour le mélange ''alpha''. Si on ne traite pas l'image pixel par pixel, les deux algorithmes dysfonctionnent.
Pour donner un exemple, imaginons la situation illustrée ci-dessous. Supposons que l'on ait assez de processeurs de shaders pour traiter plusieurs triangles en même temps. Par malchance, les processeurs rendent en même temps deux triangles opaques qui se recouvrent à l'écran. Là où ils se recouvrent, les deux triangles vont générer deux fragments par pixel, et un seul sera le bon. Pas de chance, les deux fragments sont rendus en parallèle dans deux processeurs séparés. Les deux processeurs lisent la même donnée dans le tampon de profondeur et les deux fragments passent le ''z-test'', car ils n'ont aucun moyen de savoir la coordonnée z en cours de traitement dans l'autre processeur. Les deux processeurs vont alors écrire leur résultat en mémoire et c'est premier arrivé, premier servi. Le résultat n'est pas forcément celui attendu : le pixel le plus proche peut être écrit avant le plus lointain, ou inversement.
[[File:Situation où faire le z-test dans les pixel shaders dysfonctionne.png|centre|vignette|upright=2|Situation où faire le z-test dans les pixel shaders dysfonctionne]]
Pour obtenir un bon rendu, le GPU doit forcer le z-test à se faire fragment par fragment, du moins quand on regarde un pixel individuel. Il reste possible de traiter des pixels différents en parallèle, mais pas deux fragments d'un même pixel. En utilisant des processeurs de shaders qui travaillent en parallèle, cette contrainte est parfois brisée et le rendu donne des résultats incorrects. Le tampon de profondeur n'est pas conçu pour être parallélisé, idem pour le mélange ''alpha''. Il faut donc une sorte de point de synchronisation dans le pipeline pour éviter tout problème. Et c'est à ça que servent les ROPs.
Une explication alternative est la suivante. Les fragments doivent être rendus dans l'ordre de soumission. C'est à dire que des pixels qui sortent du rastériseur dans un certain ordre doivent être enregistré en mémoire dans ce même ordre. Et les pixels ne quittent pas le rastériseur dans le désordre non plus : des triangles arrivant au rastériseur dans un certain ordre seront traité dans ce même ordre.
Le problème est que les GPU étant massivement parallèle, les triangles et pixels seront traités dans le désordre, avant que leurs résultats soient remis en ordre. Pour les triangles/sommets, la remise en ordre se fait au niveau de l'assemblage de primitives, juste avant le rastériseur. Pour les fragments, la remise en ordre se fait dans les ROPs, en sortie des ''shaders'', à la fin du pipeline. Du moins, sur les GPU de type ''sort-last''. Les ROPs ne font donc pas que faire le ''z-test'' et le mélange ''alpha'', ils ont des circuits de remise en ordre pour ça, qui sont de plus fortement mélés au tampon de profondeur et au ''framebuffer''.
===Le traitement parallèle des fragments sur les GPU ''sort-last''===
Plus haut, j'ai dit qu'il doit être impossible de traiter en même temps deux fragments d'un même pixel. Mais il reste possible de traiter des pixels différents en parallèle, mais pas deux fragments d'un même pixel. Reste à faire en sorte de ne pas envoyer deux fragments d'un même pixel dans les processeurs de shaders.
Une solution pour cela serait de mémoriser, pour chaque pixel, si un ''pixel shader'' est en train de le traiter. Il suffit de mémoriser un bit par pixel pour cela, dans une table d'utilisation, concrètement une petite mémoire. Elle serait mise à jour par les processeurs de shaders, et consultée par le rastériseur. Quand le rastériseur génère un fragment, il consulte cette table, pour vérifier s'il y a conflit avec les fragments en cours de traitement. Il attend si c'est le cas, le pixel shader finira par finir de traiter le pixel au bout d'un moment. Mais l'inconvénient de cette solution est qu'elle a besoin d'une mémoire partagée par tous les processeurs de shaders, qui est difficile à concevoir sans faire des concessions en termes de performances.
Une autre solution serait de mémoriser tous les pixels en cours de traitement. Quand le rastériseur génère un fragment, il mémorise les coordonnées x,y de ce fragment à l'écran, dans une '''table des pixels occupés'''. Dès qu'un pixel shader se termine, la table des pixels occupés est mise à jour. Le rastériseur consulte cette table quand il génère un fragment, afin de détecter les conflits. S'il y a conflit, le rastériseur attend que le fragment conflictuel, en cours de traitement dans le pixel shader, soit traité.
L’inconvénient de la solution précédente est que la table des pixels occupés est techniquement une mémoire associative, une sorte de mémoire cache, qui est plus complexe qu'une simple RAM. Il est très difficile de créer une mémoire de ce genre qui soit capable de mémoriser plusieurs dizaines ou centaine de milliers de pixels, pour gérer une centaine de processeurs de shaders. Par contre, elle fonctionne pas trop mal pour un petit nombre de processeurs de shaders, qui fonctionnent à basse fréquence. Cela explique que les GPU pour PC ont des ROPs séparés des processeurs de ''shaders'' : ces GPU ont beaucoup trop de processeurs de shaders.
Par contre, quelques cartes graphiques destinées les smartphones et autres appareils mobiles émulent les ROPs dans les ''pixel shaders''. Mais il y a une bonne raison à cela : non seulement, ils n'ont que très peu de processeurs de shader, mais ce sont aussi des GPU en rendu à tuiles. L'avantage est qu'ils rendent une tile à la fois, ce qui fait qu'il y a besoin de tester les conflits entre fragments à l'intérieur d'une tile, pas pour l'écran complet. Et cela simplifie grandement les circuits de test, notamment la table des pixels occupés, qui est bien plus petite.
==Annexe : les ombres volumétriques==
Les '''ombres volumétriques''', ou ''Shadow Volumes'' en anglais, sont une technique de calcul des ombres dans une scène. Il est intéressant de les étudier, pour plusieurs raisons. Premièrement, elles sont un bon exemple d'utilisation du tampon de ''stencil'' abordé plus haut. Deuxièmement, les anciens GPUs des années 2000 implémentaient des optimisations pour les ombres volumétriques, qu'il est intéressant d'étudier pour leur intérêt historique.
Un des premiers jeux vidéo à avoir utilisé des ombres volumétriques était DOOM 3. La technique a été utilisée dans d'autres jeux, mais est tombée en désuétude. Il faut dire que ses avantages ne compensent pas ses inconvénients. Niveau avantages, les ombres créés sont précises au pixel près, contrairement aux ''shadowmaps'' qui sont limitées par leur résolution. Elles consomment peu de mémoire, vu qu'elles n'utilisent pas de textures pour les ombres. Enfin, un objet 3D va automatiquement projeter une ombre sur lui-même. Cependant, les ombres volumétriques demandent de faire beaucoup de calculs sur le processeur et a des performances très variables d'une scène 3D à l'autre. Ce cout en performance fait que les jeux modernes leur préférent les ''shadowmaps''.
===Les ombres volumétriques : principe===
Les ombres volumétriques font les calculs d'ombre pour chaque source de lumière et chaque objet présent dans une scène 3D. Du moins, chaque objet pouvant être éclairé par la source de lumière, le moteur du jeu vidéo fait la liste des objets concernés pour chaque source de lumière, et les calculs commencent. Pour chaque objet, le moteur détermine sa silhouette, vue depuis la source de lumière. Puis, pour chaque sommet de cette silhouette, il tire un trait partant de la source de lumière, passant par ce sommet, et de longueur infinie. L’ensemble des traits/plans délimite un '''volume d'ombre''' : tout pixel dans ce volume d'ombre sera dans l'ombre de cet objet, pour la source de lumière considérée.
Délimiter les volumes d'ombres était réalisé sur le CPU, du moins dans les jeux vidéo qui utilisaient cette technique. Il est possible de le faire sur le GPU, avec des ''geometry shaders'' ou des ''shaders'' plus élaborés, mais la technique a été abandonnée avant que cette possibilité soit utilisée.
[[File:Shadow volume illustration.png|centre|vignette|upright=2|Ombre volumétrique, source de lumière ponctuelle au centre.]]
Une implémentation naïve rend la scène deux fois : une fois complétement dans l'ombre, une fois complétement éclairée. Les deux sont combinées de manière à appliquer les ombres. La combinaison se fait pour chaque pixel : un pixel éclairé prendra le pixel dans l'image éclairée, un pixel dans l'ombre prendra le pixel dans l'image dans l'ombre. Pour déterminer si un pixel est dans l'ombre ou non, il existe plusieurs techniques, portant les noms de ''depth-fail'', ''depth pass'' et ''XOR test''. Mais toutes donnent le même résultat : le tampon de ''stencil'' indique, pour chaque pixel, s'il est dans l'ombre ou non.
===L’implémentation de type ''depth pass===
Imaginons que le moteur de jeu tire, pour chaque pixel, un rayon partant de la caméra et qui s'arrête sur le premier objet visible. Le rayon va potentiellement intersecter un ou plusieurs volumes d'ombre sur son trajet. Il peut soit rentrer dans un volume d'ombre, soit en sortir. L'idée est alors de compter les entrées et sorties des volumes d'ombre, en partant de la caméra. Pour cela, chaque octet de ''stencil'' est initialisé à zéro. L'entrée du rayon dans un volume d'ombre incrémente l'octet de ''stencil'', la sortie le décrémente. Le pixel est dans l'ombre si l'octet de ''stencil'' associé a une valeur positive, éclairé s'il est à zéro.
[[File:Depth pass shadow volume.png|centre|vignette|upright=2|Détermination de l'ombrage d'un pixel avec des ombres volumétriques.]]
La méthode de la '''''Depth pass''''' fait ce comptage sans tirer de rayon proprement dit. L'idée est qu'un volume d'ombre est considéré comme un volume géométrique transparent. Le volume d'ombre est délimité par plusieurs faces, chacune étant globalement trapézoïdale, qui est considérée comme un ''quad''. Il est donc possible d'utiliser l'élimination des surfaces cachées pour savoir si un volume d'ombre se trouve devant ou derrière un objet. L'idée est de rendre la scène une première fois, avec une ''pré-passe z''. Le tampon de profondeur obtenu avec cette pré-passe est utilisée par les passes suivantes, pour déterminer si les volumes d'ombres sont situés devant ou derrière l'objet à rendre.
Une implémentation naïve est la suivante. La scène est rendue une seconde fois, après la pré-passe z. Lors de cette seconde passe, les volumes d'ombre sont considérés comme des objets géométriques. Lorsqu'une face d'un volume d'ombre est rendue, le test de profondeur indique si cette face est située devant l'objet ou non. Si c'est le cas, le tampon de ''stencil'' est incrémenté. Un problème est qu'en faisant cela, les faces avant et arrières du volume d'ombre sont testées. Le tampon de ''stencil'' nous dit si le volume d'ombre est devant, mais on ne sait pas si une face testée correspond à une entrée ou une sortie d'un volume d'ombre.
Pour corriger ce problème, l'image est rendue en deux passes, après la pré-passe z. Une première passe utilise le ''back-face culling'', qui élimine les faces qui tournent le dos à la caméra. Pour les volumes d’ombre, de telles faces correspondent à des sorties de volume d'ombre. Cette passe incrémente le tampon de ''stencil''. La seconde utilise l'inverse, le ''front face culling'', pour éliminer les faces qui font face à la caméra. Elles correspondent à des entrées de volume d'ombre. Cette passe décrémente le tampon de ''stencil''.
L'implémentation obtenue est dite ''depth pass''. Elle a pour seul défaut de ne pas marcher quand la caméra est dans l'ombre, pour diverses raisons techniques. Pour comprendre pourquoi, imaginez qu'il n'y a qu'une seule ombre dans une scène 3D et que la caméra est dedans. Le ''stencil buffer'' ne verra qu'une face d'ombre "sortante", donc le tampon de ''stencil'' contiendra un -1 pour chaque pixel. Et vu que le ''stencil'' ne gère pas les valeurs non-signées, il y a un problème qu'il faut résoudre. La technique dite du ''depth fail'' n'a pas ce problème, mais nous n'en parlerons pas ici.
===Les optimisations matérielles des ombres volumétriques===
Les GPU des années 2000 ont implémenté de nombreuses optimisations pour accélérer les ombres volumétriques.
Une première optimisation est celle du '''tampon de ''stencil'' à deux faces''' (''two faceds stencil buffer''). L'idée est que le tampon de ''stencil'' contient deux octets de ''stencil'' par pixel. L'un est utilisé pour compter les faces de volume d'ombre qui font face à la caméra, l'autre pour celles qui tournent le dos à la caméra. Pas besoin de faire deux passes consécutives, avec soi le ''back-face culling'' ou le ''front-face culling'' activé.
Une autre optimisation modifie la manière dont le ''stencil buffer'' gère les débordements d'entier, à savoir ce qu'il se passe quand un octet de ''stencil'' dépasse sa valeur maximale de 255. En théorie, il sature, à savoir qu'incrémenter un octet de ''stencil'' à 255 le laisse à 255. Idem si on décrémente un octet de ''stencil'' à zéro : il reste à zéro. Mais pour les ombres volumétriques, il est préférable d'utiliser l'arithmétique classique, à savoir qu'incrémenter un octet à 255 le fait passer à 0, alors que décrémenter un octet à 0 le fait passer à 255. Le ''stencil buffer'' peut être configuré pour fonctionner dans l'un des deux modes : saturation ou débordements classiques. Il est aussi possible d'ajouter le support des entiers signés au ''stencil buffer''.
Une autre optimisation est le '''''depth clamp'''''. Elle permet de désactiver le clipping pour le ''near plane'' et le ''far plane''. En effet, l'algorithme de ''depth pass'' a besoin du ''view frustrum'', mais pas du ''near plane'' et du ''far plane''. Les calculs de clipping pour ces deux plans sont inutiles, et ne doivent idéalement pas être fait. Le ''depth clamp'' permet de configurer le rastériseur de manière à activer ou désactiver le clipping pour le ''near plane'' et le ''far plane''.
Une dernière optimisation, non-spécifique aux ombres volumétriques, est le '''''scissor test''''', qui permet de limiter le rendu pour une partie de l'écran. Elle accélère le traitement des ombres qui n'impactent qu'une partie de l'écran. Si le moteur du jeu a déterminé à l'avance qu'une source de lumière n'a d'effet que sur une petite partie de l'écran, seule celle-ci est rendue. Le '''''Depth Bounds Test''''' est l'équivalent, mais pour le tampon de profondeur. Il permet de ne rendre que les volumes d'ombres situés entre une profondeur minimale et une profondeur maximale.
<noinclude>
{{NavChapitre | book=Les cartes graphiques
| prev=Les unités de texture
| prevText=Les unités de texture
| next=Les écritures en VRAM hors ROPs
| nextText=Les écritures en VRAM hors ROPs
}}{{autocat}}
</noinclude>
6w8ghlda5185nvyudniy6fy8xrumlq4
Fonctionnement d'un ordinateur/Les transistors et portes logiques
0
71050
768310
768204
2026-06-22T19:04:46Z
Mewtow
31375
/* L'additionneur Manchester Carry Chain */
768310
wikitext
text/x-wiki
Dans le chapitre précédent, nous avons abordé les portes logiques. Dans ce chapitre, nous allons voir qu'elles sont fabriquées avec des composants électroniques que l'on appelle des '''transistors'''. Ces derniers sont reliés entre eux pour former des circuits plus ou moins compliqués. Pour donner un exemple, sachez que les derniers modèles de processeurs peuvent utiliser près d'un milliard de transistors.
==Les transistors MOS==
[[File:Transistor basic flow.svg|vignette|Un transistor est un morceau de conducteur, dont la conductivité est contrôlée par sa troisième broche/borne.]]
Les transistors possèdent trois '''broches''', des pattes métalliques sur lesquelles on connecte des fils électriques. On peut appliquer une tension électrique sur ces broches, qui peut représenter soit 0 soit 1. Sur ces trois broches, il y en a deux entre lesquelles circule un courant, et une troisième qui commande le courant. Le transistor s'utilise le plus souvent comme un interrupteur commandé par sa troisième broche. Le courant qui traverse les deux premières broches passe ou ne passe pas selon ce qu'on met sur la troisième.
Il existe plusieurs types de transistors, mais les deux principaux sont les transistors bipolaires et les transistors MOS. De nos jours, les transistors utilisés dans les ordinateurs sont tous des '''transistors MOS'''. Les raisons à cela sont multiples, mais les plus importantes sont les suivantes. Premièrement, les transistors bipolaires sont plus difficiles à fabriquer et sont donc plus chers. Deuxièmement, ils consomment bien plus de courant que les transistors MOS. Et enfin, les transistors bipolaires sont plus gros, ce qui n'aide pas à miniaturiser les puces électroniques. Tout cela fait que les transistors bipolaires sont aujourd'hui tombés en désuétude et ne sont utilisés que dans une minorité de circuits.
===Les types de transistors MOS : PMOS et NMOS===
Sur un transistor MOS, chaque broche a un nom, nom qui est indiqué sur le schéma ci-dessous.On distingue ainsi le '''drain''', la '''source''' et la '''grille''' On l'utilise le plus souvent comme un interrupteur commandé par sa grille. Appliquez la tension adéquate et la liaison entre la source et le drain se comportera comme un interrupteur fermé. Mettez la grille à une autre valeur et cette liaison se comportera comme un interrupteur ouvert.
Il existe deux types de transistors CMOS, qui diffèrent entre autres par le bit qu'il faut mettre sur la grille pour les ouvrir/fermer :
* les transistors NMOS qui s'ouvrent lorsqu'on envoie un zéro sur la grille et se ferment si la grille est à un ;
* et les PMOS qui se ferment lorsque la grille est à zéro, et s'ouvrent si la grille est à un.
[[File:Td7bfig2.png|centre|vignette|upright=2|Illustration du fonctionnement des transistors NMOS et PMOS.]]
Voici les symboles de chaque transistor.
{|
|[[File:Transistor CMOS.png|vignette|upright=0.5|Transistor CMOS]]
|[[File:IGFET N-Ch Enh Labelled simplified.svg|vignette|upright=0.5|Transistor MOS à canal N (NMOS).]]
|[[File:IGFET P-Ch Enh Labelled simplified.svg|vignette|upright=0.5|Transistor MOS à canal P (PMOS).]]
|}
===L'anatomie d'un transistor MOS===
À l'intérieur du transistor, on trouve simplement une plaque en métal reliée à la grille appelée l'armature, un bout de semi-conducteur entre la source et le drain, et un morceau d'isolant entre les deux. Pour rappel, un semi-conducteur est un matériau qui se comporte soit comme un isolant, soit comme un conducteur, selon les conditions auxquelles on le soumet. Dans un transistor, son rôle est de laisser passer le courant, ou de ne pas le transmettre, quand il faut. C'est grâce à ce semi-conducteur que le transistor peut fonctionner en interrupteur : interrupteur fermé quand le semi-conducteur conduit, ouvert quand il bloque le courant. La commande de la résistance du semi-conducteur (le fait qu'il laisse passer ou non le courant) est réalisée par la grille, comme nous allons le voir ci-dessous.
[[File:Transistor CMOS - 1.png|centre|vignette|upright=2|Transistor CMOS]]
Suivant la tension que l'on place sur la grille, celle-ci va se remplir avec des charges négatives ou positives. Cela va entrainer une modification de la répartition des charges dans le semi-conducteur, ce qui modulera la résistance du conducteur. Prenons par exemple le cas d'un transistor NMOS et étudions ce qui se passe selon la tension placée sur la grille. Si on met un zéro, la grille sera vide de charges et le semi-conducteur se comportera comme un isolant : le courant ne passera pas. En clair, le transistor sera équivalent à un interrupteur ouvert. Si on met un 1 sur la grille, celle-ci va se remplir de charges. Le semi-conducteur va réagir et se mettre à conduire le courant. En clair, le transistor se comporte comme un interrupteur fermé.
{|
|[[File:Transistor CMOS - 3.png|vignette|upright=1.5|Transistor NMOS fermé.]]
|[[File:Transistor CMOS - 4.png|vignette|upright=1.5|Transistor NMOS ouvert.]]
|}
===La tension de seuil d'un transistor===
Le fonctionnement d'un transistor est légèrement plus complexe que ce qui a été dit auparavant. Mais pour rester assez simple, disons que son fonctionnement exact dépend de trois paramètres : la tension d'alimentation, le courant entre drain et source, et un nouveau paramètre appelé la tension de seuil.
Appliquons une tension sur la grille d'un transistor NMOS. Si la tension de grille reste sous un certain seuil, le transistor se comporte comme un interrupteur fermé. Le seuil de tension est appelé, très simplement, la '''tension de seuil'''. Au-delà de la tension de seuil, le transistor se comporte comme un interrupteur ouvert, il laisse passer le courant. La valeur exacte du courant dépend de la tension entre drain et source, soit la tension d'alimentation. Elle aussi dépend de la différence entre tension de grille et de seuil, à savoir <math>U_G - U_\text{seuil}</math>.
Le paragraphe qui va suivre est optionnel, mais détaille un peu plus le fonctionnement d'un transistor MOS. Tout ce qu'il faut comprendre est que la tension de seuil est une tension minimale pour ouvrir le transistor. Le plus important à retenir est que l'on ne peut pas baisser la tension d'alimentation sous la tension de seuil, ce qui est un léger problème en termes de consommation énergétique. Ce détail reviendra plus tard dans ce cours, quand nous parlerons de la consommation d'énergie des circuits électroniques.
Dans les cas que nous allons voir dans ce cours, la tension d'alimentation est plus grande que <math>U_G - U_\text{seuil}</math>. Le courant est alors maximal, il est proportionnel à <math>U_G - U_\text{seuil}</math>. Le transistor ne fonctionne alors pas comme un amplificateur, le courant reste le même. Si la tension d'alimentation est plus petite que <math>U_G - U_\text{seuil}</math>, le transistor est en régime linéaire : le courant de sortie est proportionnel à <math>U_G - U_\text{seuil}</math>, ainsi qu'à la tension d'alimentation. Le transistor fonctionne alors comme un amplificateur de courant, dont l'intensité de l'amplification est commandée par la tension.
[[File:MOSFET enhancement-mode n-channel en.svg|centre|vignette|upright=2.5|Relations entre tensions et courant d'un MOSFET à dopage N.]]
==La technologie CMOS==
Les portes logiques que nous venons de voir sont actuellement fabriquées en utilisant des transistors. Il existe de nombreuses manières pour concevoir des circuits à base de transistors, qui portent les noms de DTL, RTL, TLL, CMOS et bien d'autres. Les techniques anciennes concevaient des portes logiques en utilisant des diodes, des transistors bipolaires et des résistances. Mais elles sont aujourd'hui tombées en désuétudes dans les circuits de haute performance. De nos jours, on n'utilise que des logiques MOS (''Metal Oxyde Silicium''), qui utilisent des transistors MOS vus plus haut dans ce chapitre, parfois couplés à des résistances. On distingue :
* La '''logique NMOS''', qui utilise des transistors NMOS associés à des résistances.
* La '''logique PMOS''', qui utilise des transistors PMOS associés à des résistances.
* La '''logique CMOS''', qui utilise des transistors PMOS et NMOS, sans résistances.
Dans cette section, nous allons montrer comment fabriquer des portes logiques en utilisant la '''technologie CMOS'''. Avec celle-ci, chaque porte logique est fabriquée à la fois avec des transistors NMOS et des transistors PMOS. On peut la voir comme un mélange entre la technologie PMOS et NMOS. Tout circuit CMOS est divisé en deux parties : une intégralement composée de transistors PMOS et une autre de transistors NMOS. Chacune relie la sortie du circuit soit à la masse, soit à la tension d'alimentation.
[[File:Principe de la conception de circuit en technologie CMOS.png|centre|vignette|upright=2|Principe de conception d'une porte logique/d'un circuit en technologie CMOS.]]
La première partie relie la tension d'alimentation à la sortie, mais uniquement quand la sortie doit être à 1. Si la sortie doit être à 1, des transistors PMOS vont se fermer et connecter tension et sortie. Dans le cas contraire, des transistors s'ouvrent et cela déconnecte la liaison entre sortie et tension d'alimentation. L'autre partie du circuit fonctionne de la même manière que la partie de PMOS, sauf qu'elle relie la sortie à la masse et qu'elle se ferme quand la sortie doit être mise à 0
[[File:Fonctionnement d'un circuit en logique CMOS.png|centre|vignette|upright=2|Fonctionnement d'un circuit en logique CMOS.]]
Dans ce qui va suivre, nous allons étudier la porte NON, la porte NAND et la porte NOR. La porte de base de la technologie CMOS est la porte NON, les portes NAND et NOR ne sont que des versions altérées de la porte NON qui ajoutent des entrées et quelques transistors. Les autres portes, comme la porte ET et la porte OU, sont construites à partir de ces portes. Nous parlerons aussi de la porte XOR, qui est un peu particulière.
===La porte NON===
Cette porte est fabriquée avec seulement deux transistors, comme indiqué ci-dessous.
[[File:Porte NON fabriquée avec des transistors CMOS. 01.jpg|centre|vignette|upright=1|Porte NON fabriquée avec des transistors CMOS.]]
Si on met un 1 en entrée de ce circuit, le transistor du haut va fonctionner comme un interrupteur ouvert, et celui du bas comme un interrupteur fermé : la sortie est reliée au zéro volt, et vaut donc 0. Inversement, si on met un 0 en entrée de ce petit montage électronique, le transistor du bas va fonctionner comme un interrupteur ouvert, et celui du haut comme un interrupteur fermé : la sortie est reliée à la tension d'alimentation, et vaut donc 1.
[[File:Porte NON fabriquée avec des transistors CMOS - fonctionnement.png|centre|vignette|upright=2|Porte NON fabriquée avec des transistors CMOS - fonctionnement.]]
===Les portes NAND et NOR===
Passons maintenant aux portes logiques à plusieurs entrées. Pour celles-ci, on va devoir utiliser plus de transistors que pour la porte NON, ce qui demande de les organiser un minium. Une porte logique à deux entrées demande d'utiliser au moins deux transistors par entrée : un transistor PMOS et un NMOS par entrée. Rappelons qu'un transistor est associé à une entrée : l'entrée est directement envoyée sur la grille du transistor et commande son ouverture/fermeture. Pour les portes logiques à 3, 4, 5 entrées, la logiques est la même : au minimum deux transistors par entrée, un PMOS et un NMOS.
Nous allons d'abord voir le cas d'une porte NOR/NAND en CMOS. Avec elles, les transistors sont organisées de deux manières, appelées '''transistors en série''' (l'un après l'autre, sur le même fil) et '''transistors en parallèle''' (sur des fils différents). Le tout est illustré ci-dessous. Avec des transistors en série, plusieurs transistors NMOS ou deux PMOS se suivent sur le même fil, mais on ne peut pas mélanger NMOS et PMOS sur le même fil.
[[File:Transistors CMOS en série et en parallèle.png|centre|vignette|upright=2|Transistors CMOS en série et en parallèle]]
====Les portes NAND/NOR à deux entrées====
Voyons d'abord le cas des portes NAND/NOR à deux entrées. Elles utilisent deux transistors NMOS et deux PMOS.
Avec des transistors en série, deux transistors NMOS ou deux PMOS se suivent sur le même fil, mais on ne peut pas mélanger NMOS et PMOS sur le même fil. Avec des transistors en parallèle, c'est l'exact inverse. L'idée est de relier la tension d'alimentation à la sortie à travers deux PMOS transistors distincts, chacun sur son propre fil, sa propre connexion indépendante des autres. Pour la masse (0 volt), il faut utiliser deux transistors NMOS pour la relier à la sortie, avec là encore chaque transistor NMOS ayant sa propre connexion indépendante des autres. En clair, chaque entrée commande un transistor qui peut à lui seul fermer le circuit.
On rappelle deux choses : chaque transistor est associée à une entrée sur sa grille, un transistor se ferme si l'entrée vaut 0 pour des transistors PMOS et 1 pour des NMOS. Avec ces deux détails, on peut expliquer comment fonctionnent des transistors en série et en parallèle. Pour résumer, les transistors en série ferment la connexion quand toutes les entrées sont à 1 (NMOS) ou 0 (PMOS). Avec les transistors en parallèle, il faut qu'une seule entrée soit à 1 (NMOS) ou 0 (PMOS) pour que la connexion se fasse.
Une porte NOR met sa sortie à 1 si toutes les entrées sont à 0, à 0 si une seule entrée vaut 1. Pour reformuler, il faut connecter la sortie à la tension d'alimentation si toutes les entrées sont à 0, ce qui demande d'utiliser des transistors PMOS en série. Pour gérer le cas d'une seule entrée à 1, il faut utiliser deux transistors en parallèle entre la masse et la sortie. Le circuit obtenu est donc celui obtenu dans le premier schéma. Le même raisonnement pour une porte NAND donne le second schéma.
{|
|[[File:Porte NOR fabriquée avec des transistors. 02.png|centre|vignette|upright=1|Porte NOR fabriquée avec des transistors.]]
|[[File:Porte NAND fabriquée avec des transistors. 04.png|centre|vignette|upright=1|Porte NAND fabriquée avec des transistors.]]
|}
Leur fonctionnement s'explique assez bien si on regarde ce qu'il se passe en fonction des entrées. Suivant la valeur de chaque entrée, les transistors vont se fermer ou s'ouvrir, ce qui va connecter la sortie soit à la tension d'alimentation, soit à la masse.
Voici ce que cela donne pour une porte NAND :
[[File:Porte NAND fabriquée avec des transistors - Fonctionnement.png|centre|vignette|upright=2|Porte NAND fabriquée avec des transistors.]]
Voici ce que cela donne pour une porte NOR :
[[File:Porte NOR fabriquée avec des transistors - Fonctionnement.png|centre|vignette|upright=2|Porte NOR fabriquée avec des transistors.]]
====Les portes NAND/NOR/ET/OU à plusieurs entrées====
Les portes NOR/NAND à plusieurs entrées sont construites à partir de portes NAND/NOR à deux entrées auxquelles on rajoute des transistors. Il y a autant de transistors en série que d'entrée, pareil pour les transistors en parallèle. Leur fonctionnement est similaire à leurs cousines à deux entrées. Les portes ET et OU à plusieurs entrées sont construites à partie de NAND/NOR suivies d'une porte NON.
{|
|[[File:NAND plusieurs entrées.png|vignette|NAND plusieurs entrées]]
|[[File:NOR plusieurs entrées.png|vignette|NOR plusieurs entrées]]
|}
En théorie, on pourrait créer des portes avec un nombre arbitraire d'entrées avec cette méthode. Cependant, au-delà d'un certain nombre de transistors en série/parallèle, les performances s'effondrent rapidement. Le circuit devient alors trop lent, sans compter que des problèmes purement électriques surviennent. En pratique, difficile de dépasser la dizaine d'entrées. Dans ce cas, les portes sont construites en assemblant plusieurs portes NAND/NOR ensemble. Et faire ainsi marche nettement mieux pour fabriquer des portes ET/OU que pour des portes NAND/NOR.
====Les portes ET/OU sont fabriquées à partir de NAND/NOR en CMOS====
En logique CMOS, les portes logiques ET et OU sont construites en prenant une porte NAND/NOR et en mettant une porte NON sur sa sortie. Il est théoriquement possible d'utiliser uniquement des transistors en série et en parallèle, mais cette solution utilise plus de transistors.
{|
|[[File:CMOS AND Layout.svg|vignette|Porte ET en CMOS]]
|[[File:CMOS OR.svg|vignette|Porte OU en CMOS]]
|}
Pour ce qui est des portes ET/OU avec beaucoup d'entrées, il est fréquent qu'elles soit construites en combinant plusieurs portes ET/OU moins complexes. Par exemple, une porte ET à 32 entrées sera construite à partir de portes à seulement 4 ou 5 entrées. Il existe cependant une alternative qui se marie nettement mieux avec la logique CMOS. Rappelons qu'en logique CMOS, les portes NAND et NOR sont les portes à plusieurs entrées les plus simples à fabriquer. L'idée est alors de combiner des portes NAND/NOR pour créer une porte ET/OU.
Voici la comparaison entre les deux solutions pour une porte ET :
{|
|[[File:12 input AND gate via cascade of AND gates.svg|vignette|ET plusieurs entrées]]
|[[File:12-input AND gate from NAND and NOR.svg|vignette|ET plusieurs entrées]]
|}
Voici la comparaison entre les deux solutions pour une porte OU :
{|
|[[File:12-input OR gate via cascade of OR gates.svg|vignette|OU plusieurs entrées]]
|[[File:12-input OR gate via NOR and NAND gates.svg|vignette|OU plusieurs entrées]]
|}
D'autres portes mélangent transistors en série et en parallèle d'une manière différente. Les portes ET-OU-NON et OU-ET-NON en sont un bon exemple.
===Une méthode générale===
Il existe une méthode générale pour créer des portes logiques à deux entrées. Avec elle, il faut repartir du montage avec deux transistors NMOS/PMOS en série. En théorie, il permet de relier la sortie à la tension d'alimentation/zéro volt si toutes les entrées sont à 0 (PMOS) ou 1 (NMOS). L'idée est de regarder ce qui se passe si on fait précéder l'entrée d'un transistor par une porte NON. Pour deux transistors, cela fait 4 possibilités, 8 au total si on fait la différence entre PMOS et NMOS. Voici les valeurs d'entrées qui ferment le montage à transistor en série, suivant l’endroit où on place la porte NON.
[[File:Transistors CMOS en série.png|centre|vignette|upright=2|Transistors CMOS en série]]
Mine de rien, avec ces 8 montages de base, on peut créer n'importe quelle porte logique à deux entrées. Il faut juste se souvenir que d'après les règles du CMOS, les deux transistors PMOS se placent entre la tension d'alimentation et la sortie, et servent à mettre la sortie à 1. Pour les deux transistors NMOS, ils sont reliés à la masse et mettent la sortie à 0. Pour mieux comprendre, prenons l'exemple d'une porte XOR.
Appliquons la méthode que je viens d'expliquer avec une porte XOR. Le résultat est sous-optimal, mieux vaut fabriquer une porte XOR en combinant d'autres portes logiques, mais c'est pour l'exemple. L'idée est très simple : on prend la table de vérité de la porte logique, et on associe deux transistors en série pour chaque ligne. Regardons d'abord la table de vérité ligne par ligne :
{|class="wikitable"
|-
!Entrée 1!!Entrée 2!!Sortie
|-
||0||0||0
|-
||0||1||1
|-
||1||0||1
|-
||1||1||0
|}
La première ligne a ses deux entrées à 0 et sort un 0. La sortie est à 0, ce qui signifie qu'il faut regarder sur la ligne des transistors NMOS, qui connectent la sortie à la masse. Le montage qui se ferme quand les deux entrées sont à 0 est celui tout en bas à droite du tableau précédent, à savoir deux transistors NMOS avec deux portes NON.
Les deux lignes du milieu ont une entrée à 0 et une à 1, et leur sortie à 1. La sortie à 1 signifie qu'il faut regarder sur la ligne des transistors PMOS, qui connectent la tension d'alimentation à la sortie. Les deux montages avec deux entrées différentes sont les deux situés au milieu, avec deux transistors PMOS et une porte logique.
La dernière ligne a ses deux entrées à 1 et sort un 0. La sortie est à 0, ce qui signifie qu'il faut regarder sur la ligne des transistors NMOS, qui connectent la sortie à la masse. Le montage qui se ferme quand les deux entrées sont à 1 est celui tout en bas à gauche du tableau précédent, à savoir deux transistors NMOS seuls.
En combinant ces quatre montages, on trouve le circuit suivant. Notons qu'il n'y a que deux portes NON marquées en vert et bleu : on a juste besoin d'inverser la première entrée et la seconde, pas besoin de portes en plus. Les portes NOn sont en quelque sorte partagées entre les transistors PMOS et NMOS.
[[File:Cmos xor.svg|centre|vignette|upright=1|class=transparent|Porte XOR en logique CMOS.]]
Si les deux entrées sont à 1, alors les deux transistors en bas à gauche vont se fermer et connecter la sortie au 0 volt, les trois autres groupes ayant au moins un transistor ouvert. Si les deux entrées sont à 0, alors les deux transistors en bas à droite vont se fermer et connecter la sortie au 0 volt, les autres quadrants ayant au moins un transistor ouvert. Et pareil quand les deux bits sont différents : un des deux quadrants aura ses deux transistors fermés, alors que les autres auront au moins un transistor ouvert, ce qui connecte la sortie à la tension d'alimentation.
On peut construire la porte NXOR sur la même logique. Et toutes les portes logiques peuvent se construire avec cette méthode. Le nombre de transistors est alors le même : on utilise 12 transistors au total : 4 paires de transistors en série, 4 transistors en plus pour les portes NON. Que ce soit pour la porte XOR ou NXOR, on économise beaucoup de transistors comparés à la solution naïve, qui consiste à utiliser plusieurs portes NON/ET/OU. Si on ne peut pas faire mieux dans le cas de la porte XOR/NXOR, sachez cependant que les autres portes construites avec cette méthode utilisent plus de transistors que nécessaire. De nombreuses simplifications sont possibles, comme on le verra plus bas.
Dans les faits, la méthode n'est pas utilisée pour les portes XOR. À la place, les portes XOR sont construites à base d'autres portes logiques plus simples, comme des portes NAND/NOR/ET/OU. Le résultat est que l'on a un circuit à 10 transistors, contre 12 avec la méthode précédente.
[[File:CMOS10TrXOR.svg|centre|vignette|Porte XOR en CMOS en 10 transistors.]]
===Les circuits plus complexes (''full adder'', ...)===
Il est possible de fusionner plusieurs portes ET-OU-NON en un seul circuit à transistors CMOS, ce qui permet des simplifications assez impressionnantes. Pour donner un exemple, le schéma suivant compare l'implémentation d'un circuit qui fait un ET entre les deux premières entrées, puis un NOR entre le résultat du ET et la troisième entrée. L'implémentation à droite du schéma avec une porte ET et une porte NOR prend 10 transistors. L'implémentation la plus simple, à gauche du schéma, prend seulement 6 transistors.
[[File:AOI21 complex vs standard gates.svg|centre|vignette|upright=1.5|Porte ET-OU-NON à trois entrées (de type 2-1) à gauche, contre la combinaison de plusieurs portes à droite.]]
Une conséquence est que des circuits assez complexes gagnent à être fabriqués directement avec des transistors. Prenons l'exemple de l'additionneur complet. Une implémentation naïve, avec 5 portes logiques, utilise beaucoup de transistors. Deux portes XOR, deux portes OU et une porte ET, cela dépasse la trentaine de transistors. Faisons le compte : 10 transistors par porte XOR, 6 pour les trois autres portes, cela fait 38 transistors. Les additionneurs des processeurs modernes sont optimisés directement au niveau des transistors, pour leur permettre d'économiser des transistors. Par exemple, l'implémentation suivante en utilise seulement 24 !
[[File:Inverting full adder CMOS 24T.svg|centre|vignette|upright=1.5|Additionneur complet fabriqué avec 24 transistors.]]
Et c'est sans compter que l'additionneur complet naïf n'est pas forcément le top du top en termes de performances. Là encore, une implémentation avec des transistors peut être optimisée pour être plus rapide, notamment au niveau du calcul de la retenue, ou au contraire d'économiser des transistors. Tout dépend de l'objectif visé, certains circuit optimisant à fond pour la vitesse, d'autres pour le nombre de transistors, d'autres font un compromis entre les deux. Les circuits de ce genre sont très nombreux, trop pour qu'on puisse les citer.
==La ''pass transistor logic''==
La '''''pass transistor logic''''' est une forme particulière de technologie CMOS, une version non-conventionnelle. Avec le CMOS normal, la porte de base est la porte NON. En modifiant celle-ci, on arrive à fabriquer des portes NAND, NOR, puis les autres portes logiques. Les transistors sont conçus de manière à connecter la sortie, soit la tension d'alimentation, soit la masse. Avec la ''pass transistor logic'', le montage de base est un circuit interrupteur, qui connecte l'entrée directement sur la sortie. Le circuit interrupteur n'est autre que les portes à transmission vues il y a quelques chapitres.
La ''pass transistor logic'' a été utilisée dans des processeurs commerciaux, comme dans l'ARM1, le premier processeur ARM. Sur l'ARM1, les concepteurs ont décidé d'implémenter certains circuits avec des multiplexeurs. La raison n'est pas une question de performance ou d'économie de transistors, juste que c'était plus pratique à fabriquer, sachant que le processeur était le premier CPU ARM de l'entreprise.
S'il est intéressant de voir la ''pass transistor logic'', c'est qu'elle est souvent utilisée pour simplifier certains circuits CMOS normaux. Par exemple, il est possible d'implémenter toutes les portes logiques en CMOS normal, sauf la porte XOR qui est implémentée avec la ''pass transistor logic''. Cela permet une petite économie de circuits, vu que la porte XOR est bien plus simple en ''pass transistor logic''. La ''pass transistor logic'' est aussi utilisée pour simplifier les multiplexeurs et les démultiplexeurs, et certains additionneurs. Aussi, ne soyez pas étonné si nous revenons sur certains circuits vus dans les chapitres précédents, dans cette section.
===La porte à transmission===
Le circuit de base est une porte logique que nous n'avons pas encore vu pour le moment, appelée la '''porte à transmission'''. Elle agit comme un interrupteur commandé par une entrée de commande. Pour rappel, un interrupteur fermé laisse passer le courant, alors qu'un interrupteur fermé ne le laisse pas passer. La porte à transmission fait pareil : soit elle connecte l'entrée et la sortie, soit elle les déconnecte. Pour choisir entre les deux, une porte à transmission possède une entrée de commande sur laquelle on envoie un bit de commande. La porte est fermée si le bit de commande est à 1, ouvert s'il est à 1.
[[File:Tristate buffer.svg|centre|vignette|upright=2|Porte à transmission.]]
Il est possible de la voir comme une porte OUI améliorée dont la table de vérité est celle-ci :
{|class="wikitable"
|-
!Commande!!Entrée!!Sortie
|-
||0||0||Déconnexion
|-
||0||1||Déconnexion
|-
||1||0||0
|-
||1||1||1
|}
Intuitivement, on se dit qu'une porte à transmission est faite avec un seul, vu qu'un transistor fonctionne déjà comme un interrupteur commandable. Mais une porte à transmission est construite avec deux transistors. La raison la plus intuitive est que la logique CMOS associe toujours un transistor PMOS à un transistor NMOS. Mais une autre raison, plus importante, est que les transistors NMOS et PMOS ne sont pas des interrupteurs parfaits. Les NMOS laissent passer les 0, mais laissent mal passer les 1 : la tension en sortie, pour un 1, est atténuée. Et c'est l'inverse pour les PMOS, qui laissent bien passer les 1 mais fournissent une tension de sortie peut adéquate pour les 0. Donc, deux transistors permettent d'obtenir une tension de sortie convenable.
Le montage de base est illustré ci-dessous. Les deux entrées A et /A sont l'inverse l'une de l'autre, ce qui fait qu'il faut en théorie rajouter une porte NON CMOS normale, pour obtenir le circuit complet. Mais dans les faits, on arrive souvent à s'en passer. Ce qui fait que la porte à transmission est définie comme étant le circuit à deux transistors précédents.
[[File:CMOS transmission gate.PNG|centre|vignette|upright=1|CMOS Transmission gate]]
Une porte logique en logique CMOS connecte directement sa sortie sur la tension d'alimentation ou la masse. Mais dans une porte logique en ''pass transistor logic'', il n'y a ni tension d'alimentation, ni masse (O Volts). La sortie est connectée sur l'entrée, rien de plus. Et cela explique plusieurs différences entre CMOS et ''pass transistor logic''.
La première différence est que certaines portes logiques sont impossibles avec la ''pass transistor logic'' pure. Les portes logiques CMOS peuvent générer un 1 ou un 0 distinct de ce qu'il y a sur leur entrée. Par exemple, elles peuvent sortir un 1 même si toutes leurs entrées sont à 0, car elles reliées à la tension d'alimentation. Les portes à transmission ne peuvent pas le faire. Elles se contentent de recopier une entrée sur leur sortie : impossible d'avoir un 1 en sortie avec uniquement des zéros en entrée. La conséquence est qu'il n'est pas possible de créer de porte NON, ni de porte NOR/NAND directement.
Une autre différence est que l’électricité est fournie par l'entrée, ce qui fait qu'elle se dissipe un peu lors du passage dans une porte à transmission. Le résultat est que si on enchaine les portes à transmission, la tension de sortie a tendance à diminuer, et ce d'autant plus vite qu'on a enchainé de portes à transmission. Il faut souvent rajouter des portes OUI pour restaurer les tensions adéquates, à divers endroits du circuit. La ''pass transistor logic'' mélange donc porte OUI/NON CMOS normales avec des portes à transmission. Afin de faire des économies de circuit, on utilise parfois une seule porte NON CMOS comme amplificateur, ce qui fait que de nombreux signaux sont inversés dans les circuits, sans que cela ne change grand chose si le circuit est bien conçu.
Par contre, ce défaut entraine aussi des avantages. Notamment, la consommation d'énergie est fortement diminuée. Seules les portes amplificatrices, les portes NON CMOS, sont alimentées en tension/courant. Le reste des circuits n'est pas alimenté, car il n'y a pas de connexion à la tension d'alimentation et la masse. De même, la ''pass transistor logic'' utilise généralement moins de transistors pour implémenter une porte logique, et un circuit électronique en général. L'exemple avec la porte XOR est assez parlant : on passe de 12 à 6 transistors par porte XOR. Des circuits riches en portes XOR, comme les circuits additionneurs, gagnent beaucoup à utiliser des portes à transmission.
===Les multiplexeurs en ''pass transistor logic''===
Les portes à transmission sont très utilisées dans les multiplexeurs et les démultiplexeurs. Prenons l'exemple d'un multiplexeur 2 vers 1. L'idée est de relier chaque entrée à la sortie par l'intermédiaire d'une porte à transmission. Quand l'une sera ouverte, l'autre sera fermée. Le résultat n'utilise que deux portes à transmission et une porte NON. Voici le circuit qui en découle :
[[File:Multiplexeur fabriqué avec des portes à transmission et-ou des tampons trois-états.png|centre|vignette|upright=1.5|Multiplexeur fabriqué avec des portes à transmission]]
En utilisant les portes à transmission CMOS vues plus haut, on obtient le circuit suivant :
[[File:Multiplexeur fabriqué avec des portes à transmission.png|centre|vignette|upright=1.5|Multiplexeur fabriqué avec des portes à transmission CMOS.]]
La même méthode fonctionne pour les multiplexeurs avec plus de deux entrées. Pour rappel, un multiplexeur est composé d'un décodeur qui commande une couche de portes ET, les sorties des portes ET sont combinées avec une porte OU.
[[File:Multiplexeur 2 vers 4 conçu à partir d'un décodeur.png|centre|vignette|upright=2|Multiplexeur 2 vers 4 conçu à partir d'un décodeur]]
Il est possible de remplacer les portes ET par des portes à transmission. L'idée est de ne connecter sur la sortie que l'entrée qui a été sélectionnée et de déconnecter les autres. En faisant ainsi, on peut se passer de la porte OU, qui est remplacée par un simple fil. Il n'y a qu'une seule entrée qui est connectée à la sortie à chaque instant, pas besoin d'utiliser de porte OU. Le résultat est le circuit suivant :
[[File:Mux Funktionsprinzip.svg|centre|vignette|upright=1.5|Multiplexeur basé sur des interrupteurs.]]
Les multiplexeurs en ''pass transistor logic'' sont plus simple que leurs cousins en CMOS normal. Beaucoup de circuits utilisent des multiplexeurs et nous en avons déjà vu pas mal : les circuits de décalage, les bascules, les additionneurs, quelques autres. Comment se comportent-ils si leurs MUX sont implémentés avec la ''pass transistor logic'' ? La réponse est que l'usage de la ''pass transistor logic'' ne change pas la donne pour les circuits de décalage, alors qu'elle change drastiquement la donne pour les bascules et les additionneurs. Voyons cela dans le détail.
===Les bascules D avec des portes à transmission===
[[File:Multiplexer-based latch (positive).svg|class=transparent|right|Bascule D créée avec un multiplexeur.]]
Une bascule D est, pour rappel, un circuit qui mémorise un bit. Elle peut être implémenté avec un multiplexeur 2 vers 1, en bouclant la sortie du multiplexeur sur une entrée. Pour un multiplexeur fabriqué avec des portes CMOS, boucler sa sortie sur son entrée ne pose pas de problème. Mais avec des portes à transmission, le circuit ne fonctionne pas. Le problème est qu'une porte à transmission est électriquement équivalente à un simple interrupteur, ce qui réduit le circuit à une boucle entre un interrupteur et un fil. Le courant qui circule dans le fil et l'interrupteur se dissipe rapidement du fait de la résistance du fil et disparait en quelques micro- ou millisecondes.
La solution est de rajouter une porte OUI (celle qui recopie son entrée sur sa sortie) dans la boucle pour régénérer le signal électrique. Et la manière la plus simple de fabriquer une porte OUI utilise deux portes NON qui se suivent, ce qui donne le circuit ci-dessous. Cela garantit que la boucle est alimentée en courant/tension quand elle est fermée. Son contenu ne s'efface pas avec le temps, mais est automatiquement régénéré par les portes NON. L'ensemble sera stable tant que la boucle est fermée.
[[File:Implémentation conceptuelle d'une bascule D.png|centre|vignette|upright=2|Implémentation d'une bascule D avec des portes à transmission.]]
Le circuit précédent utilise seulement 10 transistors, alors qu'un multiplexeur en CMOS normal en utilise 14. Un autre avantage est que ce circuit permet d'avoir les deux sorties Q : la sortie Q inversée est prise en sortie de la première porte NON. Une variante du circuit précédent est utilisée dans les mémoires dites SRAM, qui sont utilisées pour les registres du processeur ou ses mémoires caches. Mais nous verrons cela plus en détail dans le chapitre sur les cellules mémoires.
Certaines bascules D ont une entrée R, qui met à zéro le bit mémorisé dans la bascule quand l'entrée R est à 1. Pour cela, elles ajoutent un circuit de mise à zéro, que nous avons déjà vu dans le chapitre sur les opérations bit à bit. Ce circuit de mise à zéro est placé après la seconde porte NON, et sa sortie est bouclée sur l'entrée du circuit. Le circuit obtenu est le suivant :
[[File:Bascule D avec entrée Reset.png|centre|vignette|upright=2|Bascule D avec entrée Reset]]
Le circuit peut se simplement fortement en fusionnant les trois portes situées entre les deux sorties Q, à savoir la porte ET et les deux portes NON qui la précédent. La loi de De Morgan nous dit que l'ensemble est équivalent à une porte NOR, ce qui donne le circuit suivant :
[[File:Bascule D avec entrée Reset, simplifiée.png|centre|vignette|upright=2|Bascule D avec entrée Reset, simplifiée]]
===L'additionneur ''Manchester Carry Chain''===
Les portes à transmission étaient autrefois utilisées pour simplifier les additionneurs, et plus précisément les additionneurs à propagation de retenue. Pour rappel, un additionneur à propagation de retenue additionne deux opérandes, bit par bit. Elle additionne les deux bits de poids faible, ce qui donne un bit de résultat et un bit de retenue. Le bit de retenue est alors envoyé à la colonne suivante, où deux bits sont additionnés avec la retenue, et ainsi de suite. De tels circuits sont composées en enchainant des additionneurs complets, des circuits qui additionnent trois bits : deux bits d'opérandes et une retenue.
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Un défaut des additionneurs à propagation de retenue est leur lenteur. Le résultat n'est connu qu'une fois que les retenues ont été propagées d'une colonne à l'autre. Et cette propagation est assez lente. Les additionneurs modernes utilisent des techniques très complexes pour résoudre ce problème, comme nous l'avons vu il y a quelques chapitres. Mais ces solutions utilisent beaucoup plus de transistors. De nombreux processeurs comme le 8086 d'Intel, ou d'autres processeurs 8-16 bits de cette époque, ne pouvaient pas se le permettre. À la place, ils utilisaient une optimisation à base de portes à transmission.
L'optimisation en question s'appelle la ''Manchester Carry Chain''. Elle part d'un additionneur construit avec un multiplexeur, illustré ci-dessous,. Nous avions vu ce circuit dans le chapitre sur les additionneurs. Avec la ''Manchester Carry Chain'', le multiplexeur est implémenté avec des portes à transmission, comme illustré ci-dessous. L'avantage est que la propagation de la retenue est beaucoup plus rapide. Pas besoin de traverser des portes logiques, la propagation de la retenue ne rencontre pas d'obstacle, si ce n'est la résistance des fils, elle ne subit pas de délai lié au temps de propagation des portes logiques.
{|
|[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
|[[File:Manchester carry chain.png|centre|vignette|upright=2|Manchester carry chain]]
|}
Cependant, l'usage de portes à transmission a quelques défauts. Le principal est que, vu que la retenue d'entrée est envoyée sur la sortie à travers des interrupteurs, la tension sur la retenue de sortie est plus faible que la tension de la retenue d'entrée. Ce qui pose des problèmes quand on doit enchainer plusieurs additionneurs de ce type, mais laissons cela pour plus tard. Il existe une version de cet additionneur en logique dynamique, où les portes à transmission sont utilisées comme des condensateurs, mais nous n'en parlerons pas ici.
===La ''pass transistor logic'' utilise des multiplexeurs 2 vers 1===
La ''pass transistor logic'' est rarement utilisée, à une exception de taille : la porte XOR. Pour rappel, une porte XOR est une sorte d'inverseur commandable, à savoir un circuit prend un bit d'entrée A, et l'inverse ou non suivant la valeur d'un bit de commande B. Et cela nous dit comment implémenter une porte XOR avec un multiplexeur. Un multiplexeur choisit sa sortie parmi deux entrées : A et <math>\overline{A}</math>, le second bit B est envoyé sur l'entrée de commande ! Le circuit obtenu, est celui-ci :
[[File:XOR implémenté avec un MUX.png|centre|vignette|upright=2.5|XOR implémenté avec un MUX.]]
Il est possible de simplifier le circuit en rusant un peu, ce qui donne le circuit ci-dessous. Comme vous pouvez les voir, il mélange porte à transmission et portes NON CMOS normales.
[[File:CmosXORGate.svg|centre|vignette|upright=1|XOR en ''pass transistor logic'']]
Dans les deux cas, l'économie en transistors est drastique comparé au CMOS normal. Plus haut, nous avons illustré plusieurs versions possibles d'une porte XOR en CMOS normal, toutes de 12 transistors. Avec ''pass transistor logic'', une porte XOR utilise 4 à 8 transistors. Le gain est clairement significatif, suffisamment pour utiliser la ''pass transistor logic'' pour la porte XOR, quitte à utiliser des portes CMOS normales pour le reste. Quelques processeurs faisaient cela dans le temps, comme le mythique processeur Z80.
La ''pass transistor logic'' implémente les autres portes logiques avec un multiplexeur 2 vers 1 couplé à quelques portes NON ! Et intuitivement, vous vous dites que les deux entrées de la porte logique correspondent aux deux entrées de donnée du multiplexeur. Sauf qu'en réalité, un bit d'entrée est envoyé sur l'entrée de commande, et l'autre bit sur une entrée de donnée du multiplexeur. Suivant ce qu'on met sur la seconde entrée du multiplexeur, on obtient une porte ET, OU, XOR, etc. Il y a quatre choix possibles : soit on envoie un 0, soit un 1, soit l'inverse du bit d'entrée, soit envoyer deux fois le bit d'entrée.
: Plus haut, nous avions dit que les portes à transmission ne permettaient pas d'implémenter certaines portes logiques, car elles recopient leur entrée sur leur sortie. Impossible d'avoir un 1 en sortie si les entrées valent 0. Mais remarquez que les circuits précédents utilisent les portes NON. Ce sont ces portes NON qui fournissent l'électricité en sortie nécessaire pour avoir un 1 en sortie alors que les entrées sont à 0.
[[File:Portes logiques faites à partir de multiplexeurs.png|centre|vignette|upright=2|Portes logiques faites à partir de multiplexeurs]]
==Les technologies PMOS et NMOS==
Dans ce qui va suivre, nous allons voir la technologie NMOS et POMS. Pour simplifier, la technologie NMOS est équivalente aux circuits CMOS, sauf que les transistors PMOS sont remplacés par une résistance. Pareil avec la technologie PMOS, sauf que c'est les transistors NMOS qui sont remplacés par une résistance. Les deux technologies étaient utilisées avant l'invention de la technologie CMOS, quand on ne savait pas comment faire pour avoir à la fois des transistors PMOS et NMOS sur la même puce électronique, mais sont aujourd'hui révolues. Nous en parlons ici, car nous évoquerons quelques circuits en PMOS/NMOS dans le chapitre sur les cellules mémoire, mais vous pouvez considérer que cette section est facultative.
===Le fonctionnement des logiques NMOS et PMOS===
Avec la technologie NMOS, les portes logiques sont fabriqués avec des transistors NMOS intercalés avec une résistance.
[[File:Circuit en logique NMOS.png|centre|vignette|upright=2|Circuit en logique NMOS.]]
Leur fonctionnement est assez facile à expliquer. Quand la sortie doit être à 1, tous les transistors sont ouverts. La sortie est connectée à la tension d'alimentation et déconnectée de la masse, ce qui fait qu'elle est mise à 1. La résistance est là pour éviter que le courant qui arrive dans la sortie soit trop fort. Quand au moins un transistor NMOS qui se ferme, il connecte l'alimentation à la masse, les choses changent. Les lois compliquées de l'électricité nous disent alors que la sortie est connectée à la masse, elle est donc mise à 0.
[[File:Fonctionnement d'un circuit en technologie NMOS.png|centre|vignette|upright=2|Fonctionnement d'un circuit en technologie NMOS.]]
Les circuits PMOS sont construits d'une manière assez similaire aux circuits CMOS, si ce n'est que les transistors NMOS sont remplacés par une résistance qui relie ici la masse à la sortie. Rien d'étonnant à cela, les deux types de transistors, PMOS et NMOS, ayant un fonctionnement inverse.
===Les portes logiques en NMOS et PMOS===
Que ce soit en logique PMOS ou NMOS, les portes de base sont les portes NON, NAND et NOR. Les autres portes sont fabriquées en combinant des portes de base. Voici les circuits obtenus en NMOS et PMOS:
{|class="wikitable flexible"
|-
! colspan="5 | NMOS
|-
| class="transparent" | [[File:NMOS NOT.svg|class=transparent|100px|Porte NON NMOS.]]
| class="transparent" | [[File:NMOS NAND.svg|class=transparent|100px|NMOS-NAND]]
| class="transparent" | [[File:NMOS NOR.png|100px|NMOS-NOR]]
| class="transparent" | [[File:NMOS AND gate.png|100px|NMOS AND]]
| class="transparent" | [[File:NMOS OR gate.png|100px|NMOS OR]]
|-
! colspan="5 | PMOS
|-
| class="transparent" | [[File:PMOS NOT.png|100px|PMOS NOT]]
| class="transparent" | [[File:PMOS NAND corr.png|100px|PMOS NAND]]
| class="transparent" | [[File:PMOS NOR corr.png|100px|PMOS NOR]]
| class="transparent" |
| class="transparent" | [[File:PMOS OR gate.png|100px|PMOS OR]]
|}
====Les portes logiques de base en NMOS====
Le circuit d'une porte NON en technologie NMOS est illustré ci-dessous. Le principe de ce circuit est similaire au CMOS, avec quelques petites différences. Si on envoie un 0 sur la grille du transistor, il s'ouvre et connecte la sortie à la tension d'alimentation à travers la résistance. À l'inverse, quand on met un 1 sur la grille, le transistor se ferme et la sortie est reliée à la masse, donc mise à 0. Le résultat est bien un circuit inverseur.
{|class="wikitable flexible"
|[[File:NMOS NOT.svg|class=transparent|Porte NON NMOS.]]
|[[File:Not.PNG|class=transparent|Porte NON NMOS : fonctionnement.]]
|}
La porte NOR est similaire à la porte NON, si ce n'est qu'il y a maintenant deux transistors en parallèle. Si l'une des grilles est mise à 1, son transistor se fermera et la sortie sera mise à 0. Par contre, quand les deux entrées sont à 0, les transistors sont tous les deux ouverts, et la sortie est mise à 1. Le comportement obtenu est bien celui d'une porte NOR.
{|class="wikitable flexible"
|[[File:NMOS NOR.png|NMOS-NOR-gate]]
|[[File:Funktionsprinzip eines NOR-Gatters.png|class=transparent|Fonctionnement d'une porte NOR NMOS.]]
|}
La porte NAND fonctionne sur un principe similaire au précédent, si ce n'est qu'il faut que les deux grilles soient à zéro pour obtenir une sortie à 1. Pour mettre la sortie à 0 quand seulement les deux transistors sont ouverts, il suffit de les mettre en série, comme dans le schéma ci-dessous. Le circuit obtenu est bien une porte NAND.
{|class="wikitable flexible"
|[[File:NMOS NAND.svg|class=transparent|centre|NMOS-NAND-gate]]
|[[File:Funktionsprinzip eines NAND-Gatters.png|class=transparent|centre|Funktionsprinzip eines NAND-Gatters]]
|}
===Les avantages et inconvénients des technologies CMOS, PMOS et NMOS===
La technologie PMOS et NMOS ne sont pas totalement équivalentes, niveau performances. Ces technologies se distinguent sur plusieurs points : la vitesse des transistors et leur consommation énergétique.
La vitesse des circuits NMOS/PMOS/CMOS dépend des transistors eux-mêmes. Les transistors PMOS sont plus lents que les transistors NMOS, ce qui fait que les circuits NMOS sont plus rapides que les circuits PMOS. Les circuits CMOS ont une vitesse intermédiaire, car ils contiennent à la fois des transistors NMOS et PMOS.
Pour la consommation électrique, les résistances sont plus goumandes que les transistors. En PMOS et NMOS, la résistance est traversée par du courant en permanence, peu importe l'état des transistors. Et résistance traversée par du courant signifie consommation d'énergie, dissipée sous forme de chaleur par la résistance. Il s'agit d'une perte sèche d'énergie, une consommation d'énergie inutile. En CMOS, l'absence de résistance fait que la consommation d'énergie est liée aux transistors, et celle-ci est beaucoup plus faible que pour une résistance.
Les transistors PMOS sont plus simples à fabriquer que les NMOS, ils sont plus simples à sortir d'usine. Les premiers processeurs étaient fabriqués en logique PMOS, plus simple à fabriquer. Puis, une fois la fabrication des circuits NMOS maitrisée, les processeurs sont tous passés en logique NMOS du fait de sa rapidité. La logique CMOS a mis du temps à remplacer les logiques PMOS et NMOS, car il a fallu maitriser les techniques pour mettre à la fois des transistors NMOS et PMOS sur la même puce. Les premières puces électroniques étaient fabriquées en PMOS ou en NMOS, parce qu'on n’avait pas le choix. Mais une fois la technologie CMOS maitrisée, elle s'est imposée en raison de deux gros avantages : une meilleure fiabilité (une meilleure tolérance au bruit électrique), et une consommation électrique plus faible.
==La logique dynamique MOS==
La '''logique dynamique''' permet de créer des portes logiques ou des bascules d'une manière assez intéressante. Et aussi étonnant que cela puisse paraître, le signal d’horloge est alors utilisé pour fabriquer des circuits combinatoires !
===Un transistor MOS peut servir de condensateur===
Les technologies CMOS conventionnelles mettent la sortie d'une porte logique à 0/1 en la connectant à la tension d'alimentation ou à la masse. La logique ''pass transistor'' transfère la tension et le courant de l'entrée vers la sortie. Dans les deux cas, la sortie est connectée directement ou indirectement à la tension d'alimentation quand on veut lui faire sortie un 1. Avec la logique dynamique, ce n'est pas le cas. La sortie est maintenue à 0 ou à 1 en utilisant un réservoir d'électron qui remplace la tension d'alimentation.
En électronique, il existe un composant qui sert de réservoir à électricité : il s'agit du '''condensateur'''. On peut le charger en électricité, ou le vider pour fournir un courant durant une petite durée de temps. Par convention, un condensateur stocke un 1 s'il est rempli, un 0 s'il est vide. L'intérieur d'un condensateur est formé de deux couches de métal conducteur, séparées par un isolant électrique. Les deux plaques de conducteur sont appelées les armatures du condensateur. C'est sur celles-ci que les charges électriques s'accumulent lors de la charge/décharge d'un condensateur. L'isolant empêche la fuite des charges d'une armature à l'autre, ce qui permet au condensateur de fonctionner comme un réservoir, et non comme un simple fil.
Il est possible de fabriquer un pseudo-condensateur avec un transistor MOS. En effet, tout transistor MOS a un pseudo-condensateur caché entre la grille et la liaison source-drain. Pour comprendre ce qui se passe dans ce transistor de mémorisation, il faut savoir ce qu'il y a dans un transistor CMOS. À l'intérieur, on trouve une plaque en métal appelée l'armature, un bout de semi-conducteur entre la source et le drain, et un morceau d'isolant entre les deux. L'ensemble forme donc un condensateur, certes imparfait, qui porte le nom de capacité parasite du transistor. Suivant la tension qu'on envoie sur la grille, l'armature va se remplir d’électrons ou se vider, ce qui permet de stocker un bit : une grille pleine compte pour un 1, une grille vide compte pour un 0.
[[File:Transistor CMOS - 1.png|centre|vignette|upright=2|Anatomie d'un transistor CMOS]]
L'utilisation de transistors MOS comme condensateur n'est pas spécifique à la logique dynamique. Certains mémoires RAM le font, comme nous le verrons dans le chapitre sur les cellules mémoires. Aussi, il est intéressant d'en parler maintenant, histoire de préparer le terrain. D'ailleurs, les mémoires RAM sont remplies de logique dynamique.
===L'utilisation des pseudo-condensateurs en logique dynamique===
Un circuit conçu en logique dynamique contient un transistor est utilisé comme condensateur. Il s’insère entre la tension d'alimentation et la sortie du circuit. Son rôle est simple : lorsqu'on utilise la sortie, le condensateur se vide, ce qui place la sortie à 1. le reste du temps, le condensateur est relié à la tension d'alimentation et se charge. Un circuit en logique dynamique effectue son travail en deux phases : une phase d'inactivité où il remplit ses condensateurs, et une phase où sa sortie fonctionne. Les deux phases sont appelées la '''phase de précharge''' et la '''phase d'évaluation'''. La succession de ces deux phases est réalisée par le signal d'horloge : la première phase a lieu quand le signal d'horloge est à 1, l'autre quand il est à 0.
Voici un exemple de porte NAND en logique dynamique MOS. La porte est alors réalisée avec des transistors NMOS et PMOS, le circuit ressemble à ce qu'on a en logique NMOS. En bas, on trouve les transistors NMOS pour relier la sortie au 0 volt. Mais au-dessus, on trouve un transistor CMOS qui remplace la résistance. Le fonctionnement du circuit est simple. Quand l'entrée ''clock'' est à 1, le condensateur se charge, les deux transistors NMOS sont déconnectés de la masse et le circuit est inactif. Puis, quand ''clock'' passe à 0, Le transistor PMOS se comporte en circuit ouvert, ce qui déconnecte la tension d'alimentation. Et son pseudo-condensateur se vide, ce qui fournit une tension d'alimentation de remplacement temporaire. Le transistor NMOS du bas se ferme, ce qui fait que les deux transistors A et B décident de si la sortie est connectée au 0 volt ou non. Si c'est le cas, le pseudo-condensateur se vide dans le 0 volt et la sortie est à 0. Sinon, le pseudo-condensateur se vide dans la sortie, ce qui la met à 1.
[[File:Dlnand.svg|centre|vignette|Porte NAND en logique CMOS.]]
Il est aussi possible de créer une bascule D en utilisant la logique dynamique. L'idée est de prendre une bascule D normale, mais d'ajouter un fonctionnement en deux étapes en ajoutant des transistors/interrupteurs. Pour rappel, une bascule D normale est composée de deux inverseurs reliés l'un à l'autre en formant une boucle, avec un multiplexeur pour permettre les écritures dans la boucle.
[[File:Implémentation conceptuelle d'une bascule D.png|centre|vignette|upright=2|Implémentation conceptuelle d'une bascule D]]
[[File:Animation du fonctionnement d'une bascule.gif|vignette|upright=2|Animation du fonctionnement de la bascule précédente.]]
Le circuit final ajoute deux transistors entre les inverseurs tête-bêche. Les transistors en question sont reliés à l'horloge, l'un étant ouvert quand l'autre est fermé. Grâce à eux, le bit mémorisé circule d'un inverseur à l'autre : il est dans le premier inverseur quand le signal d'horloge est à 1, dans l'autre inverseur quand il est à 0 (en fait son inverse, comme vous l'aurez compris). Le tout est illustré ci-contre. Cette implémentation a été utilisée autrefois, notamment dans le processeur Intel 8086.
[[File:Bascule D en logique Dynamique, avec entrée Enable.png|centre|vignette|upright=2|Bascule D en logique Dynamique, avec entrée Enable]]
Il existe une variante très utilisée, qui permet de remplacer le multiplexeur par un circuit légèrement plus simple. Avec elle, on a deux entrées pour commander la bascule, et non une seule entrée Enable. L'entrée Enable autorise les écriture, l'entrée Hold ferme la boucle qui relie la sortie du second inverseur au premier. Chaque entrée est associé à un transistor/interrupteur. Le transistor sur lequel on envoie l'entrée Enable se ferme uniquement lors des écritures et reste fermé sinon. À l'inverse, le transistor relié au signal Hold est fermé en permanence, sauf lors des écritures. En clair, les deux signaux sont l'inverse l'un de l'autre. Il permet de fermer le circuit, de bien relier les deux inverseurs en tête-bêche, sauf lors des écritures. On envoie donc l'inverse de l'entrée Enable sur ce transistor.
[[File:Bascule D en logique dynamique.png|centre|vignette|upright=2|Bascule D en logique dynamique]]
Une manière de comprendre le circuit précédent est de le comparer à celui avec le multiplexeur. Le multiplexeur est composé d'une porte NON et de deux transistors. Il se trouve que les deux transistors en question sont placés au même endroit que les transistors connectés aux signaux Hold et Enable. En prenant retirant la porte NON du multiplexeur, on se retrouve avec le circuit. Au lieu de prendre un Signal Enable qui commande les deux transistors, ce qui demande d'ajouter une porte NON vu que les deux transistors doivent faire l'inverse l'un de l'autre, on se contente d'envoyer deux signaux séparés pour commander chaque transistor indépendamment.
Des circuits nettement plus complexes peuvent être créés en logique dynamique. Pour les curieux, sachez que le ''barrel shifter'' du processeur Intel 386 était construit en logique dynamique. Le ''barrel shifter'' en question était un circuit capable de décaler des opérandes de 32 bits, ce qui était beaucoup pour l'époque. Il faisait environ 2000 transistors, ce qui correspondait à environ la moitié des transistors du CPU 6502 de Motorola, un CPU 8 bits. Et il aurait sans doute fait plus s'il n'avait pas utilisé la logique dynamique, ainsi que diverses optimisations. L'article suivant, assez complet, détaille ce circuit : [https://www.righto.com/2023/12/386-barrel-shifter.html Reverse engineering the barrel shifter circuit on the Intel 386 processor die ]
===Avantages et inconvénients===
Les circuits en logique dynamique sont opposés aux circuits en logique statique, ces derniers étant les circuits CMOS, PMOS, NMOS ou TTL vu jusqu'à présent. Les circuits dynamiques et statiques ont des différences notables, ainsi que des avantages et inconvénients divers. Si on devait résumer :
* la logique dynamique utilise généralement un peu plus de transistors qu'un circuit CMOS normal ;
* la logique dynamique est souvent très rapide par rapport à la concurrence, car elle n'utilise que des transistors NMOS, plus rapides ;
* la consommation d'énergie est généralement supérieure comparé au CMOS.
Un désavantage de la logique dynamique est qu'elle utilise plus de transistors. On économise certes des transistors MOS, mais il faut rajouter les transistors pour déconnecter les transistors NMOS de la masse (0 volt). Le second surcompense le premier.
Un autre désavantage est que le signal d'horloge ne doit pas tomber en-dessous d'une fréquence minimale. Avec une logique statique, on a une fréquence maximale, mais pas de fréquence minimale. Avec un circuit statique peut réduire la fréquence d'un circuit pour économiser de l'énergie, pour améliorer sa stabilité, et de nombreux processeurs modernes ne s'en privent pas. On peut même stopper le signal d'horloge et figer le circuit, ce qui permet de le mettre en veille, d'en stopper le fonctionnement, etc. Impossible avec la logique dynamique, qui demande de ne pas tomber sous la fréquence minimale. Cela a un impact sur la consommation d'énergie, sans compter que cela se marie assez mal avec certaines applications. Un processeur moderne ne peut pas être totalement fabriqué en logique dynamique, car il a besoin d'être mis en veille et qu'il a besoin de varier sa fréquence en fonction des besoins.
Le dernier désavantage implique l'arbre d'horloge, le système d'interconnexion qui distribue le signal d'horloge à toutes les bascules d'un circuit. L'arbre d'horloge est beaucoup plus compliqué avec la logique dynamique qu'avec la logique statique. Avec la logique statique, seules les bascules doivent recevoir le signal d'horloge, avec éventuellement quelques rares circuits annexes. Mais avec la logique dynamique, toutes les portes logiques doivent recevoir le signal d'horloge, ce qui rend la distribution de l'hrologe beaucoup plus compliquée. C'est un point qui fait que la logique dynamique est assez peu utilisée, et souvent limitée à quelques portions bien précise d'un processeur.
==La logique TTL : un apercu rapide==
Tous ce que nous avons vu depuis le début de ce chapitre porte sur les transistors MOS et les technologies associées. Mais les transistors MOS n'ont pas été les premiers inventés. Ils ont été précédés par les '''transistors bipolaires'''. Nous ne parlerons pas en détail du fonctionnement d'un transistor bipolaire, car celui-ci est extraordinairement compliqué. Cependant, nous devons parler rapidement de la logique TTL, qui permet de fabriquer des portes logiques avec ces transistors bipolaires. Là encore, rassurez-vous, nous n'allons pas voir comment fabriquer des portes logiques en logique TTL, cela serait trop compliqué, sans compter que le but n'est pas de faire un cours d'électronique. Mais nous devons fait quelques remarques et donner quelques explications superficielles.
La raison à cela est double. La première raison est que certains circuits présents dans les mémoires RAM sont fabriqués avec des transistors bipolaires. C'est notamment le cas des amplificateurs de lecture ou d'autres circuits de ce genre. De tels circuits ne peuvent pas être implémentés facilement avec des transistors CMOS et nous expliquerons rapidement pourquoi dans ce qui suit. La seconde raison est que ce cours parlera occasionnellement de circuits anciens et qu'il faut quelques bases sur le TTL pour en parler.
Dans la suite du cours, nous verrons occasionnellement quelques circuits anciens, pour la raison suivante : ils sont très simples, très pédagogiques, et permettent d'expliquer simplement certains concepts du cours. Rien de mieux que d'étudier des circuits réels pour donner un peu de chair à des explications abstraites. Par exemple, pour expliquer comment fabriquer une unité logique de calcul bit à bit, je pourrais utiliser l'exemple du Motorola MC14500B, un processeur 1 bit qui est justement une unité logique sous stéroïdes. Ou encore, dans le chapitre sur les circuits additionneurs, je parlerais du circuit additionneur présent dans l'Intel 8008 et dans l'Intel 4004, les deux premiers microprocesseurs commerciaux. Malheureusement, malgré leurs aspects pédagogiques indéniables, ces circuits ont le défaut d'être des circuits TTL. Ce qui est intuitif : les circuits les plus simples ont été inventés en premier et utilisent du TTL plus ancien. Beaucoup de ces circuits ont été inventés avant même que le CMOS ou même les transistors MOS existent. D'où le fait que nous devons faire quelques explications mineures sur le TTL.
===Les transistors bipolaires===
Les '''transistors bipolaires''' ressemblent beaucoup aux transistors MOS. Les transistors bipolaires ont trois broches, appelées le collecteur, la base et l'émetteur. Notez que ces trois termes sont différents de ceux utilisés pour les transistors MOS, où on parle de la grille, du drain et de la source.
Là encore, comme pour les transistors PMOS et NMOS, il existe deux types de transistors bipolaires : les NPN et les PNP. Là encore, il est possible de fabriquer une puce en utilisant seulement des NPN, seulement des PNP, ou en mixant les deux. Mais les ressemblances s'arrêtent là. La différence entre PNP et NPN tient dans la manière dont les courants entrent ou sortent du transistor. La flèche des symboles ci-dessous indique si le courant rentre ou sort par l'émetteur : il rentre pour un PNP, sort pour un NPN. Dans la suite du cours, nous n'utiliserons que des transistors NPN, les plus couramment utilisés.
{|
|[[File:BJT PNP symbol.svg|vignette|BJT PNP]]
|[[File:BJT NPN symbol.svg|vignette|BJT NPN]]
|}
Plus haut nous avons dit que les transistors CMOS sont des interrupteurs. La réalité est que tout transistor peut être utilisé de deux manières : soit comme interrupteur, soit comme amplificateur de tension/courant. Pour simplifier, le transistor bipolaire NPN prend en entrée un courant sur sa base et fournit un courant amplifié sur l'émetteur. Pour s'en servir comme amplificateur, il faut fournir une source de courant sur le collecteur. Le fonctionnement exact est cependant plus compliqué.
[[File:Transistor bipolaire, explication simplifiée de son fonctionnement.png|centre|vignette|upright=1.5|Transistor bipolaire, explication simplifiée de son fonctionnement]]
Les transistors bipolaires sont de bons amplificateurs, mais de piètres interrupteurs. À l'inverse, les transistors CMOS sont généralement de bons interrupteurs, mais de moyens amplificateurs. Pour des circuits numériques, la fonction d'interrupteur est clairement plus adaptée, car elle-même binaire (un transistor est fermé ou ouvert : deux choix possibles). Aussi, les circuits modernes privilégient des transistors CMOS aux transistors bipolaires. À l'inverse, la fonction d'amplification est adaptée aux circuits analogiques.
C'est pour ça que nous rencontrerons les transistors bipolaires soit dans des portions de l'ordinateur qui sont au contact de circuits analogiques. Pensez par exemple aux cartes sons ou au vieux écrans cathodiques, qui gèrent des signaux analogiques (le son pour la carte son, les signaux vidéo analogique pour les vieux écrans). On les croisera aussi dans les mémoires DRAM, dont la conception est un mix entre circuits analogiques et numériques. Nous les croiserons aussi dans de vieux circuits antérieurs aux transistors MOS. Les anciens circuits faisaient avec les transistors bipolaires car ils n'avaient pas le choix, mais ils ont été partiellement remplacés dès l'apparition des transistors CMOS.
===Les portes logiques complexes en TTL===
Le détail le plus important qui nous concernera dans la suite du cours est le suivant : on peut créer des portes logiques exceptionnellement complexes en TTL. Pour comprendre pourquoi, sachez qu'il existe des transistors bipolaires qui possèdent plusieurs émetteurs. Ils sont très utilisés pour fabriquer des portes logiques à plusieurs entrées. Les émetteurs correspondent alors à des entrées de la porte logique. Ainsi, une porte logique à plusieurs entrées se fait non pas en ajoutant des transistors, comme c'est le cas avec les transistors MOS, mais en ajoutant un émetteur sur un transistor. Cela permet à une porte NAND à trois entrées de n'utiliser que deux transistors bipolaires, au lieu de quatre transistors MOS.
[[File:Multiemitter Transistor.svg|centre|vignette|upright=1|Transistor bipolaire avec plusieurs émetteurs.]]
De plus, là où les logiques PMOS/NMOS/CMOS permettent de fabriquer les portes de base que nous avons précédemment, elles ne peuvent pas faire plus. Au pire, on peut implémenter des portes ET/OU/NAND/NOR à plusieurs entrées, mais pas plus. En TTL, on peut parfaitement créer des portes de type ET/OU/NON ou OU/ET/NON, avec seulement quatre transistors. Par exemple, une '''porte ET/OU/NON''' de type 2-2 entrées (pour rappel, qui effectue un ET par paire d’entrée puis fait un NOR entre le résultat des deux ET) est bien implémenté en une seule porte logique, pas en enchainant deux ou trois portes à la suite.
[[File:TTL AND-OR-INVERT 1961.png|centre|vignette|upright=2|TTL AND-OR-INVERT 1961]]
===Les désavantages et avantages des circuits TTL===
Pour résumer, le TTL à l'avantage de pouvoir fabriquer des portes logiques avec peu de transistors comparé au CMOS, surtout pour les portes logiques complexes. Et autant vous dire que les concepteurs de puce électroniques ne se gênaient pas pour utiliser ces portes complexes, capables de fusionner 3 à 5 portes en une seule : les économies de transistors étaient conséquentes.
Et pourtant, les circuits TTL étaient beaucoup plus gros que leurs équivalents CMOS. La raison est qu'un transistor bipolaire prend beaucoup de place : il est environ 10 fois plus gros qu'un transistor MOS. Autant dire que les économies réalisées avec des portes logiques complexes ne faisaient que compenser la taille énorme des transistors bipolaires. Et encore, cette compensation n'était que partielle, ce qui fait que les circuits PMOS/NMOS/CMOS se miniaturisent beaucoup plus facilement. Un avantage pour le transistor MOS !
De plus, les schémas précédents montrent que les portes logiques en TTL utilisent une résistance, elle aussi difficile à miniaturiser. Et cette résistance est parcourue en permanence par un courant, ce qui fait qu'elle consomme de l'énergie et chauffe. C'est la même chose en logique NMOS et PMOS, ce qui explique leur forte consommation d'énergie. Les circuits TTL ont donc le même problème.
[[File:TTL Input voltage.svg|vignette|upright=0.5|TTL voltage.]]
Un autre défaut est lié à la une tension d'alimentation. Les circuits TTL utilisent une tension d'alimentation de 5 volts, alors que les circuits CMOS ont une tension d'alimentation beaucoup plus variable. Les circuits CMOS vont de 3 volts à 18 volts pour les circuits commerciaux, avec des tensions de 1 à 3 volts pour les circuits optimisés. Les circuits CMOS sont généralement bien optimisés et utilisent une tension d'alimentation plus basse que les circuits TTL, ce qui fait qu'ils consomment moins d'énergie et de courant.
De plus, rappelons que coder un zéro demande que la tension soit sous un seuil, alors que coder un 1 demande qu'elle dépasse un autre seuil, avec une petite marge de sécurité entre les deux. Les seuils en question sont indiqués dans le diagramme ci-dessous. Il s'agit des seuils VIH et VIL. On voit que sur les circuits TTL, la marge de sécurité est plus faible qu'avec les circuits CMOS. De plus, les marges sont bien équilibrées en CMOS, à savoir que la marge de sécurité est en plein milieu entre la tension max et le zéro volt. Avec le TTL normal, la marge de sécurité est très proche du zéro volt. Un 1 est codé par une tension entre 2 et 5 volts en TTL ! Une version améliorée du TTL, le LVTTL, corrige ce défaut. Elle baisse la tension d'alimentation à 3,3 Volts, mais elle demande des efforts de fabrication conséquents.
[[File:Niveaux logiques CMOS-TTL-LVTTL.png|centre|vignette|upright=2|Niveaux logiques CMOS-TTL-LVTTL]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de calcul trigonométriques
| prevText=Les circuits de calcul trigonométriques
| next=Les circuits intégrés
| nextText=Les circuits intégrés
}}
{{autocat}}
</noinclude>
37ahn4v230crq37a6ro2yxiu90gpipw
768311
768310
2026-06-22T19:06:26Z
Mewtow
31375
/* La pass transistor logic utilise des multiplexeurs 2 vers 1 */
768311
wikitext
text/x-wiki
Dans le chapitre précédent, nous avons abordé les portes logiques. Dans ce chapitre, nous allons voir qu'elles sont fabriquées avec des composants électroniques que l'on appelle des '''transistors'''. Ces derniers sont reliés entre eux pour former des circuits plus ou moins compliqués. Pour donner un exemple, sachez que les derniers modèles de processeurs peuvent utiliser près d'un milliard de transistors.
==Les transistors MOS==
[[File:Transistor basic flow.svg|vignette|Un transistor est un morceau de conducteur, dont la conductivité est contrôlée par sa troisième broche/borne.]]
Les transistors possèdent trois '''broches''', des pattes métalliques sur lesquelles on connecte des fils électriques. On peut appliquer une tension électrique sur ces broches, qui peut représenter soit 0 soit 1. Sur ces trois broches, il y en a deux entre lesquelles circule un courant, et une troisième qui commande le courant. Le transistor s'utilise le plus souvent comme un interrupteur commandé par sa troisième broche. Le courant qui traverse les deux premières broches passe ou ne passe pas selon ce qu'on met sur la troisième.
Il existe plusieurs types de transistors, mais les deux principaux sont les transistors bipolaires et les transistors MOS. De nos jours, les transistors utilisés dans les ordinateurs sont tous des '''transistors MOS'''. Les raisons à cela sont multiples, mais les plus importantes sont les suivantes. Premièrement, les transistors bipolaires sont plus difficiles à fabriquer et sont donc plus chers. Deuxièmement, ils consomment bien plus de courant que les transistors MOS. Et enfin, les transistors bipolaires sont plus gros, ce qui n'aide pas à miniaturiser les puces électroniques. Tout cela fait que les transistors bipolaires sont aujourd'hui tombés en désuétude et ne sont utilisés que dans une minorité de circuits.
===Les types de transistors MOS : PMOS et NMOS===
Sur un transistor MOS, chaque broche a un nom, nom qui est indiqué sur le schéma ci-dessous.On distingue ainsi le '''drain''', la '''source''' et la '''grille''' On l'utilise le plus souvent comme un interrupteur commandé par sa grille. Appliquez la tension adéquate et la liaison entre la source et le drain se comportera comme un interrupteur fermé. Mettez la grille à une autre valeur et cette liaison se comportera comme un interrupteur ouvert.
Il existe deux types de transistors CMOS, qui diffèrent entre autres par le bit qu'il faut mettre sur la grille pour les ouvrir/fermer :
* les transistors NMOS qui s'ouvrent lorsqu'on envoie un zéro sur la grille et se ferment si la grille est à un ;
* et les PMOS qui se ferment lorsque la grille est à zéro, et s'ouvrent si la grille est à un.
[[File:Td7bfig2.png|centre|vignette|upright=2|Illustration du fonctionnement des transistors NMOS et PMOS.]]
Voici les symboles de chaque transistor.
{|
|[[File:Transistor CMOS.png|vignette|upright=0.5|Transistor CMOS]]
|[[File:IGFET N-Ch Enh Labelled simplified.svg|vignette|upright=0.5|Transistor MOS à canal N (NMOS).]]
|[[File:IGFET P-Ch Enh Labelled simplified.svg|vignette|upright=0.5|Transistor MOS à canal P (PMOS).]]
|}
===L'anatomie d'un transistor MOS===
À l'intérieur du transistor, on trouve simplement une plaque en métal reliée à la grille appelée l'armature, un bout de semi-conducteur entre la source et le drain, et un morceau d'isolant entre les deux. Pour rappel, un semi-conducteur est un matériau qui se comporte soit comme un isolant, soit comme un conducteur, selon les conditions auxquelles on le soumet. Dans un transistor, son rôle est de laisser passer le courant, ou de ne pas le transmettre, quand il faut. C'est grâce à ce semi-conducteur que le transistor peut fonctionner en interrupteur : interrupteur fermé quand le semi-conducteur conduit, ouvert quand il bloque le courant. La commande de la résistance du semi-conducteur (le fait qu'il laisse passer ou non le courant) est réalisée par la grille, comme nous allons le voir ci-dessous.
[[File:Transistor CMOS - 1.png|centre|vignette|upright=2|Transistor CMOS]]
Suivant la tension que l'on place sur la grille, celle-ci va se remplir avec des charges négatives ou positives. Cela va entrainer une modification de la répartition des charges dans le semi-conducteur, ce qui modulera la résistance du conducteur. Prenons par exemple le cas d'un transistor NMOS et étudions ce qui se passe selon la tension placée sur la grille. Si on met un zéro, la grille sera vide de charges et le semi-conducteur se comportera comme un isolant : le courant ne passera pas. En clair, le transistor sera équivalent à un interrupteur ouvert. Si on met un 1 sur la grille, celle-ci va se remplir de charges. Le semi-conducteur va réagir et se mettre à conduire le courant. En clair, le transistor se comporte comme un interrupteur fermé.
{|
|[[File:Transistor CMOS - 3.png|vignette|upright=1.5|Transistor NMOS fermé.]]
|[[File:Transistor CMOS - 4.png|vignette|upright=1.5|Transistor NMOS ouvert.]]
|}
===La tension de seuil d'un transistor===
Le fonctionnement d'un transistor est légèrement plus complexe que ce qui a été dit auparavant. Mais pour rester assez simple, disons que son fonctionnement exact dépend de trois paramètres : la tension d'alimentation, le courant entre drain et source, et un nouveau paramètre appelé la tension de seuil.
Appliquons une tension sur la grille d'un transistor NMOS. Si la tension de grille reste sous un certain seuil, le transistor se comporte comme un interrupteur fermé. Le seuil de tension est appelé, très simplement, la '''tension de seuil'''. Au-delà de la tension de seuil, le transistor se comporte comme un interrupteur ouvert, il laisse passer le courant. La valeur exacte du courant dépend de la tension entre drain et source, soit la tension d'alimentation. Elle aussi dépend de la différence entre tension de grille et de seuil, à savoir <math>U_G - U_\text{seuil}</math>.
Le paragraphe qui va suivre est optionnel, mais détaille un peu plus le fonctionnement d'un transistor MOS. Tout ce qu'il faut comprendre est que la tension de seuil est une tension minimale pour ouvrir le transistor. Le plus important à retenir est que l'on ne peut pas baisser la tension d'alimentation sous la tension de seuil, ce qui est un léger problème en termes de consommation énergétique. Ce détail reviendra plus tard dans ce cours, quand nous parlerons de la consommation d'énergie des circuits électroniques.
Dans les cas que nous allons voir dans ce cours, la tension d'alimentation est plus grande que <math>U_G - U_\text{seuil}</math>. Le courant est alors maximal, il est proportionnel à <math>U_G - U_\text{seuil}</math>. Le transistor ne fonctionne alors pas comme un amplificateur, le courant reste le même. Si la tension d'alimentation est plus petite que <math>U_G - U_\text{seuil}</math>, le transistor est en régime linéaire : le courant de sortie est proportionnel à <math>U_G - U_\text{seuil}</math>, ainsi qu'à la tension d'alimentation. Le transistor fonctionne alors comme un amplificateur de courant, dont l'intensité de l'amplification est commandée par la tension.
[[File:MOSFET enhancement-mode n-channel en.svg|centre|vignette|upright=2.5|Relations entre tensions et courant d'un MOSFET à dopage N.]]
==La technologie CMOS==
Les portes logiques que nous venons de voir sont actuellement fabriquées en utilisant des transistors. Il existe de nombreuses manières pour concevoir des circuits à base de transistors, qui portent les noms de DTL, RTL, TLL, CMOS et bien d'autres. Les techniques anciennes concevaient des portes logiques en utilisant des diodes, des transistors bipolaires et des résistances. Mais elles sont aujourd'hui tombées en désuétudes dans les circuits de haute performance. De nos jours, on n'utilise que des logiques MOS (''Metal Oxyde Silicium''), qui utilisent des transistors MOS vus plus haut dans ce chapitre, parfois couplés à des résistances. On distingue :
* La '''logique NMOS''', qui utilise des transistors NMOS associés à des résistances.
* La '''logique PMOS''', qui utilise des transistors PMOS associés à des résistances.
* La '''logique CMOS''', qui utilise des transistors PMOS et NMOS, sans résistances.
Dans cette section, nous allons montrer comment fabriquer des portes logiques en utilisant la '''technologie CMOS'''. Avec celle-ci, chaque porte logique est fabriquée à la fois avec des transistors NMOS et des transistors PMOS. On peut la voir comme un mélange entre la technologie PMOS et NMOS. Tout circuit CMOS est divisé en deux parties : une intégralement composée de transistors PMOS et une autre de transistors NMOS. Chacune relie la sortie du circuit soit à la masse, soit à la tension d'alimentation.
[[File:Principe de la conception de circuit en technologie CMOS.png|centre|vignette|upright=2|Principe de conception d'une porte logique/d'un circuit en technologie CMOS.]]
La première partie relie la tension d'alimentation à la sortie, mais uniquement quand la sortie doit être à 1. Si la sortie doit être à 1, des transistors PMOS vont se fermer et connecter tension et sortie. Dans le cas contraire, des transistors s'ouvrent et cela déconnecte la liaison entre sortie et tension d'alimentation. L'autre partie du circuit fonctionne de la même manière que la partie de PMOS, sauf qu'elle relie la sortie à la masse et qu'elle se ferme quand la sortie doit être mise à 0
[[File:Fonctionnement d'un circuit en logique CMOS.png|centre|vignette|upright=2|Fonctionnement d'un circuit en logique CMOS.]]
Dans ce qui va suivre, nous allons étudier la porte NON, la porte NAND et la porte NOR. La porte de base de la technologie CMOS est la porte NON, les portes NAND et NOR ne sont que des versions altérées de la porte NON qui ajoutent des entrées et quelques transistors. Les autres portes, comme la porte ET et la porte OU, sont construites à partir de ces portes. Nous parlerons aussi de la porte XOR, qui est un peu particulière.
===La porte NON===
Cette porte est fabriquée avec seulement deux transistors, comme indiqué ci-dessous.
[[File:Porte NON fabriquée avec des transistors CMOS. 01.jpg|centre|vignette|upright=1|Porte NON fabriquée avec des transistors CMOS.]]
Si on met un 1 en entrée de ce circuit, le transistor du haut va fonctionner comme un interrupteur ouvert, et celui du bas comme un interrupteur fermé : la sortie est reliée au zéro volt, et vaut donc 0. Inversement, si on met un 0 en entrée de ce petit montage électronique, le transistor du bas va fonctionner comme un interrupteur ouvert, et celui du haut comme un interrupteur fermé : la sortie est reliée à la tension d'alimentation, et vaut donc 1.
[[File:Porte NON fabriquée avec des transistors CMOS - fonctionnement.png|centre|vignette|upright=2|Porte NON fabriquée avec des transistors CMOS - fonctionnement.]]
===Les portes NAND et NOR===
Passons maintenant aux portes logiques à plusieurs entrées. Pour celles-ci, on va devoir utiliser plus de transistors que pour la porte NON, ce qui demande de les organiser un minium. Une porte logique à deux entrées demande d'utiliser au moins deux transistors par entrée : un transistor PMOS et un NMOS par entrée. Rappelons qu'un transistor est associé à une entrée : l'entrée est directement envoyée sur la grille du transistor et commande son ouverture/fermeture. Pour les portes logiques à 3, 4, 5 entrées, la logiques est la même : au minimum deux transistors par entrée, un PMOS et un NMOS.
Nous allons d'abord voir le cas d'une porte NOR/NAND en CMOS. Avec elles, les transistors sont organisées de deux manières, appelées '''transistors en série''' (l'un après l'autre, sur le même fil) et '''transistors en parallèle''' (sur des fils différents). Le tout est illustré ci-dessous. Avec des transistors en série, plusieurs transistors NMOS ou deux PMOS se suivent sur le même fil, mais on ne peut pas mélanger NMOS et PMOS sur le même fil.
[[File:Transistors CMOS en série et en parallèle.png|centre|vignette|upright=2|Transistors CMOS en série et en parallèle]]
====Les portes NAND/NOR à deux entrées====
Voyons d'abord le cas des portes NAND/NOR à deux entrées. Elles utilisent deux transistors NMOS et deux PMOS.
Avec des transistors en série, deux transistors NMOS ou deux PMOS se suivent sur le même fil, mais on ne peut pas mélanger NMOS et PMOS sur le même fil. Avec des transistors en parallèle, c'est l'exact inverse. L'idée est de relier la tension d'alimentation à la sortie à travers deux PMOS transistors distincts, chacun sur son propre fil, sa propre connexion indépendante des autres. Pour la masse (0 volt), il faut utiliser deux transistors NMOS pour la relier à la sortie, avec là encore chaque transistor NMOS ayant sa propre connexion indépendante des autres. En clair, chaque entrée commande un transistor qui peut à lui seul fermer le circuit.
On rappelle deux choses : chaque transistor est associée à une entrée sur sa grille, un transistor se ferme si l'entrée vaut 0 pour des transistors PMOS et 1 pour des NMOS. Avec ces deux détails, on peut expliquer comment fonctionnent des transistors en série et en parallèle. Pour résumer, les transistors en série ferment la connexion quand toutes les entrées sont à 1 (NMOS) ou 0 (PMOS). Avec les transistors en parallèle, il faut qu'une seule entrée soit à 1 (NMOS) ou 0 (PMOS) pour que la connexion se fasse.
Une porte NOR met sa sortie à 1 si toutes les entrées sont à 0, à 0 si une seule entrée vaut 1. Pour reformuler, il faut connecter la sortie à la tension d'alimentation si toutes les entrées sont à 0, ce qui demande d'utiliser des transistors PMOS en série. Pour gérer le cas d'une seule entrée à 1, il faut utiliser deux transistors en parallèle entre la masse et la sortie. Le circuit obtenu est donc celui obtenu dans le premier schéma. Le même raisonnement pour une porte NAND donne le second schéma.
{|
|[[File:Porte NOR fabriquée avec des transistors. 02.png|centre|vignette|upright=1|Porte NOR fabriquée avec des transistors.]]
|[[File:Porte NAND fabriquée avec des transistors. 04.png|centre|vignette|upright=1|Porte NAND fabriquée avec des transistors.]]
|}
Leur fonctionnement s'explique assez bien si on regarde ce qu'il se passe en fonction des entrées. Suivant la valeur de chaque entrée, les transistors vont se fermer ou s'ouvrir, ce qui va connecter la sortie soit à la tension d'alimentation, soit à la masse.
Voici ce que cela donne pour une porte NAND :
[[File:Porte NAND fabriquée avec des transistors - Fonctionnement.png|centre|vignette|upright=2|Porte NAND fabriquée avec des transistors.]]
Voici ce que cela donne pour une porte NOR :
[[File:Porte NOR fabriquée avec des transistors - Fonctionnement.png|centre|vignette|upright=2|Porte NOR fabriquée avec des transistors.]]
====Les portes NAND/NOR/ET/OU à plusieurs entrées====
Les portes NOR/NAND à plusieurs entrées sont construites à partir de portes NAND/NOR à deux entrées auxquelles on rajoute des transistors. Il y a autant de transistors en série que d'entrée, pareil pour les transistors en parallèle. Leur fonctionnement est similaire à leurs cousines à deux entrées. Les portes ET et OU à plusieurs entrées sont construites à partie de NAND/NOR suivies d'une porte NON.
{|
|[[File:NAND plusieurs entrées.png|vignette|NAND plusieurs entrées]]
|[[File:NOR plusieurs entrées.png|vignette|NOR plusieurs entrées]]
|}
En théorie, on pourrait créer des portes avec un nombre arbitraire d'entrées avec cette méthode. Cependant, au-delà d'un certain nombre de transistors en série/parallèle, les performances s'effondrent rapidement. Le circuit devient alors trop lent, sans compter que des problèmes purement électriques surviennent. En pratique, difficile de dépasser la dizaine d'entrées. Dans ce cas, les portes sont construites en assemblant plusieurs portes NAND/NOR ensemble. Et faire ainsi marche nettement mieux pour fabriquer des portes ET/OU que pour des portes NAND/NOR.
====Les portes ET/OU sont fabriquées à partir de NAND/NOR en CMOS====
En logique CMOS, les portes logiques ET et OU sont construites en prenant une porte NAND/NOR et en mettant une porte NON sur sa sortie. Il est théoriquement possible d'utiliser uniquement des transistors en série et en parallèle, mais cette solution utilise plus de transistors.
{|
|[[File:CMOS AND Layout.svg|vignette|Porte ET en CMOS]]
|[[File:CMOS OR.svg|vignette|Porte OU en CMOS]]
|}
Pour ce qui est des portes ET/OU avec beaucoup d'entrées, il est fréquent qu'elles soit construites en combinant plusieurs portes ET/OU moins complexes. Par exemple, une porte ET à 32 entrées sera construite à partir de portes à seulement 4 ou 5 entrées. Il existe cependant une alternative qui se marie nettement mieux avec la logique CMOS. Rappelons qu'en logique CMOS, les portes NAND et NOR sont les portes à plusieurs entrées les plus simples à fabriquer. L'idée est alors de combiner des portes NAND/NOR pour créer une porte ET/OU.
Voici la comparaison entre les deux solutions pour une porte ET :
{|
|[[File:12 input AND gate via cascade of AND gates.svg|vignette|ET plusieurs entrées]]
|[[File:12-input AND gate from NAND and NOR.svg|vignette|ET plusieurs entrées]]
|}
Voici la comparaison entre les deux solutions pour une porte OU :
{|
|[[File:12-input OR gate via cascade of OR gates.svg|vignette|OU plusieurs entrées]]
|[[File:12-input OR gate via NOR and NAND gates.svg|vignette|OU plusieurs entrées]]
|}
D'autres portes mélangent transistors en série et en parallèle d'une manière différente. Les portes ET-OU-NON et OU-ET-NON en sont un bon exemple.
===Une méthode générale===
Il existe une méthode générale pour créer des portes logiques à deux entrées. Avec elle, il faut repartir du montage avec deux transistors NMOS/PMOS en série. En théorie, il permet de relier la sortie à la tension d'alimentation/zéro volt si toutes les entrées sont à 0 (PMOS) ou 1 (NMOS). L'idée est de regarder ce qui se passe si on fait précéder l'entrée d'un transistor par une porte NON. Pour deux transistors, cela fait 4 possibilités, 8 au total si on fait la différence entre PMOS et NMOS. Voici les valeurs d'entrées qui ferment le montage à transistor en série, suivant l’endroit où on place la porte NON.
[[File:Transistors CMOS en série.png|centre|vignette|upright=2|Transistors CMOS en série]]
Mine de rien, avec ces 8 montages de base, on peut créer n'importe quelle porte logique à deux entrées. Il faut juste se souvenir que d'après les règles du CMOS, les deux transistors PMOS se placent entre la tension d'alimentation et la sortie, et servent à mettre la sortie à 1. Pour les deux transistors NMOS, ils sont reliés à la masse et mettent la sortie à 0. Pour mieux comprendre, prenons l'exemple d'une porte XOR.
Appliquons la méthode que je viens d'expliquer avec une porte XOR. Le résultat est sous-optimal, mieux vaut fabriquer une porte XOR en combinant d'autres portes logiques, mais c'est pour l'exemple. L'idée est très simple : on prend la table de vérité de la porte logique, et on associe deux transistors en série pour chaque ligne. Regardons d'abord la table de vérité ligne par ligne :
{|class="wikitable"
|-
!Entrée 1!!Entrée 2!!Sortie
|-
||0||0||0
|-
||0||1||1
|-
||1||0||1
|-
||1||1||0
|}
La première ligne a ses deux entrées à 0 et sort un 0. La sortie est à 0, ce qui signifie qu'il faut regarder sur la ligne des transistors NMOS, qui connectent la sortie à la masse. Le montage qui se ferme quand les deux entrées sont à 0 est celui tout en bas à droite du tableau précédent, à savoir deux transistors NMOS avec deux portes NON.
Les deux lignes du milieu ont une entrée à 0 et une à 1, et leur sortie à 1. La sortie à 1 signifie qu'il faut regarder sur la ligne des transistors PMOS, qui connectent la tension d'alimentation à la sortie. Les deux montages avec deux entrées différentes sont les deux situés au milieu, avec deux transistors PMOS et une porte logique.
La dernière ligne a ses deux entrées à 1 et sort un 0. La sortie est à 0, ce qui signifie qu'il faut regarder sur la ligne des transistors NMOS, qui connectent la sortie à la masse. Le montage qui se ferme quand les deux entrées sont à 1 est celui tout en bas à gauche du tableau précédent, à savoir deux transistors NMOS seuls.
En combinant ces quatre montages, on trouve le circuit suivant. Notons qu'il n'y a que deux portes NON marquées en vert et bleu : on a juste besoin d'inverser la première entrée et la seconde, pas besoin de portes en plus. Les portes NOn sont en quelque sorte partagées entre les transistors PMOS et NMOS.
[[File:Cmos xor.svg|centre|vignette|upright=1|class=transparent|Porte XOR en logique CMOS.]]
Si les deux entrées sont à 1, alors les deux transistors en bas à gauche vont se fermer et connecter la sortie au 0 volt, les trois autres groupes ayant au moins un transistor ouvert. Si les deux entrées sont à 0, alors les deux transistors en bas à droite vont se fermer et connecter la sortie au 0 volt, les autres quadrants ayant au moins un transistor ouvert. Et pareil quand les deux bits sont différents : un des deux quadrants aura ses deux transistors fermés, alors que les autres auront au moins un transistor ouvert, ce qui connecte la sortie à la tension d'alimentation.
On peut construire la porte NXOR sur la même logique. Et toutes les portes logiques peuvent se construire avec cette méthode. Le nombre de transistors est alors le même : on utilise 12 transistors au total : 4 paires de transistors en série, 4 transistors en plus pour les portes NON. Que ce soit pour la porte XOR ou NXOR, on économise beaucoup de transistors comparés à la solution naïve, qui consiste à utiliser plusieurs portes NON/ET/OU. Si on ne peut pas faire mieux dans le cas de la porte XOR/NXOR, sachez cependant que les autres portes construites avec cette méthode utilisent plus de transistors que nécessaire. De nombreuses simplifications sont possibles, comme on le verra plus bas.
Dans les faits, la méthode n'est pas utilisée pour les portes XOR. À la place, les portes XOR sont construites à base d'autres portes logiques plus simples, comme des portes NAND/NOR/ET/OU. Le résultat est que l'on a un circuit à 10 transistors, contre 12 avec la méthode précédente.
[[File:CMOS10TrXOR.svg|centre|vignette|Porte XOR en CMOS en 10 transistors.]]
===Les circuits plus complexes (''full adder'', ...)===
Il est possible de fusionner plusieurs portes ET-OU-NON en un seul circuit à transistors CMOS, ce qui permet des simplifications assez impressionnantes. Pour donner un exemple, le schéma suivant compare l'implémentation d'un circuit qui fait un ET entre les deux premières entrées, puis un NOR entre le résultat du ET et la troisième entrée. L'implémentation à droite du schéma avec une porte ET et une porte NOR prend 10 transistors. L'implémentation la plus simple, à gauche du schéma, prend seulement 6 transistors.
[[File:AOI21 complex vs standard gates.svg|centre|vignette|upright=1.5|Porte ET-OU-NON à trois entrées (de type 2-1) à gauche, contre la combinaison de plusieurs portes à droite.]]
Une conséquence est que des circuits assez complexes gagnent à être fabriqués directement avec des transistors. Prenons l'exemple de l'additionneur complet. Une implémentation naïve, avec 5 portes logiques, utilise beaucoup de transistors. Deux portes XOR, deux portes OU et une porte ET, cela dépasse la trentaine de transistors. Faisons le compte : 10 transistors par porte XOR, 6 pour les trois autres portes, cela fait 38 transistors. Les additionneurs des processeurs modernes sont optimisés directement au niveau des transistors, pour leur permettre d'économiser des transistors. Par exemple, l'implémentation suivante en utilise seulement 24 !
[[File:Inverting full adder CMOS 24T.svg|centre|vignette|upright=1.5|Additionneur complet fabriqué avec 24 transistors.]]
Et c'est sans compter que l'additionneur complet naïf n'est pas forcément le top du top en termes de performances. Là encore, une implémentation avec des transistors peut être optimisée pour être plus rapide, notamment au niveau du calcul de la retenue, ou au contraire d'économiser des transistors. Tout dépend de l'objectif visé, certains circuit optimisant à fond pour la vitesse, d'autres pour le nombre de transistors, d'autres font un compromis entre les deux. Les circuits de ce genre sont très nombreux, trop pour qu'on puisse les citer.
==La ''pass transistor logic''==
La '''''pass transistor logic''''' est une forme particulière de technologie CMOS, une version non-conventionnelle. Avec le CMOS normal, la porte de base est la porte NON. En modifiant celle-ci, on arrive à fabriquer des portes NAND, NOR, puis les autres portes logiques. Les transistors sont conçus de manière à connecter la sortie, soit la tension d'alimentation, soit la masse. Avec la ''pass transistor logic'', le montage de base est un circuit interrupteur, qui connecte l'entrée directement sur la sortie. Le circuit interrupteur n'est autre que les portes à transmission vues il y a quelques chapitres.
La ''pass transistor logic'' a été utilisée dans des processeurs commerciaux, comme dans l'ARM1, le premier processeur ARM. Sur l'ARM1, les concepteurs ont décidé d'implémenter certains circuits avec des multiplexeurs. La raison n'est pas une question de performance ou d'économie de transistors, juste que c'était plus pratique à fabriquer, sachant que le processeur était le premier CPU ARM de l'entreprise.
S'il est intéressant de voir la ''pass transistor logic'', c'est qu'elle est souvent utilisée pour simplifier certains circuits CMOS normaux. Par exemple, il est possible d'implémenter toutes les portes logiques en CMOS normal, sauf la porte XOR qui est implémentée avec la ''pass transistor logic''. Cela permet une petite économie de circuits, vu que la porte XOR est bien plus simple en ''pass transistor logic''. La ''pass transistor logic'' est aussi utilisée pour simplifier les multiplexeurs et les démultiplexeurs, et certains additionneurs. Aussi, ne soyez pas étonné si nous revenons sur certains circuits vus dans les chapitres précédents, dans cette section.
===La porte à transmission===
Le circuit de base est une porte logique que nous n'avons pas encore vu pour le moment, appelée la '''porte à transmission'''. Elle agit comme un interrupteur commandé par une entrée de commande. Pour rappel, un interrupteur fermé laisse passer le courant, alors qu'un interrupteur fermé ne le laisse pas passer. La porte à transmission fait pareil : soit elle connecte l'entrée et la sortie, soit elle les déconnecte. Pour choisir entre les deux, une porte à transmission possède une entrée de commande sur laquelle on envoie un bit de commande. La porte est fermée si le bit de commande est à 1, ouvert s'il est à 1.
[[File:Tristate buffer.svg|centre|vignette|upright=2|Porte à transmission.]]
Il est possible de la voir comme une porte OUI améliorée dont la table de vérité est celle-ci :
{|class="wikitable"
|-
!Commande!!Entrée!!Sortie
|-
||0||0||Déconnexion
|-
||0||1||Déconnexion
|-
||1||0||0
|-
||1||1||1
|}
Intuitivement, on se dit qu'une porte à transmission est faite avec un seul, vu qu'un transistor fonctionne déjà comme un interrupteur commandable. Mais une porte à transmission est construite avec deux transistors. La raison la plus intuitive est que la logique CMOS associe toujours un transistor PMOS à un transistor NMOS. Mais une autre raison, plus importante, est que les transistors NMOS et PMOS ne sont pas des interrupteurs parfaits. Les NMOS laissent passer les 0, mais laissent mal passer les 1 : la tension en sortie, pour un 1, est atténuée. Et c'est l'inverse pour les PMOS, qui laissent bien passer les 1 mais fournissent une tension de sortie peut adéquate pour les 0. Donc, deux transistors permettent d'obtenir une tension de sortie convenable.
Le montage de base est illustré ci-dessous. Les deux entrées A et /A sont l'inverse l'une de l'autre, ce qui fait qu'il faut en théorie rajouter une porte NON CMOS normale, pour obtenir le circuit complet. Mais dans les faits, on arrive souvent à s'en passer. Ce qui fait que la porte à transmission est définie comme étant le circuit à deux transistors précédents.
[[File:CMOS transmission gate.PNG|centre|vignette|upright=1|CMOS Transmission gate]]
Une porte logique en logique CMOS connecte directement sa sortie sur la tension d'alimentation ou la masse. Mais dans une porte logique en ''pass transistor logic'', il n'y a ni tension d'alimentation, ni masse (O Volts). La sortie est connectée sur l'entrée, rien de plus. Et cela explique plusieurs différences entre CMOS et ''pass transistor logic''.
La première différence est que certaines portes logiques sont impossibles avec la ''pass transistor logic'' pure. Les portes logiques CMOS peuvent générer un 1 ou un 0 distinct de ce qu'il y a sur leur entrée. Par exemple, elles peuvent sortir un 1 même si toutes leurs entrées sont à 0, car elles reliées à la tension d'alimentation. Les portes à transmission ne peuvent pas le faire. Elles se contentent de recopier une entrée sur leur sortie : impossible d'avoir un 1 en sortie avec uniquement des zéros en entrée. La conséquence est qu'il n'est pas possible de créer de porte NON, ni de porte NOR/NAND directement.
Une autre différence est que l’électricité est fournie par l'entrée, ce qui fait qu'elle se dissipe un peu lors du passage dans une porte à transmission. Le résultat est que si on enchaine les portes à transmission, la tension de sortie a tendance à diminuer, et ce d'autant plus vite qu'on a enchainé de portes à transmission. Il faut souvent rajouter des portes OUI pour restaurer les tensions adéquates, à divers endroits du circuit. La ''pass transistor logic'' mélange donc porte OUI/NON CMOS normales avec des portes à transmission. Afin de faire des économies de circuit, on utilise parfois une seule porte NON CMOS comme amplificateur, ce qui fait que de nombreux signaux sont inversés dans les circuits, sans que cela ne change grand chose si le circuit est bien conçu.
Par contre, ce défaut entraine aussi des avantages. Notamment, la consommation d'énergie est fortement diminuée. Seules les portes amplificatrices, les portes NON CMOS, sont alimentées en tension/courant. Le reste des circuits n'est pas alimenté, car il n'y a pas de connexion à la tension d'alimentation et la masse. De même, la ''pass transistor logic'' utilise généralement moins de transistors pour implémenter une porte logique, et un circuit électronique en général. L'exemple avec la porte XOR est assez parlant : on passe de 12 à 6 transistors par porte XOR. Des circuits riches en portes XOR, comme les circuits additionneurs, gagnent beaucoup à utiliser des portes à transmission.
===Les multiplexeurs en ''pass transistor logic''===
Les portes à transmission sont très utilisées dans les multiplexeurs et les démultiplexeurs. Prenons l'exemple d'un multiplexeur 2 vers 1. L'idée est de relier chaque entrée à la sortie par l'intermédiaire d'une porte à transmission. Quand l'une sera ouverte, l'autre sera fermée. Le résultat n'utilise que deux portes à transmission et une porte NON. Voici le circuit qui en découle :
[[File:Multiplexeur fabriqué avec des portes à transmission et-ou des tampons trois-états.png|centre|vignette|upright=1.5|Multiplexeur fabriqué avec des portes à transmission]]
En utilisant les portes à transmission CMOS vues plus haut, on obtient le circuit suivant :
[[File:Multiplexeur fabriqué avec des portes à transmission.png|centre|vignette|upright=1.5|Multiplexeur fabriqué avec des portes à transmission CMOS.]]
La même méthode fonctionne pour les multiplexeurs avec plus de deux entrées. Pour rappel, un multiplexeur est composé d'un décodeur qui commande une couche de portes ET, les sorties des portes ET sont combinées avec une porte OU.
[[File:Multiplexeur 2 vers 4 conçu à partir d'un décodeur.png|centre|vignette|upright=2|Multiplexeur 2 vers 4 conçu à partir d'un décodeur]]
Il est possible de remplacer les portes ET par des portes à transmission. L'idée est de ne connecter sur la sortie que l'entrée qui a été sélectionnée et de déconnecter les autres. En faisant ainsi, on peut se passer de la porte OU, qui est remplacée par un simple fil. Il n'y a qu'une seule entrée qui est connectée à la sortie à chaque instant, pas besoin d'utiliser de porte OU. Le résultat est le circuit suivant :
[[File:Mux Funktionsprinzip.svg|centre|vignette|upright=1.5|Multiplexeur basé sur des interrupteurs.]]
Les multiplexeurs en ''pass transistor logic'' sont plus simple que leurs cousins en CMOS normal. Beaucoup de circuits utilisent des multiplexeurs et nous en avons déjà vu pas mal : les circuits de décalage, les bascules, les additionneurs, quelques autres. Comment se comportent-ils si leurs MUX sont implémentés avec la ''pass transistor logic'' ? La réponse est que l'usage de la ''pass transistor logic'' ne change pas la donne pour les circuits de décalage, alors qu'elle change drastiquement la donne pour les bascules et les additionneurs. Voyons cela dans le détail.
===Les bascules D avec des portes à transmission===
[[File:Multiplexer-based latch (positive).svg|class=transparent|right|Bascule D créée avec un multiplexeur.]]
Une bascule D est, pour rappel, un circuit qui mémorise un bit. Elle peut être implémenté avec un multiplexeur 2 vers 1, en bouclant la sortie du multiplexeur sur une entrée. Pour un multiplexeur fabriqué avec des portes CMOS, boucler sa sortie sur son entrée ne pose pas de problème. Mais avec des portes à transmission, le circuit ne fonctionne pas. Le problème est qu'une porte à transmission est électriquement équivalente à un simple interrupteur, ce qui réduit le circuit à une boucle entre un interrupteur et un fil. Le courant qui circule dans le fil et l'interrupteur se dissipe rapidement du fait de la résistance du fil et disparait en quelques micro- ou millisecondes.
La solution est de rajouter une porte OUI (celle qui recopie son entrée sur sa sortie) dans la boucle pour régénérer le signal électrique. Et la manière la plus simple de fabriquer une porte OUI utilise deux portes NON qui se suivent, ce qui donne le circuit ci-dessous. Cela garantit que la boucle est alimentée en courant/tension quand elle est fermée. Son contenu ne s'efface pas avec le temps, mais est automatiquement régénéré par les portes NON. L'ensemble sera stable tant que la boucle est fermée.
[[File:Implémentation conceptuelle d'une bascule D.png|centre|vignette|upright=2|Implémentation d'une bascule D avec des portes à transmission.]]
Le circuit précédent utilise seulement 10 transistors, alors qu'un multiplexeur en CMOS normal en utilise 14. Un autre avantage est que ce circuit permet d'avoir les deux sorties Q : la sortie Q inversée est prise en sortie de la première porte NON. Une variante du circuit précédent est utilisée dans les mémoires dites SRAM, qui sont utilisées pour les registres du processeur ou ses mémoires caches. Mais nous verrons cela plus en détail dans le chapitre sur les cellules mémoires.
Certaines bascules D ont une entrée R, qui met à zéro le bit mémorisé dans la bascule quand l'entrée R est à 1. Pour cela, elles ajoutent un circuit de mise à zéro, que nous avons déjà vu dans le chapitre sur les opérations bit à bit. Ce circuit de mise à zéro est placé après la seconde porte NON, et sa sortie est bouclée sur l'entrée du circuit. Le circuit obtenu est le suivant :
[[File:Bascule D avec entrée Reset.png|centre|vignette|upright=2|Bascule D avec entrée Reset]]
Le circuit peut se simplement fortement en fusionnant les trois portes situées entre les deux sorties Q, à savoir la porte ET et les deux portes NON qui la précédent. La loi de De Morgan nous dit que l'ensemble est équivalent à une porte NOR, ce qui donne le circuit suivant :
[[File:Bascule D avec entrée Reset, simplifiée.png|centre|vignette|upright=2|Bascule D avec entrée Reset, simplifiée]]
===L'additionneur ''Manchester Carry Chain''===
Les portes à transmission étaient autrefois utilisées pour simplifier les additionneurs, et plus précisément les additionneurs à propagation de retenue. Pour rappel, un additionneur à propagation de retenue additionne deux opérandes, bit par bit. Elle additionne les deux bits de poids faible, ce qui donne un bit de résultat et un bit de retenue. Le bit de retenue est alors envoyé à la colonne suivante, où deux bits sont additionnés avec la retenue, et ainsi de suite. De tels circuits sont composées en enchainant des additionneurs complets, des circuits qui additionnent trois bits : deux bits d'opérandes et une retenue.
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Un défaut des additionneurs à propagation de retenue est leur lenteur. Le résultat n'est connu qu'une fois que les retenues ont été propagées d'une colonne à l'autre. Et cette propagation est assez lente. Les additionneurs modernes utilisent des techniques très complexes pour résoudre ce problème, comme nous l'avons vu il y a quelques chapitres. Mais ces solutions utilisent beaucoup plus de transistors. De nombreux processeurs comme le 8086 d'Intel, ou d'autres processeurs 8-16 bits de cette époque, ne pouvaient pas se le permettre. À la place, ils utilisaient une optimisation à base de portes à transmission.
L'optimisation en question s'appelle la ''Manchester Carry Chain''. Elle part d'un additionneur construit avec un multiplexeur, illustré ci-dessous,. Nous avions vu ce circuit dans le chapitre sur les additionneurs. Avec la ''Manchester Carry Chain'', le multiplexeur est implémenté avec des portes à transmission, comme illustré ci-dessous. L'avantage est que la propagation de la retenue est beaucoup plus rapide. Pas besoin de traverser des portes logiques, la propagation de la retenue ne rencontre pas d'obstacle, si ce n'est la résistance des fils, elle ne subit pas de délai lié au temps de propagation des portes logiques.
{|
|[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
|[[File:Manchester carry chain.png|centre|vignette|upright=2|Manchester carry chain]]
|}
Cependant, l'usage de portes à transmission a quelques défauts. Le principal est que, vu que la retenue d'entrée est envoyée sur la sortie à travers des interrupteurs, la tension sur la retenue de sortie est plus faible que la tension de la retenue d'entrée. Ce qui pose des problèmes quand on doit enchainer plusieurs additionneurs de ce type, mais laissons cela pour plus tard. Il existe une version de cet additionneur en logique dynamique, où les portes à transmission sont utilisées comme des condensateurs, mais nous n'en parlerons pas ici.
===Les portes logiques construites avec des multiplexeurs 2 vers 1===
La ''pass transistor logic'' est rarement utilisée, à une exception de taille : la porte XOR. Pour rappel, une porte XOR est une sorte d'inverseur commandable, à savoir un circuit prend un bit d'entrée A, et l'inverse ou non suivant la valeur d'un bit de commande B. Et cela nous dit comment implémenter une porte XOR avec un multiplexeur. Un multiplexeur choisit sa sortie parmi deux entrées : A et <math>\overline{A}</math>, le second bit B est envoyé sur l'entrée de commande ! Le circuit obtenu, est celui-ci :
[[File:XOR implémenté avec un MUX.png|centre|vignette|upright=2.5|XOR implémenté avec un MUX.]]
Il est possible de simplifier le circuit en rusant un peu, ce qui donne le circuit ci-dessous. Comme vous pouvez les voir, il mélange porte à transmission et portes NON CMOS normales.
[[File:CmosXORGate.svg|centre|vignette|upright=1|XOR en ''pass transistor logic'']]
Dans les deux cas, l'économie en transistors est drastique comparé au CMOS normal. Plus haut, nous avons illustré plusieurs versions possibles d'une porte XOR en CMOS normal, toutes de 12 transistors. Avec ''pass transistor logic'', une porte XOR utilise 4 à 8 transistors. Le gain est clairement significatif, suffisamment pour utiliser la ''pass transistor logic'' pour la porte XOR, quitte à utiliser des portes CMOS normales pour le reste. Quelques processeurs faisaient cela dans le temps, comme le mythique processeur Z80.
La ''pass transistor logic'' implémente les autres portes logiques avec un multiplexeur 2 vers 1 couplé à quelques portes NON ! Et intuitivement, vous vous dites que les deux entrées de la porte logique correspondent aux deux entrées de donnée du multiplexeur. Sauf qu'en réalité, un bit d'entrée est envoyé sur l'entrée de commande, et l'autre bit sur une entrée de donnée du multiplexeur. Suivant ce qu'on met sur la seconde entrée du multiplexeur, on obtient une porte ET, OU, XOR, etc. Il y a quatre choix possibles : soit on envoie un 0, soit un 1, soit l'inverse du bit d'entrée, soit envoyer deux fois le bit d'entrée.
: Plus haut, nous avions dit que les portes à transmission ne permettaient pas d'implémenter certaines portes logiques, car elles recopient leur entrée sur leur sortie. Impossible d'avoir un 1 en sortie si les entrées valent 0. Mais remarquez que les circuits précédents utilisent les portes NON. Ce sont ces portes NON qui fournissent l'électricité en sortie nécessaire pour avoir un 1 en sortie alors que les entrées sont à 0.
[[File:Portes logiques faites à partir de multiplexeurs.png|centre|vignette|upright=2|Portes logiques faites à partir de multiplexeurs]]
==Les technologies PMOS et NMOS==
Dans ce qui va suivre, nous allons voir la technologie NMOS et POMS. Pour simplifier, la technologie NMOS est équivalente aux circuits CMOS, sauf que les transistors PMOS sont remplacés par une résistance. Pareil avec la technologie PMOS, sauf que c'est les transistors NMOS qui sont remplacés par une résistance. Les deux technologies étaient utilisées avant l'invention de la technologie CMOS, quand on ne savait pas comment faire pour avoir à la fois des transistors PMOS et NMOS sur la même puce électronique, mais sont aujourd'hui révolues. Nous en parlons ici, car nous évoquerons quelques circuits en PMOS/NMOS dans le chapitre sur les cellules mémoire, mais vous pouvez considérer que cette section est facultative.
===Le fonctionnement des logiques NMOS et PMOS===
Avec la technologie NMOS, les portes logiques sont fabriqués avec des transistors NMOS intercalés avec une résistance.
[[File:Circuit en logique NMOS.png|centre|vignette|upright=2|Circuit en logique NMOS.]]
Leur fonctionnement est assez facile à expliquer. Quand la sortie doit être à 1, tous les transistors sont ouverts. La sortie est connectée à la tension d'alimentation et déconnectée de la masse, ce qui fait qu'elle est mise à 1. La résistance est là pour éviter que le courant qui arrive dans la sortie soit trop fort. Quand au moins un transistor NMOS qui se ferme, il connecte l'alimentation à la masse, les choses changent. Les lois compliquées de l'électricité nous disent alors que la sortie est connectée à la masse, elle est donc mise à 0.
[[File:Fonctionnement d'un circuit en technologie NMOS.png|centre|vignette|upright=2|Fonctionnement d'un circuit en technologie NMOS.]]
Les circuits PMOS sont construits d'une manière assez similaire aux circuits CMOS, si ce n'est que les transistors NMOS sont remplacés par une résistance qui relie ici la masse à la sortie. Rien d'étonnant à cela, les deux types de transistors, PMOS et NMOS, ayant un fonctionnement inverse.
===Les portes logiques en NMOS et PMOS===
Que ce soit en logique PMOS ou NMOS, les portes de base sont les portes NON, NAND et NOR. Les autres portes sont fabriquées en combinant des portes de base. Voici les circuits obtenus en NMOS et PMOS:
{|class="wikitable flexible"
|-
! colspan="5 | NMOS
|-
| class="transparent" | [[File:NMOS NOT.svg|class=transparent|100px|Porte NON NMOS.]]
| class="transparent" | [[File:NMOS NAND.svg|class=transparent|100px|NMOS-NAND]]
| class="transparent" | [[File:NMOS NOR.png|100px|NMOS-NOR]]
| class="transparent" | [[File:NMOS AND gate.png|100px|NMOS AND]]
| class="transparent" | [[File:NMOS OR gate.png|100px|NMOS OR]]
|-
! colspan="5 | PMOS
|-
| class="transparent" | [[File:PMOS NOT.png|100px|PMOS NOT]]
| class="transparent" | [[File:PMOS NAND corr.png|100px|PMOS NAND]]
| class="transparent" | [[File:PMOS NOR corr.png|100px|PMOS NOR]]
| class="transparent" |
| class="transparent" | [[File:PMOS OR gate.png|100px|PMOS OR]]
|}
====Les portes logiques de base en NMOS====
Le circuit d'une porte NON en technologie NMOS est illustré ci-dessous. Le principe de ce circuit est similaire au CMOS, avec quelques petites différences. Si on envoie un 0 sur la grille du transistor, il s'ouvre et connecte la sortie à la tension d'alimentation à travers la résistance. À l'inverse, quand on met un 1 sur la grille, le transistor se ferme et la sortie est reliée à la masse, donc mise à 0. Le résultat est bien un circuit inverseur.
{|class="wikitable flexible"
|[[File:NMOS NOT.svg|class=transparent|Porte NON NMOS.]]
|[[File:Not.PNG|class=transparent|Porte NON NMOS : fonctionnement.]]
|}
La porte NOR est similaire à la porte NON, si ce n'est qu'il y a maintenant deux transistors en parallèle. Si l'une des grilles est mise à 1, son transistor se fermera et la sortie sera mise à 0. Par contre, quand les deux entrées sont à 0, les transistors sont tous les deux ouverts, et la sortie est mise à 1. Le comportement obtenu est bien celui d'une porte NOR.
{|class="wikitable flexible"
|[[File:NMOS NOR.png|NMOS-NOR-gate]]
|[[File:Funktionsprinzip eines NOR-Gatters.png|class=transparent|Fonctionnement d'une porte NOR NMOS.]]
|}
La porte NAND fonctionne sur un principe similaire au précédent, si ce n'est qu'il faut que les deux grilles soient à zéro pour obtenir une sortie à 1. Pour mettre la sortie à 0 quand seulement les deux transistors sont ouverts, il suffit de les mettre en série, comme dans le schéma ci-dessous. Le circuit obtenu est bien une porte NAND.
{|class="wikitable flexible"
|[[File:NMOS NAND.svg|class=transparent|centre|NMOS-NAND-gate]]
|[[File:Funktionsprinzip eines NAND-Gatters.png|class=transparent|centre|Funktionsprinzip eines NAND-Gatters]]
|}
===Les avantages et inconvénients des technologies CMOS, PMOS et NMOS===
La technologie PMOS et NMOS ne sont pas totalement équivalentes, niveau performances. Ces technologies se distinguent sur plusieurs points : la vitesse des transistors et leur consommation énergétique.
La vitesse des circuits NMOS/PMOS/CMOS dépend des transistors eux-mêmes. Les transistors PMOS sont plus lents que les transistors NMOS, ce qui fait que les circuits NMOS sont plus rapides que les circuits PMOS. Les circuits CMOS ont une vitesse intermédiaire, car ils contiennent à la fois des transistors NMOS et PMOS.
Pour la consommation électrique, les résistances sont plus goumandes que les transistors. En PMOS et NMOS, la résistance est traversée par du courant en permanence, peu importe l'état des transistors. Et résistance traversée par du courant signifie consommation d'énergie, dissipée sous forme de chaleur par la résistance. Il s'agit d'une perte sèche d'énergie, une consommation d'énergie inutile. En CMOS, l'absence de résistance fait que la consommation d'énergie est liée aux transistors, et celle-ci est beaucoup plus faible que pour une résistance.
Les transistors PMOS sont plus simples à fabriquer que les NMOS, ils sont plus simples à sortir d'usine. Les premiers processeurs étaient fabriqués en logique PMOS, plus simple à fabriquer. Puis, une fois la fabrication des circuits NMOS maitrisée, les processeurs sont tous passés en logique NMOS du fait de sa rapidité. La logique CMOS a mis du temps à remplacer les logiques PMOS et NMOS, car il a fallu maitriser les techniques pour mettre à la fois des transistors NMOS et PMOS sur la même puce. Les premières puces électroniques étaient fabriquées en PMOS ou en NMOS, parce qu'on n’avait pas le choix. Mais une fois la technologie CMOS maitrisée, elle s'est imposée en raison de deux gros avantages : une meilleure fiabilité (une meilleure tolérance au bruit électrique), et une consommation électrique plus faible.
==La logique dynamique MOS==
La '''logique dynamique''' permet de créer des portes logiques ou des bascules d'une manière assez intéressante. Et aussi étonnant que cela puisse paraître, le signal d’horloge est alors utilisé pour fabriquer des circuits combinatoires !
===Un transistor MOS peut servir de condensateur===
Les technologies CMOS conventionnelles mettent la sortie d'une porte logique à 0/1 en la connectant à la tension d'alimentation ou à la masse. La logique ''pass transistor'' transfère la tension et le courant de l'entrée vers la sortie. Dans les deux cas, la sortie est connectée directement ou indirectement à la tension d'alimentation quand on veut lui faire sortie un 1. Avec la logique dynamique, ce n'est pas le cas. La sortie est maintenue à 0 ou à 1 en utilisant un réservoir d'électron qui remplace la tension d'alimentation.
En électronique, il existe un composant qui sert de réservoir à électricité : il s'agit du '''condensateur'''. On peut le charger en électricité, ou le vider pour fournir un courant durant une petite durée de temps. Par convention, un condensateur stocke un 1 s'il est rempli, un 0 s'il est vide. L'intérieur d'un condensateur est formé de deux couches de métal conducteur, séparées par un isolant électrique. Les deux plaques de conducteur sont appelées les armatures du condensateur. C'est sur celles-ci que les charges électriques s'accumulent lors de la charge/décharge d'un condensateur. L'isolant empêche la fuite des charges d'une armature à l'autre, ce qui permet au condensateur de fonctionner comme un réservoir, et non comme un simple fil.
Il est possible de fabriquer un pseudo-condensateur avec un transistor MOS. En effet, tout transistor MOS a un pseudo-condensateur caché entre la grille et la liaison source-drain. Pour comprendre ce qui se passe dans ce transistor de mémorisation, il faut savoir ce qu'il y a dans un transistor CMOS. À l'intérieur, on trouve une plaque en métal appelée l'armature, un bout de semi-conducteur entre la source et le drain, et un morceau d'isolant entre les deux. L'ensemble forme donc un condensateur, certes imparfait, qui porte le nom de capacité parasite du transistor. Suivant la tension qu'on envoie sur la grille, l'armature va se remplir d’électrons ou se vider, ce qui permet de stocker un bit : une grille pleine compte pour un 1, une grille vide compte pour un 0.
[[File:Transistor CMOS - 1.png|centre|vignette|upright=2|Anatomie d'un transistor CMOS]]
L'utilisation de transistors MOS comme condensateur n'est pas spécifique à la logique dynamique. Certains mémoires RAM le font, comme nous le verrons dans le chapitre sur les cellules mémoires. Aussi, il est intéressant d'en parler maintenant, histoire de préparer le terrain. D'ailleurs, les mémoires RAM sont remplies de logique dynamique.
===L'utilisation des pseudo-condensateurs en logique dynamique===
Un circuit conçu en logique dynamique contient un transistor est utilisé comme condensateur. Il s’insère entre la tension d'alimentation et la sortie du circuit. Son rôle est simple : lorsqu'on utilise la sortie, le condensateur se vide, ce qui place la sortie à 1. le reste du temps, le condensateur est relié à la tension d'alimentation et se charge. Un circuit en logique dynamique effectue son travail en deux phases : une phase d'inactivité où il remplit ses condensateurs, et une phase où sa sortie fonctionne. Les deux phases sont appelées la '''phase de précharge''' et la '''phase d'évaluation'''. La succession de ces deux phases est réalisée par le signal d'horloge : la première phase a lieu quand le signal d'horloge est à 1, l'autre quand il est à 0.
Voici un exemple de porte NAND en logique dynamique MOS. La porte est alors réalisée avec des transistors NMOS et PMOS, le circuit ressemble à ce qu'on a en logique NMOS. En bas, on trouve les transistors NMOS pour relier la sortie au 0 volt. Mais au-dessus, on trouve un transistor CMOS qui remplace la résistance. Le fonctionnement du circuit est simple. Quand l'entrée ''clock'' est à 1, le condensateur se charge, les deux transistors NMOS sont déconnectés de la masse et le circuit est inactif. Puis, quand ''clock'' passe à 0, Le transistor PMOS se comporte en circuit ouvert, ce qui déconnecte la tension d'alimentation. Et son pseudo-condensateur se vide, ce qui fournit une tension d'alimentation de remplacement temporaire. Le transistor NMOS du bas se ferme, ce qui fait que les deux transistors A et B décident de si la sortie est connectée au 0 volt ou non. Si c'est le cas, le pseudo-condensateur se vide dans le 0 volt et la sortie est à 0. Sinon, le pseudo-condensateur se vide dans la sortie, ce qui la met à 1.
[[File:Dlnand.svg|centre|vignette|Porte NAND en logique CMOS.]]
Il est aussi possible de créer une bascule D en utilisant la logique dynamique. L'idée est de prendre une bascule D normale, mais d'ajouter un fonctionnement en deux étapes en ajoutant des transistors/interrupteurs. Pour rappel, une bascule D normale est composée de deux inverseurs reliés l'un à l'autre en formant une boucle, avec un multiplexeur pour permettre les écritures dans la boucle.
[[File:Implémentation conceptuelle d'une bascule D.png|centre|vignette|upright=2|Implémentation conceptuelle d'une bascule D]]
[[File:Animation du fonctionnement d'une bascule.gif|vignette|upright=2|Animation du fonctionnement de la bascule précédente.]]
Le circuit final ajoute deux transistors entre les inverseurs tête-bêche. Les transistors en question sont reliés à l'horloge, l'un étant ouvert quand l'autre est fermé. Grâce à eux, le bit mémorisé circule d'un inverseur à l'autre : il est dans le premier inverseur quand le signal d'horloge est à 1, dans l'autre inverseur quand il est à 0 (en fait son inverse, comme vous l'aurez compris). Le tout est illustré ci-contre. Cette implémentation a été utilisée autrefois, notamment dans le processeur Intel 8086.
[[File:Bascule D en logique Dynamique, avec entrée Enable.png|centre|vignette|upright=2|Bascule D en logique Dynamique, avec entrée Enable]]
Il existe une variante très utilisée, qui permet de remplacer le multiplexeur par un circuit légèrement plus simple. Avec elle, on a deux entrées pour commander la bascule, et non une seule entrée Enable. L'entrée Enable autorise les écriture, l'entrée Hold ferme la boucle qui relie la sortie du second inverseur au premier. Chaque entrée est associé à un transistor/interrupteur. Le transistor sur lequel on envoie l'entrée Enable se ferme uniquement lors des écritures et reste fermé sinon. À l'inverse, le transistor relié au signal Hold est fermé en permanence, sauf lors des écritures. En clair, les deux signaux sont l'inverse l'un de l'autre. Il permet de fermer le circuit, de bien relier les deux inverseurs en tête-bêche, sauf lors des écritures. On envoie donc l'inverse de l'entrée Enable sur ce transistor.
[[File:Bascule D en logique dynamique.png|centre|vignette|upright=2|Bascule D en logique dynamique]]
Une manière de comprendre le circuit précédent est de le comparer à celui avec le multiplexeur. Le multiplexeur est composé d'une porte NON et de deux transistors. Il se trouve que les deux transistors en question sont placés au même endroit que les transistors connectés aux signaux Hold et Enable. En prenant retirant la porte NON du multiplexeur, on se retrouve avec le circuit. Au lieu de prendre un Signal Enable qui commande les deux transistors, ce qui demande d'ajouter une porte NON vu que les deux transistors doivent faire l'inverse l'un de l'autre, on se contente d'envoyer deux signaux séparés pour commander chaque transistor indépendamment.
Des circuits nettement plus complexes peuvent être créés en logique dynamique. Pour les curieux, sachez que le ''barrel shifter'' du processeur Intel 386 était construit en logique dynamique. Le ''barrel shifter'' en question était un circuit capable de décaler des opérandes de 32 bits, ce qui était beaucoup pour l'époque. Il faisait environ 2000 transistors, ce qui correspondait à environ la moitié des transistors du CPU 6502 de Motorola, un CPU 8 bits. Et il aurait sans doute fait plus s'il n'avait pas utilisé la logique dynamique, ainsi que diverses optimisations. L'article suivant, assez complet, détaille ce circuit : [https://www.righto.com/2023/12/386-barrel-shifter.html Reverse engineering the barrel shifter circuit on the Intel 386 processor die ]
===Avantages et inconvénients===
Les circuits en logique dynamique sont opposés aux circuits en logique statique, ces derniers étant les circuits CMOS, PMOS, NMOS ou TTL vu jusqu'à présent. Les circuits dynamiques et statiques ont des différences notables, ainsi que des avantages et inconvénients divers. Si on devait résumer :
* la logique dynamique utilise généralement un peu plus de transistors qu'un circuit CMOS normal ;
* la logique dynamique est souvent très rapide par rapport à la concurrence, car elle n'utilise que des transistors NMOS, plus rapides ;
* la consommation d'énergie est généralement supérieure comparé au CMOS.
Un désavantage de la logique dynamique est qu'elle utilise plus de transistors. On économise certes des transistors MOS, mais il faut rajouter les transistors pour déconnecter les transistors NMOS de la masse (0 volt). Le second surcompense le premier.
Un autre désavantage est que le signal d'horloge ne doit pas tomber en-dessous d'une fréquence minimale. Avec une logique statique, on a une fréquence maximale, mais pas de fréquence minimale. Avec un circuit statique peut réduire la fréquence d'un circuit pour économiser de l'énergie, pour améliorer sa stabilité, et de nombreux processeurs modernes ne s'en privent pas. On peut même stopper le signal d'horloge et figer le circuit, ce qui permet de le mettre en veille, d'en stopper le fonctionnement, etc. Impossible avec la logique dynamique, qui demande de ne pas tomber sous la fréquence minimale. Cela a un impact sur la consommation d'énergie, sans compter que cela se marie assez mal avec certaines applications. Un processeur moderne ne peut pas être totalement fabriqué en logique dynamique, car il a besoin d'être mis en veille et qu'il a besoin de varier sa fréquence en fonction des besoins.
Le dernier désavantage implique l'arbre d'horloge, le système d'interconnexion qui distribue le signal d'horloge à toutes les bascules d'un circuit. L'arbre d'horloge est beaucoup plus compliqué avec la logique dynamique qu'avec la logique statique. Avec la logique statique, seules les bascules doivent recevoir le signal d'horloge, avec éventuellement quelques rares circuits annexes. Mais avec la logique dynamique, toutes les portes logiques doivent recevoir le signal d'horloge, ce qui rend la distribution de l'hrologe beaucoup plus compliquée. C'est un point qui fait que la logique dynamique est assez peu utilisée, et souvent limitée à quelques portions bien précise d'un processeur.
==La logique TTL : un apercu rapide==
Tous ce que nous avons vu depuis le début de ce chapitre porte sur les transistors MOS et les technologies associées. Mais les transistors MOS n'ont pas été les premiers inventés. Ils ont été précédés par les '''transistors bipolaires'''. Nous ne parlerons pas en détail du fonctionnement d'un transistor bipolaire, car celui-ci est extraordinairement compliqué. Cependant, nous devons parler rapidement de la logique TTL, qui permet de fabriquer des portes logiques avec ces transistors bipolaires. Là encore, rassurez-vous, nous n'allons pas voir comment fabriquer des portes logiques en logique TTL, cela serait trop compliqué, sans compter que le but n'est pas de faire un cours d'électronique. Mais nous devons fait quelques remarques et donner quelques explications superficielles.
La raison à cela est double. La première raison est que certains circuits présents dans les mémoires RAM sont fabriqués avec des transistors bipolaires. C'est notamment le cas des amplificateurs de lecture ou d'autres circuits de ce genre. De tels circuits ne peuvent pas être implémentés facilement avec des transistors CMOS et nous expliquerons rapidement pourquoi dans ce qui suit. La seconde raison est que ce cours parlera occasionnellement de circuits anciens et qu'il faut quelques bases sur le TTL pour en parler.
Dans la suite du cours, nous verrons occasionnellement quelques circuits anciens, pour la raison suivante : ils sont très simples, très pédagogiques, et permettent d'expliquer simplement certains concepts du cours. Rien de mieux que d'étudier des circuits réels pour donner un peu de chair à des explications abstraites. Par exemple, pour expliquer comment fabriquer une unité logique de calcul bit à bit, je pourrais utiliser l'exemple du Motorola MC14500B, un processeur 1 bit qui est justement une unité logique sous stéroïdes. Ou encore, dans le chapitre sur les circuits additionneurs, je parlerais du circuit additionneur présent dans l'Intel 8008 et dans l'Intel 4004, les deux premiers microprocesseurs commerciaux. Malheureusement, malgré leurs aspects pédagogiques indéniables, ces circuits ont le défaut d'être des circuits TTL. Ce qui est intuitif : les circuits les plus simples ont été inventés en premier et utilisent du TTL plus ancien. Beaucoup de ces circuits ont été inventés avant même que le CMOS ou même les transistors MOS existent. D'où le fait que nous devons faire quelques explications mineures sur le TTL.
===Les transistors bipolaires===
Les '''transistors bipolaires''' ressemblent beaucoup aux transistors MOS. Les transistors bipolaires ont trois broches, appelées le collecteur, la base et l'émetteur. Notez que ces trois termes sont différents de ceux utilisés pour les transistors MOS, où on parle de la grille, du drain et de la source.
Là encore, comme pour les transistors PMOS et NMOS, il existe deux types de transistors bipolaires : les NPN et les PNP. Là encore, il est possible de fabriquer une puce en utilisant seulement des NPN, seulement des PNP, ou en mixant les deux. Mais les ressemblances s'arrêtent là. La différence entre PNP et NPN tient dans la manière dont les courants entrent ou sortent du transistor. La flèche des symboles ci-dessous indique si le courant rentre ou sort par l'émetteur : il rentre pour un PNP, sort pour un NPN. Dans la suite du cours, nous n'utiliserons que des transistors NPN, les plus couramment utilisés.
{|
|[[File:BJT PNP symbol.svg|vignette|BJT PNP]]
|[[File:BJT NPN symbol.svg|vignette|BJT NPN]]
|}
Plus haut nous avons dit que les transistors CMOS sont des interrupteurs. La réalité est que tout transistor peut être utilisé de deux manières : soit comme interrupteur, soit comme amplificateur de tension/courant. Pour simplifier, le transistor bipolaire NPN prend en entrée un courant sur sa base et fournit un courant amplifié sur l'émetteur. Pour s'en servir comme amplificateur, il faut fournir une source de courant sur le collecteur. Le fonctionnement exact est cependant plus compliqué.
[[File:Transistor bipolaire, explication simplifiée de son fonctionnement.png|centre|vignette|upright=1.5|Transistor bipolaire, explication simplifiée de son fonctionnement]]
Les transistors bipolaires sont de bons amplificateurs, mais de piètres interrupteurs. À l'inverse, les transistors CMOS sont généralement de bons interrupteurs, mais de moyens amplificateurs. Pour des circuits numériques, la fonction d'interrupteur est clairement plus adaptée, car elle-même binaire (un transistor est fermé ou ouvert : deux choix possibles). Aussi, les circuits modernes privilégient des transistors CMOS aux transistors bipolaires. À l'inverse, la fonction d'amplification est adaptée aux circuits analogiques.
C'est pour ça que nous rencontrerons les transistors bipolaires soit dans des portions de l'ordinateur qui sont au contact de circuits analogiques. Pensez par exemple aux cartes sons ou au vieux écrans cathodiques, qui gèrent des signaux analogiques (le son pour la carte son, les signaux vidéo analogique pour les vieux écrans). On les croisera aussi dans les mémoires DRAM, dont la conception est un mix entre circuits analogiques et numériques. Nous les croiserons aussi dans de vieux circuits antérieurs aux transistors MOS. Les anciens circuits faisaient avec les transistors bipolaires car ils n'avaient pas le choix, mais ils ont été partiellement remplacés dès l'apparition des transistors CMOS.
===Les portes logiques complexes en TTL===
Le détail le plus important qui nous concernera dans la suite du cours est le suivant : on peut créer des portes logiques exceptionnellement complexes en TTL. Pour comprendre pourquoi, sachez qu'il existe des transistors bipolaires qui possèdent plusieurs émetteurs. Ils sont très utilisés pour fabriquer des portes logiques à plusieurs entrées. Les émetteurs correspondent alors à des entrées de la porte logique. Ainsi, une porte logique à plusieurs entrées se fait non pas en ajoutant des transistors, comme c'est le cas avec les transistors MOS, mais en ajoutant un émetteur sur un transistor. Cela permet à une porte NAND à trois entrées de n'utiliser que deux transistors bipolaires, au lieu de quatre transistors MOS.
[[File:Multiemitter Transistor.svg|centre|vignette|upright=1|Transistor bipolaire avec plusieurs émetteurs.]]
De plus, là où les logiques PMOS/NMOS/CMOS permettent de fabriquer les portes de base que nous avons précédemment, elles ne peuvent pas faire plus. Au pire, on peut implémenter des portes ET/OU/NAND/NOR à plusieurs entrées, mais pas plus. En TTL, on peut parfaitement créer des portes de type ET/OU/NON ou OU/ET/NON, avec seulement quatre transistors. Par exemple, une '''porte ET/OU/NON''' de type 2-2 entrées (pour rappel, qui effectue un ET par paire d’entrée puis fait un NOR entre le résultat des deux ET) est bien implémenté en une seule porte logique, pas en enchainant deux ou trois portes à la suite.
[[File:TTL AND-OR-INVERT 1961.png|centre|vignette|upright=2|TTL AND-OR-INVERT 1961]]
===Les désavantages et avantages des circuits TTL===
Pour résumer, le TTL à l'avantage de pouvoir fabriquer des portes logiques avec peu de transistors comparé au CMOS, surtout pour les portes logiques complexes. Et autant vous dire que les concepteurs de puce électroniques ne se gênaient pas pour utiliser ces portes complexes, capables de fusionner 3 à 5 portes en une seule : les économies de transistors étaient conséquentes.
Et pourtant, les circuits TTL étaient beaucoup plus gros que leurs équivalents CMOS. La raison est qu'un transistor bipolaire prend beaucoup de place : il est environ 10 fois plus gros qu'un transistor MOS. Autant dire que les économies réalisées avec des portes logiques complexes ne faisaient que compenser la taille énorme des transistors bipolaires. Et encore, cette compensation n'était que partielle, ce qui fait que les circuits PMOS/NMOS/CMOS se miniaturisent beaucoup plus facilement. Un avantage pour le transistor MOS !
De plus, les schémas précédents montrent que les portes logiques en TTL utilisent une résistance, elle aussi difficile à miniaturiser. Et cette résistance est parcourue en permanence par un courant, ce qui fait qu'elle consomme de l'énergie et chauffe. C'est la même chose en logique NMOS et PMOS, ce qui explique leur forte consommation d'énergie. Les circuits TTL ont donc le même problème.
[[File:TTL Input voltage.svg|vignette|upright=0.5|TTL voltage.]]
Un autre défaut est lié à la une tension d'alimentation. Les circuits TTL utilisent une tension d'alimentation de 5 volts, alors que les circuits CMOS ont une tension d'alimentation beaucoup plus variable. Les circuits CMOS vont de 3 volts à 18 volts pour les circuits commerciaux, avec des tensions de 1 à 3 volts pour les circuits optimisés. Les circuits CMOS sont généralement bien optimisés et utilisent une tension d'alimentation plus basse que les circuits TTL, ce qui fait qu'ils consomment moins d'énergie et de courant.
De plus, rappelons que coder un zéro demande que la tension soit sous un seuil, alors que coder un 1 demande qu'elle dépasse un autre seuil, avec une petite marge de sécurité entre les deux. Les seuils en question sont indiqués dans le diagramme ci-dessous. Il s'agit des seuils VIH et VIL. On voit que sur les circuits TTL, la marge de sécurité est plus faible qu'avec les circuits CMOS. De plus, les marges sont bien équilibrées en CMOS, à savoir que la marge de sécurité est en plein milieu entre la tension max et le zéro volt. Avec le TTL normal, la marge de sécurité est très proche du zéro volt. Un 1 est codé par une tension entre 2 et 5 volts en TTL ! Une version améliorée du TTL, le LVTTL, corrige ce défaut. Elle baisse la tension d'alimentation à 3,3 Volts, mais elle demande des efforts de fabrication conséquents.
[[File:Niveaux logiques CMOS-TTL-LVTTL.png|centre|vignette|upright=2|Niveaux logiques CMOS-TTL-LVTTL]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de calcul trigonométriques
| prevText=Les circuits de calcul trigonométriques
| next=Les circuits intégrés
| nextText=Les circuits intégrés
}}
{{autocat}}
</noinclude>
czwsr9hki04w47gqv02fm2zlyb2ah7i
768312
768311
2026-06-22T19:07:37Z
Mewtow
31375
/* L'additionneur Manchester Carry Chain */
768312
wikitext
text/x-wiki
Dans le chapitre précédent, nous avons abordé les portes logiques. Dans ce chapitre, nous allons voir qu'elles sont fabriquées avec des composants électroniques que l'on appelle des '''transistors'''. Ces derniers sont reliés entre eux pour former des circuits plus ou moins compliqués. Pour donner un exemple, sachez que les derniers modèles de processeurs peuvent utiliser près d'un milliard de transistors.
==Les transistors MOS==
[[File:Transistor basic flow.svg|vignette|Un transistor est un morceau de conducteur, dont la conductivité est contrôlée par sa troisième broche/borne.]]
Les transistors possèdent trois '''broches''', des pattes métalliques sur lesquelles on connecte des fils électriques. On peut appliquer une tension électrique sur ces broches, qui peut représenter soit 0 soit 1. Sur ces trois broches, il y en a deux entre lesquelles circule un courant, et une troisième qui commande le courant. Le transistor s'utilise le plus souvent comme un interrupteur commandé par sa troisième broche. Le courant qui traverse les deux premières broches passe ou ne passe pas selon ce qu'on met sur la troisième.
Il existe plusieurs types de transistors, mais les deux principaux sont les transistors bipolaires et les transistors MOS. De nos jours, les transistors utilisés dans les ordinateurs sont tous des '''transistors MOS'''. Les raisons à cela sont multiples, mais les plus importantes sont les suivantes. Premièrement, les transistors bipolaires sont plus difficiles à fabriquer et sont donc plus chers. Deuxièmement, ils consomment bien plus de courant que les transistors MOS. Et enfin, les transistors bipolaires sont plus gros, ce qui n'aide pas à miniaturiser les puces électroniques. Tout cela fait que les transistors bipolaires sont aujourd'hui tombés en désuétude et ne sont utilisés que dans une minorité de circuits.
===Les types de transistors MOS : PMOS et NMOS===
Sur un transistor MOS, chaque broche a un nom, nom qui est indiqué sur le schéma ci-dessous.On distingue ainsi le '''drain''', la '''source''' et la '''grille''' On l'utilise le plus souvent comme un interrupteur commandé par sa grille. Appliquez la tension adéquate et la liaison entre la source et le drain se comportera comme un interrupteur fermé. Mettez la grille à une autre valeur et cette liaison se comportera comme un interrupteur ouvert.
Il existe deux types de transistors CMOS, qui diffèrent entre autres par le bit qu'il faut mettre sur la grille pour les ouvrir/fermer :
* les transistors NMOS qui s'ouvrent lorsqu'on envoie un zéro sur la grille et se ferment si la grille est à un ;
* et les PMOS qui se ferment lorsque la grille est à zéro, et s'ouvrent si la grille est à un.
[[File:Td7bfig2.png|centre|vignette|upright=2|Illustration du fonctionnement des transistors NMOS et PMOS.]]
Voici les symboles de chaque transistor.
{|
|[[File:Transistor CMOS.png|vignette|upright=0.5|Transistor CMOS]]
|[[File:IGFET N-Ch Enh Labelled simplified.svg|vignette|upright=0.5|Transistor MOS à canal N (NMOS).]]
|[[File:IGFET P-Ch Enh Labelled simplified.svg|vignette|upright=0.5|Transistor MOS à canal P (PMOS).]]
|}
===L'anatomie d'un transistor MOS===
À l'intérieur du transistor, on trouve simplement une plaque en métal reliée à la grille appelée l'armature, un bout de semi-conducteur entre la source et le drain, et un morceau d'isolant entre les deux. Pour rappel, un semi-conducteur est un matériau qui se comporte soit comme un isolant, soit comme un conducteur, selon les conditions auxquelles on le soumet. Dans un transistor, son rôle est de laisser passer le courant, ou de ne pas le transmettre, quand il faut. C'est grâce à ce semi-conducteur que le transistor peut fonctionner en interrupteur : interrupteur fermé quand le semi-conducteur conduit, ouvert quand il bloque le courant. La commande de la résistance du semi-conducteur (le fait qu'il laisse passer ou non le courant) est réalisée par la grille, comme nous allons le voir ci-dessous.
[[File:Transistor CMOS - 1.png|centre|vignette|upright=2|Transistor CMOS]]
Suivant la tension que l'on place sur la grille, celle-ci va se remplir avec des charges négatives ou positives. Cela va entrainer une modification de la répartition des charges dans le semi-conducteur, ce qui modulera la résistance du conducteur. Prenons par exemple le cas d'un transistor NMOS et étudions ce qui se passe selon la tension placée sur la grille. Si on met un zéro, la grille sera vide de charges et le semi-conducteur se comportera comme un isolant : le courant ne passera pas. En clair, le transistor sera équivalent à un interrupteur ouvert. Si on met un 1 sur la grille, celle-ci va se remplir de charges. Le semi-conducteur va réagir et se mettre à conduire le courant. En clair, le transistor se comporte comme un interrupteur fermé.
{|
|[[File:Transistor CMOS - 3.png|vignette|upright=1.5|Transistor NMOS fermé.]]
|[[File:Transistor CMOS - 4.png|vignette|upright=1.5|Transistor NMOS ouvert.]]
|}
===La tension de seuil d'un transistor===
Le fonctionnement d'un transistor est légèrement plus complexe que ce qui a été dit auparavant. Mais pour rester assez simple, disons que son fonctionnement exact dépend de trois paramètres : la tension d'alimentation, le courant entre drain et source, et un nouveau paramètre appelé la tension de seuil.
Appliquons une tension sur la grille d'un transistor NMOS. Si la tension de grille reste sous un certain seuil, le transistor se comporte comme un interrupteur fermé. Le seuil de tension est appelé, très simplement, la '''tension de seuil'''. Au-delà de la tension de seuil, le transistor se comporte comme un interrupteur ouvert, il laisse passer le courant. La valeur exacte du courant dépend de la tension entre drain et source, soit la tension d'alimentation. Elle aussi dépend de la différence entre tension de grille et de seuil, à savoir <math>U_G - U_\text{seuil}</math>.
Le paragraphe qui va suivre est optionnel, mais détaille un peu plus le fonctionnement d'un transistor MOS. Tout ce qu'il faut comprendre est que la tension de seuil est une tension minimale pour ouvrir le transistor. Le plus important à retenir est que l'on ne peut pas baisser la tension d'alimentation sous la tension de seuil, ce qui est un léger problème en termes de consommation énergétique. Ce détail reviendra plus tard dans ce cours, quand nous parlerons de la consommation d'énergie des circuits électroniques.
Dans les cas que nous allons voir dans ce cours, la tension d'alimentation est plus grande que <math>U_G - U_\text{seuil}</math>. Le courant est alors maximal, il est proportionnel à <math>U_G - U_\text{seuil}</math>. Le transistor ne fonctionne alors pas comme un amplificateur, le courant reste le même. Si la tension d'alimentation est plus petite que <math>U_G - U_\text{seuil}</math>, le transistor est en régime linéaire : le courant de sortie est proportionnel à <math>U_G - U_\text{seuil}</math>, ainsi qu'à la tension d'alimentation. Le transistor fonctionne alors comme un amplificateur de courant, dont l'intensité de l'amplification est commandée par la tension.
[[File:MOSFET enhancement-mode n-channel en.svg|centre|vignette|upright=2.5|Relations entre tensions et courant d'un MOSFET à dopage N.]]
==La technologie CMOS==
Les portes logiques que nous venons de voir sont actuellement fabriquées en utilisant des transistors. Il existe de nombreuses manières pour concevoir des circuits à base de transistors, qui portent les noms de DTL, RTL, TLL, CMOS et bien d'autres. Les techniques anciennes concevaient des portes logiques en utilisant des diodes, des transistors bipolaires et des résistances. Mais elles sont aujourd'hui tombées en désuétudes dans les circuits de haute performance. De nos jours, on n'utilise que des logiques MOS (''Metal Oxyde Silicium''), qui utilisent des transistors MOS vus plus haut dans ce chapitre, parfois couplés à des résistances. On distingue :
* La '''logique NMOS''', qui utilise des transistors NMOS associés à des résistances.
* La '''logique PMOS''', qui utilise des transistors PMOS associés à des résistances.
* La '''logique CMOS''', qui utilise des transistors PMOS et NMOS, sans résistances.
Dans cette section, nous allons montrer comment fabriquer des portes logiques en utilisant la '''technologie CMOS'''. Avec celle-ci, chaque porte logique est fabriquée à la fois avec des transistors NMOS et des transistors PMOS. On peut la voir comme un mélange entre la technologie PMOS et NMOS. Tout circuit CMOS est divisé en deux parties : une intégralement composée de transistors PMOS et une autre de transistors NMOS. Chacune relie la sortie du circuit soit à la masse, soit à la tension d'alimentation.
[[File:Principe de la conception de circuit en technologie CMOS.png|centre|vignette|upright=2|Principe de conception d'une porte logique/d'un circuit en technologie CMOS.]]
La première partie relie la tension d'alimentation à la sortie, mais uniquement quand la sortie doit être à 1. Si la sortie doit être à 1, des transistors PMOS vont se fermer et connecter tension et sortie. Dans le cas contraire, des transistors s'ouvrent et cela déconnecte la liaison entre sortie et tension d'alimentation. L'autre partie du circuit fonctionne de la même manière que la partie de PMOS, sauf qu'elle relie la sortie à la masse et qu'elle se ferme quand la sortie doit être mise à 0
[[File:Fonctionnement d'un circuit en logique CMOS.png|centre|vignette|upright=2|Fonctionnement d'un circuit en logique CMOS.]]
Dans ce qui va suivre, nous allons étudier la porte NON, la porte NAND et la porte NOR. La porte de base de la technologie CMOS est la porte NON, les portes NAND et NOR ne sont que des versions altérées de la porte NON qui ajoutent des entrées et quelques transistors. Les autres portes, comme la porte ET et la porte OU, sont construites à partir de ces portes. Nous parlerons aussi de la porte XOR, qui est un peu particulière.
===La porte NON===
Cette porte est fabriquée avec seulement deux transistors, comme indiqué ci-dessous.
[[File:Porte NON fabriquée avec des transistors CMOS. 01.jpg|centre|vignette|upright=1|Porte NON fabriquée avec des transistors CMOS.]]
Si on met un 1 en entrée de ce circuit, le transistor du haut va fonctionner comme un interrupteur ouvert, et celui du bas comme un interrupteur fermé : la sortie est reliée au zéro volt, et vaut donc 0. Inversement, si on met un 0 en entrée de ce petit montage électronique, le transistor du bas va fonctionner comme un interrupteur ouvert, et celui du haut comme un interrupteur fermé : la sortie est reliée à la tension d'alimentation, et vaut donc 1.
[[File:Porte NON fabriquée avec des transistors CMOS - fonctionnement.png|centre|vignette|upright=2|Porte NON fabriquée avec des transistors CMOS - fonctionnement.]]
===Les portes NAND et NOR===
Passons maintenant aux portes logiques à plusieurs entrées. Pour celles-ci, on va devoir utiliser plus de transistors que pour la porte NON, ce qui demande de les organiser un minium. Une porte logique à deux entrées demande d'utiliser au moins deux transistors par entrée : un transistor PMOS et un NMOS par entrée. Rappelons qu'un transistor est associé à une entrée : l'entrée est directement envoyée sur la grille du transistor et commande son ouverture/fermeture. Pour les portes logiques à 3, 4, 5 entrées, la logiques est la même : au minimum deux transistors par entrée, un PMOS et un NMOS.
Nous allons d'abord voir le cas d'une porte NOR/NAND en CMOS. Avec elles, les transistors sont organisées de deux manières, appelées '''transistors en série''' (l'un après l'autre, sur le même fil) et '''transistors en parallèle''' (sur des fils différents). Le tout est illustré ci-dessous. Avec des transistors en série, plusieurs transistors NMOS ou deux PMOS se suivent sur le même fil, mais on ne peut pas mélanger NMOS et PMOS sur le même fil.
[[File:Transistors CMOS en série et en parallèle.png|centre|vignette|upright=2|Transistors CMOS en série et en parallèle]]
====Les portes NAND/NOR à deux entrées====
Voyons d'abord le cas des portes NAND/NOR à deux entrées. Elles utilisent deux transistors NMOS et deux PMOS.
Avec des transistors en série, deux transistors NMOS ou deux PMOS se suivent sur le même fil, mais on ne peut pas mélanger NMOS et PMOS sur le même fil. Avec des transistors en parallèle, c'est l'exact inverse. L'idée est de relier la tension d'alimentation à la sortie à travers deux PMOS transistors distincts, chacun sur son propre fil, sa propre connexion indépendante des autres. Pour la masse (0 volt), il faut utiliser deux transistors NMOS pour la relier à la sortie, avec là encore chaque transistor NMOS ayant sa propre connexion indépendante des autres. En clair, chaque entrée commande un transistor qui peut à lui seul fermer le circuit.
On rappelle deux choses : chaque transistor est associée à une entrée sur sa grille, un transistor se ferme si l'entrée vaut 0 pour des transistors PMOS et 1 pour des NMOS. Avec ces deux détails, on peut expliquer comment fonctionnent des transistors en série et en parallèle. Pour résumer, les transistors en série ferment la connexion quand toutes les entrées sont à 1 (NMOS) ou 0 (PMOS). Avec les transistors en parallèle, il faut qu'une seule entrée soit à 1 (NMOS) ou 0 (PMOS) pour que la connexion se fasse.
Une porte NOR met sa sortie à 1 si toutes les entrées sont à 0, à 0 si une seule entrée vaut 1. Pour reformuler, il faut connecter la sortie à la tension d'alimentation si toutes les entrées sont à 0, ce qui demande d'utiliser des transistors PMOS en série. Pour gérer le cas d'une seule entrée à 1, il faut utiliser deux transistors en parallèle entre la masse et la sortie. Le circuit obtenu est donc celui obtenu dans le premier schéma. Le même raisonnement pour une porte NAND donne le second schéma.
{|
|[[File:Porte NOR fabriquée avec des transistors. 02.png|centre|vignette|upright=1|Porte NOR fabriquée avec des transistors.]]
|[[File:Porte NAND fabriquée avec des transistors. 04.png|centre|vignette|upright=1|Porte NAND fabriquée avec des transistors.]]
|}
Leur fonctionnement s'explique assez bien si on regarde ce qu'il se passe en fonction des entrées. Suivant la valeur de chaque entrée, les transistors vont se fermer ou s'ouvrir, ce qui va connecter la sortie soit à la tension d'alimentation, soit à la masse.
Voici ce que cela donne pour une porte NAND :
[[File:Porte NAND fabriquée avec des transistors - Fonctionnement.png|centre|vignette|upright=2|Porte NAND fabriquée avec des transistors.]]
Voici ce que cela donne pour une porte NOR :
[[File:Porte NOR fabriquée avec des transistors - Fonctionnement.png|centre|vignette|upright=2|Porte NOR fabriquée avec des transistors.]]
====Les portes NAND/NOR/ET/OU à plusieurs entrées====
Les portes NOR/NAND à plusieurs entrées sont construites à partir de portes NAND/NOR à deux entrées auxquelles on rajoute des transistors. Il y a autant de transistors en série que d'entrée, pareil pour les transistors en parallèle. Leur fonctionnement est similaire à leurs cousines à deux entrées. Les portes ET et OU à plusieurs entrées sont construites à partie de NAND/NOR suivies d'une porte NON.
{|
|[[File:NAND plusieurs entrées.png|vignette|NAND plusieurs entrées]]
|[[File:NOR plusieurs entrées.png|vignette|NOR plusieurs entrées]]
|}
En théorie, on pourrait créer des portes avec un nombre arbitraire d'entrées avec cette méthode. Cependant, au-delà d'un certain nombre de transistors en série/parallèle, les performances s'effondrent rapidement. Le circuit devient alors trop lent, sans compter que des problèmes purement électriques surviennent. En pratique, difficile de dépasser la dizaine d'entrées. Dans ce cas, les portes sont construites en assemblant plusieurs portes NAND/NOR ensemble. Et faire ainsi marche nettement mieux pour fabriquer des portes ET/OU que pour des portes NAND/NOR.
====Les portes ET/OU sont fabriquées à partir de NAND/NOR en CMOS====
En logique CMOS, les portes logiques ET et OU sont construites en prenant une porte NAND/NOR et en mettant une porte NON sur sa sortie. Il est théoriquement possible d'utiliser uniquement des transistors en série et en parallèle, mais cette solution utilise plus de transistors.
{|
|[[File:CMOS AND Layout.svg|vignette|Porte ET en CMOS]]
|[[File:CMOS OR.svg|vignette|Porte OU en CMOS]]
|}
Pour ce qui est des portes ET/OU avec beaucoup d'entrées, il est fréquent qu'elles soit construites en combinant plusieurs portes ET/OU moins complexes. Par exemple, une porte ET à 32 entrées sera construite à partir de portes à seulement 4 ou 5 entrées. Il existe cependant une alternative qui se marie nettement mieux avec la logique CMOS. Rappelons qu'en logique CMOS, les portes NAND et NOR sont les portes à plusieurs entrées les plus simples à fabriquer. L'idée est alors de combiner des portes NAND/NOR pour créer une porte ET/OU.
Voici la comparaison entre les deux solutions pour une porte ET :
{|
|[[File:12 input AND gate via cascade of AND gates.svg|vignette|ET plusieurs entrées]]
|[[File:12-input AND gate from NAND and NOR.svg|vignette|ET plusieurs entrées]]
|}
Voici la comparaison entre les deux solutions pour une porte OU :
{|
|[[File:12-input OR gate via cascade of OR gates.svg|vignette|OU plusieurs entrées]]
|[[File:12-input OR gate via NOR and NAND gates.svg|vignette|OU plusieurs entrées]]
|}
D'autres portes mélangent transistors en série et en parallèle d'une manière différente. Les portes ET-OU-NON et OU-ET-NON en sont un bon exemple.
===Une méthode générale===
Il existe une méthode générale pour créer des portes logiques à deux entrées. Avec elle, il faut repartir du montage avec deux transistors NMOS/PMOS en série. En théorie, il permet de relier la sortie à la tension d'alimentation/zéro volt si toutes les entrées sont à 0 (PMOS) ou 1 (NMOS). L'idée est de regarder ce qui se passe si on fait précéder l'entrée d'un transistor par une porte NON. Pour deux transistors, cela fait 4 possibilités, 8 au total si on fait la différence entre PMOS et NMOS. Voici les valeurs d'entrées qui ferment le montage à transistor en série, suivant l’endroit où on place la porte NON.
[[File:Transistors CMOS en série.png|centre|vignette|upright=2|Transistors CMOS en série]]
Mine de rien, avec ces 8 montages de base, on peut créer n'importe quelle porte logique à deux entrées. Il faut juste se souvenir que d'après les règles du CMOS, les deux transistors PMOS se placent entre la tension d'alimentation et la sortie, et servent à mettre la sortie à 1. Pour les deux transistors NMOS, ils sont reliés à la masse et mettent la sortie à 0. Pour mieux comprendre, prenons l'exemple d'une porte XOR.
Appliquons la méthode que je viens d'expliquer avec une porte XOR. Le résultat est sous-optimal, mieux vaut fabriquer une porte XOR en combinant d'autres portes logiques, mais c'est pour l'exemple. L'idée est très simple : on prend la table de vérité de la porte logique, et on associe deux transistors en série pour chaque ligne. Regardons d'abord la table de vérité ligne par ligne :
{|class="wikitable"
|-
!Entrée 1!!Entrée 2!!Sortie
|-
||0||0||0
|-
||0||1||1
|-
||1||0||1
|-
||1||1||0
|}
La première ligne a ses deux entrées à 0 et sort un 0. La sortie est à 0, ce qui signifie qu'il faut regarder sur la ligne des transistors NMOS, qui connectent la sortie à la masse. Le montage qui se ferme quand les deux entrées sont à 0 est celui tout en bas à droite du tableau précédent, à savoir deux transistors NMOS avec deux portes NON.
Les deux lignes du milieu ont une entrée à 0 et une à 1, et leur sortie à 1. La sortie à 1 signifie qu'il faut regarder sur la ligne des transistors PMOS, qui connectent la tension d'alimentation à la sortie. Les deux montages avec deux entrées différentes sont les deux situés au milieu, avec deux transistors PMOS et une porte logique.
La dernière ligne a ses deux entrées à 1 et sort un 0. La sortie est à 0, ce qui signifie qu'il faut regarder sur la ligne des transistors NMOS, qui connectent la sortie à la masse. Le montage qui se ferme quand les deux entrées sont à 1 est celui tout en bas à gauche du tableau précédent, à savoir deux transistors NMOS seuls.
En combinant ces quatre montages, on trouve le circuit suivant. Notons qu'il n'y a que deux portes NON marquées en vert et bleu : on a juste besoin d'inverser la première entrée et la seconde, pas besoin de portes en plus. Les portes NOn sont en quelque sorte partagées entre les transistors PMOS et NMOS.
[[File:Cmos xor.svg|centre|vignette|upright=1|class=transparent|Porte XOR en logique CMOS.]]
Si les deux entrées sont à 1, alors les deux transistors en bas à gauche vont se fermer et connecter la sortie au 0 volt, les trois autres groupes ayant au moins un transistor ouvert. Si les deux entrées sont à 0, alors les deux transistors en bas à droite vont se fermer et connecter la sortie au 0 volt, les autres quadrants ayant au moins un transistor ouvert. Et pareil quand les deux bits sont différents : un des deux quadrants aura ses deux transistors fermés, alors que les autres auront au moins un transistor ouvert, ce qui connecte la sortie à la tension d'alimentation.
On peut construire la porte NXOR sur la même logique. Et toutes les portes logiques peuvent se construire avec cette méthode. Le nombre de transistors est alors le même : on utilise 12 transistors au total : 4 paires de transistors en série, 4 transistors en plus pour les portes NON. Que ce soit pour la porte XOR ou NXOR, on économise beaucoup de transistors comparés à la solution naïve, qui consiste à utiliser plusieurs portes NON/ET/OU. Si on ne peut pas faire mieux dans le cas de la porte XOR/NXOR, sachez cependant que les autres portes construites avec cette méthode utilisent plus de transistors que nécessaire. De nombreuses simplifications sont possibles, comme on le verra plus bas.
Dans les faits, la méthode n'est pas utilisée pour les portes XOR. À la place, les portes XOR sont construites à base d'autres portes logiques plus simples, comme des portes NAND/NOR/ET/OU. Le résultat est que l'on a un circuit à 10 transistors, contre 12 avec la méthode précédente.
[[File:CMOS10TrXOR.svg|centre|vignette|Porte XOR en CMOS en 10 transistors.]]
===Les circuits plus complexes (''full adder'', ...)===
Il est possible de fusionner plusieurs portes ET-OU-NON en un seul circuit à transistors CMOS, ce qui permet des simplifications assez impressionnantes. Pour donner un exemple, le schéma suivant compare l'implémentation d'un circuit qui fait un ET entre les deux premières entrées, puis un NOR entre le résultat du ET et la troisième entrée. L'implémentation à droite du schéma avec une porte ET et une porte NOR prend 10 transistors. L'implémentation la plus simple, à gauche du schéma, prend seulement 6 transistors.
[[File:AOI21 complex vs standard gates.svg|centre|vignette|upright=1.5|Porte ET-OU-NON à trois entrées (de type 2-1) à gauche, contre la combinaison de plusieurs portes à droite.]]
Une conséquence est que des circuits assez complexes gagnent à être fabriqués directement avec des transistors. Prenons l'exemple de l'additionneur complet. Une implémentation naïve, avec 5 portes logiques, utilise beaucoup de transistors. Deux portes XOR, deux portes OU et une porte ET, cela dépasse la trentaine de transistors. Faisons le compte : 10 transistors par porte XOR, 6 pour les trois autres portes, cela fait 38 transistors. Les additionneurs des processeurs modernes sont optimisés directement au niveau des transistors, pour leur permettre d'économiser des transistors. Par exemple, l'implémentation suivante en utilise seulement 24 !
[[File:Inverting full adder CMOS 24T.svg|centre|vignette|upright=1.5|Additionneur complet fabriqué avec 24 transistors.]]
Et c'est sans compter que l'additionneur complet naïf n'est pas forcément le top du top en termes de performances. Là encore, une implémentation avec des transistors peut être optimisée pour être plus rapide, notamment au niveau du calcul de la retenue, ou au contraire d'économiser des transistors. Tout dépend de l'objectif visé, certains circuit optimisant à fond pour la vitesse, d'autres pour le nombre de transistors, d'autres font un compromis entre les deux. Les circuits de ce genre sont très nombreux, trop pour qu'on puisse les citer.
==La ''pass transistor logic''==
La '''''pass transistor logic''''' est une forme particulière de technologie CMOS, une version non-conventionnelle. Avec le CMOS normal, la porte de base est la porte NON. En modifiant celle-ci, on arrive à fabriquer des portes NAND, NOR, puis les autres portes logiques. Les transistors sont conçus de manière à connecter la sortie, soit la tension d'alimentation, soit la masse. Avec la ''pass transistor logic'', le montage de base est un circuit interrupteur, qui connecte l'entrée directement sur la sortie. Le circuit interrupteur n'est autre que les portes à transmission vues il y a quelques chapitres.
La ''pass transistor logic'' a été utilisée dans des processeurs commerciaux, comme dans l'ARM1, le premier processeur ARM. Sur l'ARM1, les concepteurs ont décidé d'implémenter certains circuits avec des multiplexeurs. La raison n'est pas une question de performance ou d'économie de transistors, juste que c'était plus pratique à fabriquer, sachant que le processeur était le premier CPU ARM de l'entreprise.
S'il est intéressant de voir la ''pass transistor logic'', c'est qu'elle est souvent utilisée pour simplifier certains circuits CMOS normaux. Par exemple, il est possible d'implémenter toutes les portes logiques en CMOS normal, sauf la porte XOR qui est implémentée avec la ''pass transistor logic''. Cela permet une petite économie de circuits, vu que la porte XOR est bien plus simple en ''pass transistor logic''. La ''pass transistor logic'' est aussi utilisée pour simplifier les multiplexeurs et les démultiplexeurs, et certains additionneurs. Aussi, ne soyez pas étonné si nous revenons sur certains circuits vus dans les chapitres précédents, dans cette section.
===La porte à transmission===
Le circuit de base est une porte logique que nous n'avons pas encore vu pour le moment, appelée la '''porte à transmission'''. Elle agit comme un interrupteur commandé par une entrée de commande. Pour rappel, un interrupteur fermé laisse passer le courant, alors qu'un interrupteur fermé ne le laisse pas passer. La porte à transmission fait pareil : soit elle connecte l'entrée et la sortie, soit elle les déconnecte. Pour choisir entre les deux, une porte à transmission possède une entrée de commande sur laquelle on envoie un bit de commande. La porte est fermée si le bit de commande est à 1, ouvert s'il est à 1.
[[File:Tristate buffer.svg|centre|vignette|upright=2|Porte à transmission.]]
Il est possible de la voir comme une porte OUI améliorée dont la table de vérité est celle-ci :
{|class="wikitable"
|-
!Commande!!Entrée!!Sortie
|-
||0||0||Déconnexion
|-
||0||1||Déconnexion
|-
||1||0||0
|-
||1||1||1
|}
Intuitivement, on se dit qu'une porte à transmission est faite avec un seul, vu qu'un transistor fonctionne déjà comme un interrupteur commandable. Mais une porte à transmission est construite avec deux transistors. La raison la plus intuitive est que la logique CMOS associe toujours un transistor PMOS à un transistor NMOS. Mais une autre raison, plus importante, est que les transistors NMOS et PMOS ne sont pas des interrupteurs parfaits. Les NMOS laissent passer les 0, mais laissent mal passer les 1 : la tension en sortie, pour un 1, est atténuée. Et c'est l'inverse pour les PMOS, qui laissent bien passer les 1 mais fournissent une tension de sortie peut adéquate pour les 0. Donc, deux transistors permettent d'obtenir une tension de sortie convenable.
Le montage de base est illustré ci-dessous. Les deux entrées A et /A sont l'inverse l'une de l'autre, ce qui fait qu'il faut en théorie rajouter une porte NON CMOS normale, pour obtenir le circuit complet. Mais dans les faits, on arrive souvent à s'en passer. Ce qui fait que la porte à transmission est définie comme étant le circuit à deux transistors précédents.
[[File:CMOS transmission gate.PNG|centre|vignette|upright=1|CMOS Transmission gate]]
Une porte logique en logique CMOS connecte directement sa sortie sur la tension d'alimentation ou la masse. Mais dans une porte logique en ''pass transistor logic'', il n'y a ni tension d'alimentation, ni masse (O Volts). La sortie est connectée sur l'entrée, rien de plus. Et cela explique plusieurs différences entre CMOS et ''pass transistor logic''.
La première différence est que certaines portes logiques sont impossibles avec la ''pass transistor logic'' pure. Les portes logiques CMOS peuvent générer un 1 ou un 0 distinct de ce qu'il y a sur leur entrée. Par exemple, elles peuvent sortir un 1 même si toutes leurs entrées sont à 0, car elles reliées à la tension d'alimentation. Les portes à transmission ne peuvent pas le faire. Elles se contentent de recopier une entrée sur leur sortie : impossible d'avoir un 1 en sortie avec uniquement des zéros en entrée. La conséquence est qu'il n'est pas possible de créer de porte NON, ni de porte NOR/NAND directement.
Une autre différence est que l’électricité est fournie par l'entrée, ce qui fait qu'elle se dissipe un peu lors du passage dans une porte à transmission. Le résultat est que si on enchaine les portes à transmission, la tension de sortie a tendance à diminuer, et ce d'autant plus vite qu'on a enchainé de portes à transmission. Il faut souvent rajouter des portes OUI pour restaurer les tensions adéquates, à divers endroits du circuit. La ''pass transistor logic'' mélange donc porte OUI/NON CMOS normales avec des portes à transmission. Afin de faire des économies de circuit, on utilise parfois une seule porte NON CMOS comme amplificateur, ce qui fait que de nombreux signaux sont inversés dans les circuits, sans que cela ne change grand chose si le circuit est bien conçu.
Par contre, ce défaut entraine aussi des avantages. Notamment, la consommation d'énergie est fortement diminuée. Seules les portes amplificatrices, les portes NON CMOS, sont alimentées en tension/courant. Le reste des circuits n'est pas alimenté, car il n'y a pas de connexion à la tension d'alimentation et la masse. De même, la ''pass transistor logic'' utilise généralement moins de transistors pour implémenter une porte logique, et un circuit électronique en général. L'exemple avec la porte XOR est assez parlant : on passe de 12 à 6 transistors par porte XOR. Des circuits riches en portes XOR, comme les circuits additionneurs, gagnent beaucoup à utiliser des portes à transmission.
===Les multiplexeurs en ''pass transistor logic''===
Les portes à transmission sont très utilisées dans les multiplexeurs et les démultiplexeurs. Prenons l'exemple d'un multiplexeur 2 vers 1. L'idée est de relier chaque entrée à la sortie par l'intermédiaire d'une porte à transmission. Quand l'une sera ouverte, l'autre sera fermée. Le résultat n'utilise que deux portes à transmission et une porte NON. Voici le circuit qui en découle :
[[File:Multiplexeur fabriqué avec des portes à transmission et-ou des tampons trois-états.png|centre|vignette|upright=1.5|Multiplexeur fabriqué avec des portes à transmission]]
En utilisant les portes à transmission CMOS vues plus haut, on obtient le circuit suivant :
[[File:Multiplexeur fabriqué avec des portes à transmission.png|centre|vignette|upright=1.5|Multiplexeur fabriqué avec des portes à transmission CMOS.]]
La même méthode fonctionne pour les multiplexeurs avec plus de deux entrées. Pour rappel, un multiplexeur est composé d'un décodeur qui commande une couche de portes ET, les sorties des portes ET sont combinées avec une porte OU.
[[File:Multiplexeur 2 vers 4 conçu à partir d'un décodeur.png|centre|vignette|upright=2|Multiplexeur 2 vers 4 conçu à partir d'un décodeur]]
Il est possible de remplacer les portes ET par des portes à transmission. L'idée est de ne connecter sur la sortie que l'entrée qui a été sélectionnée et de déconnecter les autres. En faisant ainsi, on peut se passer de la porte OU, qui est remplacée par un simple fil. Il n'y a qu'une seule entrée qui est connectée à la sortie à chaque instant, pas besoin d'utiliser de porte OU. Le résultat est le circuit suivant :
[[File:Mux Funktionsprinzip.svg|centre|vignette|upright=1.5|Multiplexeur basé sur des interrupteurs.]]
Les multiplexeurs en ''pass transistor logic'' sont plus simple que leurs cousins en CMOS normal. Beaucoup de circuits utilisent des multiplexeurs et nous en avons déjà vu pas mal : les circuits de décalage, les bascules, les additionneurs, quelques autres. Comment se comportent-ils si leurs MUX sont implémentés avec la ''pass transistor logic'' ? La réponse est que l'usage de la ''pass transistor logic'' ne change pas la donne pour les circuits de décalage, alors qu'elle change drastiquement la donne pour les bascules et les additionneurs. Voyons cela dans le détail.
===Les bascules D avec des portes à transmission===
[[File:Multiplexer-based latch (positive).svg|class=transparent|right|Bascule D créée avec un multiplexeur.]]
Une bascule D est, pour rappel, un circuit qui mémorise un bit. Elle peut être implémenté avec un multiplexeur 2 vers 1, en bouclant la sortie du multiplexeur sur une entrée. Pour un multiplexeur fabriqué avec des portes CMOS, boucler sa sortie sur son entrée ne pose pas de problème. Mais avec des portes à transmission, le circuit ne fonctionne pas. Le problème est qu'une porte à transmission est électriquement équivalente à un simple interrupteur, ce qui réduit le circuit à une boucle entre un interrupteur et un fil. Le courant qui circule dans le fil et l'interrupteur se dissipe rapidement du fait de la résistance du fil et disparait en quelques micro- ou millisecondes.
La solution est de rajouter une porte OUI (celle qui recopie son entrée sur sa sortie) dans la boucle pour régénérer le signal électrique. Et la manière la plus simple de fabriquer une porte OUI utilise deux portes NON qui se suivent, ce qui donne le circuit ci-dessous. Cela garantit que la boucle est alimentée en courant/tension quand elle est fermée. Son contenu ne s'efface pas avec le temps, mais est automatiquement régénéré par les portes NON. L'ensemble sera stable tant que la boucle est fermée.
[[File:Implémentation conceptuelle d'une bascule D.png|centre|vignette|upright=2|Implémentation d'une bascule D avec des portes à transmission.]]
Le circuit précédent utilise seulement 10 transistors, alors qu'un multiplexeur en CMOS normal en utilise 14. Un autre avantage est que ce circuit permet d'avoir les deux sorties Q : la sortie Q inversée est prise en sortie de la première porte NON. Une variante du circuit précédent est utilisée dans les mémoires dites SRAM, qui sont utilisées pour les registres du processeur ou ses mémoires caches. Mais nous verrons cela plus en détail dans le chapitre sur les cellules mémoires.
Certaines bascules D ont une entrée R, qui met à zéro le bit mémorisé dans la bascule quand l'entrée R est à 1. Pour cela, elles ajoutent un circuit de mise à zéro, que nous avons déjà vu dans le chapitre sur les opérations bit à bit. Ce circuit de mise à zéro est placé après la seconde porte NON, et sa sortie est bouclée sur l'entrée du circuit. Le circuit obtenu est le suivant :
[[File:Bascule D avec entrée Reset.png|centre|vignette|upright=2|Bascule D avec entrée Reset]]
Le circuit peut se simplement fortement en fusionnant les trois portes situées entre les deux sorties Q, à savoir la porte ET et les deux portes NON qui la précédent. La loi de De Morgan nous dit que l'ensemble est équivalent à une porte NOR, ce qui donne le circuit suivant :
[[File:Bascule D avec entrée Reset, simplifiée.png|centre|vignette|upright=2|Bascule D avec entrée Reset, simplifiée]]
===L'additionneur ''Manchester Carry Chain''===
Les portes à transmission étaient autrefois utilisées pour simplifier les additionneurs, et plus précisément les additionneurs à propagation de retenue. Pour rappel, un additionneur à propagation de retenue additionne deux opérandes, bit par bit. Elle additionne les deux bits de poids faible, ce qui donne un bit de résultat et un bit de retenue. Le bit de retenue est alors envoyé à la colonne suivante, où deux bits sont additionnés avec la retenue, et ainsi de suite. De tels circuits sont composées en enchainant des additionneurs complets, des circuits qui additionnent trois bits : deux bits d'opérandes et une retenue.
[[File:Ripplecarryadder.png|centre|vignette|upright=2.5|Additionneur à propagation de retenue.]]
Un défaut des additionneurs à propagation de retenue est leur lenteur. Le résultat n'est connu qu'une fois que les retenues ont été propagées d'une colonne à l'autre. Et cette propagation est assez lente. Les additionneurs modernes utilisent des techniques très complexes pour résoudre ce problème, comme nous l'avons vu il y a quelques chapitres. Mais ces solutions utilisent beaucoup plus de transistors. De nombreux processeurs comme le 8086 d'Intel, ou d'autres processeurs 8-16 bits de cette époque, ne pouvaient pas se le permettre. À la place, ils utilisaient une optimisation à base de portes à transmission.
L'optimisation en question s'appelle la ''Manchester Carry Chain''. Elle utilise des additionneurs complets construits avec un multiplexeur, comme illustré ci-dessous,. Nous avions vu ce circuit dans le chapitre sur les additionneurs. Avec la ''Manchester Carry Chain'', le multiplexeur est implémenté avec des portes à transmission, comme illustré ci-dessous. L'avantage est que la propagation de la retenue est beaucoup plus rapide. Pas besoin de traverser des portes logiques, la propagation de la retenue ne rencontre pas d'obstacle, si ce n'est la résistance des fils, elle ne subit pas de délai lié au temps de propagation des portes logiques.
{|
|[[File:Additionneur complet basé sur un MUX.png|centre|vignette|upright=2|Additionneur complet basé sur un MUX]]
|[[File:Manchester carry chain.png|centre|vignette|upright=2|Manchester carry chain]]
|}
Cependant, l'usage de portes à transmission a quelques défauts. Le principal est que, vu que la retenue d'entrée est envoyée sur la sortie à travers des interrupteurs, la tension sur la retenue de sortie est plus faible que la tension de la retenue d'entrée. Ce qui pose des problèmes quand on doit enchainer plusieurs additionneurs de ce type, mais laissons cela pour plus tard. Il existe une version de cet additionneur en logique dynamique, où les portes à transmission sont utilisées comme des condensateurs, mais nous n'en parlerons pas ici.
===Les portes logiques construites avec des multiplexeurs 2 vers 1===
La ''pass transistor logic'' est rarement utilisée, à une exception de taille : la porte XOR. Pour rappel, une porte XOR est une sorte d'inverseur commandable, à savoir un circuit prend un bit d'entrée A, et l'inverse ou non suivant la valeur d'un bit de commande B. Et cela nous dit comment implémenter une porte XOR avec un multiplexeur. Un multiplexeur choisit sa sortie parmi deux entrées : A et <math>\overline{A}</math>, le second bit B est envoyé sur l'entrée de commande ! Le circuit obtenu, est celui-ci :
[[File:XOR implémenté avec un MUX.png|centre|vignette|upright=2.5|XOR implémenté avec un MUX.]]
Il est possible de simplifier le circuit en rusant un peu, ce qui donne le circuit ci-dessous. Comme vous pouvez les voir, il mélange porte à transmission et portes NON CMOS normales.
[[File:CmosXORGate.svg|centre|vignette|upright=1|XOR en ''pass transistor logic'']]
Dans les deux cas, l'économie en transistors est drastique comparé au CMOS normal. Plus haut, nous avons illustré plusieurs versions possibles d'une porte XOR en CMOS normal, toutes de 12 transistors. Avec ''pass transistor logic'', une porte XOR utilise 4 à 8 transistors. Le gain est clairement significatif, suffisamment pour utiliser la ''pass transistor logic'' pour la porte XOR, quitte à utiliser des portes CMOS normales pour le reste. Quelques processeurs faisaient cela dans le temps, comme le mythique processeur Z80.
La ''pass transistor logic'' implémente les autres portes logiques avec un multiplexeur 2 vers 1 couplé à quelques portes NON ! Et intuitivement, vous vous dites que les deux entrées de la porte logique correspondent aux deux entrées de donnée du multiplexeur. Sauf qu'en réalité, un bit d'entrée est envoyé sur l'entrée de commande, et l'autre bit sur une entrée de donnée du multiplexeur. Suivant ce qu'on met sur la seconde entrée du multiplexeur, on obtient une porte ET, OU, XOR, etc. Il y a quatre choix possibles : soit on envoie un 0, soit un 1, soit l'inverse du bit d'entrée, soit envoyer deux fois le bit d'entrée.
: Plus haut, nous avions dit que les portes à transmission ne permettaient pas d'implémenter certaines portes logiques, car elles recopient leur entrée sur leur sortie. Impossible d'avoir un 1 en sortie si les entrées valent 0. Mais remarquez que les circuits précédents utilisent les portes NON. Ce sont ces portes NON qui fournissent l'électricité en sortie nécessaire pour avoir un 1 en sortie alors que les entrées sont à 0.
[[File:Portes logiques faites à partir de multiplexeurs.png|centre|vignette|upright=2|Portes logiques faites à partir de multiplexeurs]]
==Les technologies PMOS et NMOS==
Dans ce qui va suivre, nous allons voir la technologie NMOS et POMS. Pour simplifier, la technologie NMOS est équivalente aux circuits CMOS, sauf que les transistors PMOS sont remplacés par une résistance. Pareil avec la technologie PMOS, sauf que c'est les transistors NMOS qui sont remplacés par une résistance. Les deux technologies étaient utilisées avant l'invention de la technologie CMOS, quand on ne savait pas comment faire pour avoir à la fois des transistors PMOS et NMOS sur la même puce électronique, mais sont aujourd'hui révolues. Nous en parlons ici, car nous évoquerons quelques circuits en PMOS/NMOS dans le chapitre sur les cellules mémoire, mais vous pouvez considérer que cette section est facultative.
===Le fonctionnement des logiques NMOS et PMOS===
Avec la technologie NMOS, les portes logiques sont fabriqués avec des transistors NMOS intercalés avec une résistance.
[[File:Circuit en logique NMOS.png|centre|vignette|upright=2|Circuit en logique NMOS.]]
Leur fonctionnement est assez facile à expliquer. Quand la sortie doit être à 1, tous les transistors sont ouverts. La sortie est connectée à la tension d'alimentation et déconnectée de la masse, ce qui fait qu'elle est mise à 1. La résistance est là pour éviter que le courant qui arrive dans la sortie soit trop fort. Quand au moins un transistor NMOS qui se ferme, il connecte l'alimentation à la masse, les choses changent. Les lois compliquées de l'électricité nous disent alors que la sortie est connectée à la masse, elle est donc mise à 0.
[[File:Fonctionnement d'un circuit en technologie NMOS.png|centre|vignette|upright=2|Fonctionnement d'un circuit en technologie NMOS.]]
Les circuits PMOS sont construits d'une manière assez similaire aux circuits CMOS, si ce n'est que les transistors NMOS sont remplacés par une résistance qui relie ici la masse à la sortie. Rien d'étonnant à cela, les deux types de transistors, PMOS et NMOS, ayant un fonctionnement inverse.
===Les portes logiques en NMOS et PMOS===
Que ce soit en logique PMOS ou NMOS, les portes de base sont les portes NON, NAND et NOR. Les autres portes sont fabriquées en combinant des portes de base. Voici les circuits obtenus en NMOS et PMOS:
{|class="wikitable flexible"
|-
! colspan="5 | NMOS
|-
| class="transparent" | [[File:NMOS NOT.svg|class=transparent|100px|Porte NON NMOS.]]
| class="transparent" | [[File:NMOS NAND.svg|class=transparent|100px|NMOS-NAND]]
| class="transparent" | [[File:NMOS NOR.png|100px|NMOS-NOR]]
| class="transparent" | [[File:NMOS AND gate.png|100px|NMOS AND]]
| class="transparent" | [[File:NMOS OR gate.png|100px|NMOS OR]]
|-
! colspan="5 | PMOS
|-
| class="transparent" | [[File:PMOS NOT.png|100px|PMOS NOT]]
| class="transparent" | [[File:PMOS NAND corr.png|100px|PMOS NAND]]
| class="transparent" | [[File:PMOS NOR corr.png|100px|PMOS NOR]]
| class="transparent" |
| class="transparent" | [[File:PMOS OR gate.png|100px|PMOS OR]]
|}
====Les portes logiques de base en NMOS====
Le circuit d'une porte NON en technologie NMOS est illustré ci-dessous. Le principe de ce circuit est similaire au CMOS, avec quelques petites différences. Si on envoie un 0 sur la grille du transistor, il s'ouvre et connecte la sortie à la tension d'alimentation à travers la résistance. À l'inverse, quand on met un 1 sur la grille, le transistor se ferme et la sortie est reliée à la masse, donc mise à 0. Le résultat est bien un circuit inverseur.
{|class="wikitable flexible"
|[[File:NMOS NOT.svg|class=transparent|Porte NON NMOS.]]
|[[File:Not.PNG|class=transparent|Porte NON NMOS : fonctionnement.]]
|}
La porte NOR est similaire à la porte NON, si ce n'est qu'il y a maintenant deux transistors en parallèle. Si l'une des grilles est mise à 1, son transistor se fermera et la sortie sera mise à 0. Par contre, quand les deux entrées sont à 0, les transistors sont tous les deux ouverts, et la sortie est mise à 1. Le comportement obtenu est bien celui d'une porte NOR.
{|class="wikitable flexible"
|[[File:NMOS NOR.png|NMOS-NOR-gate]]
|[[File:Funktionsprinzip eines NOR-Gatters.png|class=transparent|Fonctionnement d'une porte NOR NMOS.]]
|}
La porte NAND fonctionne sur un principe similaire au précédent, si ce n'est qu'il faut que les deux grilles soient à zéro pour obtenir une sortie à 1. Pour mettre la sortie à 0 quand seulement les deux transistors sont ouverts, il suffit de les mettre en série, comme dans le schéma ci-dessous. Le circuit obtenu est bien une porte NAND.
{|class="wikitable flexible"
|[[File:NMOS NAND.svg|class=transparent|centre|NMOS-NAND-gate]]
|[[File:Funktionsprinzip eines NAND-Gatters.png|class=transparent|centre|Funktionsprinzip eines NAND-Gatters]]
|}
===Les avantages et inconvénients des technologies CMOS, PMOS et NMOS===
La technologie PMOS et NMOS ne sont pas totalement équivalentes, niveau performances. Ces technologies se distinguent sur plusieurs points : la vitesse des transistors et leur consommation énergétique.
La vitesse des circuits NMOS/PMOS/CMOS dépend des transistors eux-mêmes. Les transistors PMOS sont plus lents que les transistors NMOS, ce qui fait que les circuits NMOS sont plus rapides que les circuits PMOS. Les circuits CMOS ont une vitesse intermédiaire, car ils contiennent à la fois des transistors NMOS et PMOS.
Pour la consommation électrique, les résistances sont plus goumandes que les transistors. En PMOS et NMOS, la résistance est traversée par du courant en permanence, peu importe l'état des transistors. Et résistance traversée par du courant signifie consommation d'énergie, dissipée sous forme de chaleur par la résistance. Il s'agit d'une perte sèche d'énergie, une consommation d'énergie inutile. En CMOS, l'absence de résistance fait que la consommation d'énergie est liée aux transistors, et celle-ci est beaucoup plus faible que pour une résistance.
Les transistors PMOS sont plus simples à fabriquer que les NMOS, ils sont plus simples à sortir d'usine. Les premiers processeurs étaient fabriqués en logique PMOS, plus simple à fabriquer. Puis, une fois la fabrication des circuits NMOS maitrisée, les processeurs sont tous passés en logique NMOS du fait de sa rapidité. La logique CMOS a mis du temps à remplacer les logiques PMOS et NMOS, car il a fallu maitriser les techniques pour mettre à la fois des transistors NMOS et PMOS sur la même puce. Les premières puces électroniques étaient fabriquées en PMOS ou en NMOS, parce qu'on n’avait pas le choix. Mais une fois la technologie CMOS maitrisée, elle s'est imposée en raison de deux gros avantages : une meilleure fiabilité (une meilleure tolérance au bruit électrique), et une consommation électrique plus faible.
==La logique dynamique MOS==
La '''logique dynamique''' permet de créer des portes logiques ou des bascules d'une manière assez intéressante. Et aussi étonnant que cela puisse paraître, le signal d’horloge est alors utilisé pour fabriquer des circuits combinatoires !
===Un transistor MOS peut servir de condensateur===
Les technologies CMOS conventionnelles mettent la sortie d'une porte logique à 0/1 en la connectant à la tension d'alimentation ou à la masse. La logique ''pass transistor'' transfère la tension et le courant de l'entrée vers la sortie. Dans les deux cas, la sortie est connectée directement ou indirectement à la tension d'alimentation quand on veut lui faire sortie un 1. Avec la logique dynamique, ce n'est pas le cas. La sortie est maintenue à 0 ou à 1 en utilisant un réservoir d'électron qui remplace la tension d'alimentation.
En électronique, il existe un composant qui sert de réservoir à électricité : il s'agit du '''condensateur'''. On peut le charger en électricité, ou le vider pour fournir un courant durant une petite durée de temps. Par convention, un condensateur stocke un 1 s'il est rempli, un 0 s'il est vide. L'intérieur d'un condensateur est formé de deux couches de métal conducteur, séparées par un isolant électrique. Les deux plaques de conducteur sont appelées les armatures du condensateur. C'est sur celles-ci que les charges électriques s'accumulent lors de la charge/décharge d'un condensateur. L'isolant empêche la fuite des charges d'une armature à l'autre, ce qui permet au condensateur de fonctionner comme un réservoir, et non comme un simple fil.
Il est possible de fabriquer un pseudo-condensateur avec un transistor MOS. En effet, tout transistor MOS a un pseudo-condensateur caché entre la grille et la liaison source-drain. Pour comprendre ce qui se passe dans ce transistor de mémorisation, il faut savoir ce qu'il y a dans un transistor CMOS. À l'intérieur, on trouve une plaque en métal appelée l'armature, un bout de semi-conducteur entre la source et le drain, et un morceau d'isolant entre les deux. L'ensemble forme donc un condensateur, certes imparfait, qui porte le nom de capacité parasite du transistor. Suivant la tension qu'on envoie sur la grille, l'armature va se remplir d’électrons ou se vider, ce qui permet de stocker un bit : une grille pleine compte pour un 1, une grille vide compte pour un 0.
[[File:Transistor CMOS - 1.png|centre|vignette|upright=2|Anatomie d'un transistor CMOS]]
L'utilisation de transistors MOS comme condensateur n'est pas spécifique à la logique dynamique. Certains mémoires RAM le font, comme nous le verrons dans le chapitre sur les cellules mémoires. Aussi, il est intéressant d'en parler maintenant, histoire de préparer le terrain. D'ailleurs, les mémoires RAM sont remplies de logique dynamique.
===L'utilisation des pseudo-condensateurs en logique dynamique===
Un circuit conçu en logique dynamique contient un transistor est utilisé comme condensateur. Il s’insère entre la tension d'alimentation et la sortie du circuit. Son rôle est simple : lorsqu'on utilise la sortie, le condensateur se vide, ce qui place la sortie à 1. le reste du temps, le condensateur est relié à la tension d'alimentation et se charge. Un circuit en logique dynamique effectue son travail en deux phases : une phase d'inactivité où il remplit ses condensateurs, et une phase où sa sortie fonctionne. Les deux phases sont appelées la '''phase de précharge''' et la '''phase d'évaluation'''. La succession de ces deux phases est réalisée par le signal d'horloge : la première phase a lieu quand le signal d'horloge est à 1, l'autre quand il est à 0.
Voici un exemple de porte NAND en logique dynamique MOS. La porte est alors réalisée avec des transistors NMOS et PMOS, le circuit ressemble à ce qu'on a en logique NMOS. En bas, on trouve les transistors NMOS pour relier la sortie au 0 volt. Mais au-dessus, on trouve un transistor CMOS qui remplace la résistance. Le fonctionnement du circuit est simple. Quand l'entrée ''clock'' est à 1, le condensateur se charge, les deux transistors NMOS sont déconnectés de la masse et le circuit est inactif. Puis, quand ''clock'' passe à 0, Le transistor PMOS se comporte en circuit ouvert, ce qui déconnecte la tension d'alimentation. Et son pseudo-condensateur se vide, ce qui fournit une tension d'alimentation de remplacement temporaire. Le transistor NMOS du bas se ferme, ce qui fait que les deux transistors A et B décident de si la sortie est connectée au 0 volt ou non. Si c'est le cas, le pseudo-condensateur se vide dans le 0 volt et la sortie est à 0. Sinon, le pseudo-condensateur se vide dans la sortie, ce qui la met à 1.
[[File:Dlnand.svg|centre|vignette|Porte NAND en logique CMOS.]]
Il est aussi possible de créer une bascule D en utilisant la logique dynamique. L'idée est de prendre une bascule D normale, mais d'ajouter un fonctionnement en deux étapes en ajoutant des transistors/interrupteurs. Pour rappel, une bascule D normale est composée de deux inverseurs reliés l'un à l'autre en formant une boucle, avec un multiplexeur pour permettre les écritures dans la boucle.
[[File:Implémentation conceptuelle d'une bascule D.png|centre|vignette|upright=2|Implémentation conceptuelle d'une bascule D]]
[[File:Animation du fonctionnement d'une bascule.gif|vignette|upright=2|Animation du fonctionnement de la bascule précédente.]]
Le circuit final ajoute deux transistors entre les inverseurs tête-bêche. Les transistors en question sont reliés à l'horloge, l'un étant ouvert quand l'autre est fermé. Grâce à eux, le bit mémorisé circule d'un inverseur à l'autre : il est dans le premier inverseur quand le signal d'horloge est à 1, dans l'autre inverseur quand il est à 0 (en fait son inverse, comme vous l'aurez compris). Le tout est illustré ci-contre. Cette implémentation a été utilisée autrefois, notamment dans le processeur Intel 8086.
[[File:Bascule D en logique Dynamique, avec entrée Enable.png|centre|vignette|upright=2|Bascule D en logique Dynamique, avec entrée Enable]]
Il existe une variante très utilisée, qui permet de remplacer le multiplexeur par un circuit légèrement plus simple. Avec elle, on a deux entrées pour commander la bascule, et non une seule entrée Enable. L'entrée Enable autorise les écriture, l'entrée Hold ferme la boucle qui relie la sortie du second inverseur au premier. Chaque entrée est associé à un transistor/interrupteur. Le transistor sur lequel on envoie l'entrée Enable se ferme uniquement lors des écritures et reste fermé sinon. À l'inverse, le transistor relié au signal Hold est fermé en permanence, sauf lors des écritures. En clair, les deux signaux sont l'inverse l'un de l'autre. Il permet de fermer le circuit, de bien relier les deux inverseurs en tête-bêche, sauf lors des écritures. On envoie donc l'inverse de l'entrée Enable sur ce transistor.
[[File:Bascule D en logique dynamique.png|centre|vignette|upright=2|Bascule D en logique dynamique]]
Une manière de comprendre le circuit précédent est de le comparer à celui avec le multiplexeur. Le multiplexeur est composé d'une porte NON et de deux transistors. Il se trouve que les deux transistors en question sont placés au même endroit que les transistors connectés aux signaux Hold et Enable. En prenant retirant la porte NON du multiplexeur, on se retrouve avec le circuit. Au lieu de prendre un Signal Enable qui commande les deux transistors, ce qui demande d'ajouter une porte NON vu que les deux transistors doivent faire l'inverse l'un de l'autre, on se contente d'envoyer deux signaux séparés pour commander chaque transistor indépendamment.
Des circuits nettement plus complexes peuvent être créés en logique dynamique. Pour les curieux, sachez que le ''barrel shifter'' du processeur Intel 386 était construit en logique dynamique. Le ''barrel shifter'' en question était un circuit capable de décaler des opérandes de 32 bits, ce qui était beaucoup pour l'époque. Il faisait environ 2000 transistors, ce qui correspondait à environ la moitié des transistors du CPU 6502 de Motorola, un CPU 8 bits. Et il aurait sans doute fait plus s'il n'avait pas utilisé la logique dynamique, ainsi que diverses optimisations. L'article suivant, assez complet, détaille ce circuit : [https://www.righto.com/2023/12/386-barrel-shifter.html Reverse engineering the barrel shifter circuit on the Intel 386 processor die ]
===Avantages et inconvénients===
Les circuits en logique dynamique sont opposés aux circuits en logique statique, ces derniers étant les circuits CMOS, PMOS, NMOS ou TTL vu jusqu'à présent. Les circuits dynamiques et statiques ont des différences notables, ainsi que des avantages et inconvénients divers. Si on devait résumer :
* la logique dynamique utilise généralement un peu plus de transistors qu'un circuit CMOS normal ;
* la logique dynamique est souvent très rapide par rapport à la concurrence, car elle n'utilise que des transistors NMOS, plus rapides ;
* la consommation d'énergie est généralement supérieure comparé au CMOS.
Un désavantage de la logique dynamique est qu'elle utilise plus de transistors. On économise certes des transistors MOS, mais il faut rajouter les transistors pour déconnecter les transistors NMOS de la masse (0 volt). Le second surcompense le premier.
Un autre désavantage est que le signal d'horloge ne doit pas tomber en-dessous d'une fréquence minimale. Avec une logique statique, on a une fréquence maximale, mais pas de fréquence minimale. Avec un circuit statique peut réduire la fréquence d'un circuit pour économiser de l'énergie, pour améliorer sa stabilité, et de nombreux processeurs modernes ne s'en privent pas. On peut même stopper le signal d'horloge et figer le circuit, ce qui permet de le mettre en veille, d'en stopper le fonctionnement, etc. Impossible avec la logique dynamique, qui demande de ne pas tomber sous la fréquence minimale. Cela a un impact sur la consommation d'énergie, sans compter que cela se marie assez mal avec certaines applications. Un processeur moderne ne peut pas être totalement fabriqué en logique dynamique, car il a besoin d'être mis en veille et qu'il a besoin de varier sa fréquence en fonction des besoins.
Le dernier désavantage implique l'arbre d'horloge, le système d'interconnexion qui distribue le signal d'horloge à toutes les bascules d'un circuit. L'arbre d'horloge est beaucoup plus compliqué avec la logique dynamique qu'avec la logique statique. Avec la logique statique, seules les bascules doivent recevoir le signal d'horloge, avec éventuellement quelques rares circuits annexes. Mais avec la logique dynamique, toutes les portes logiques doivent recevoir le signal d'horloge, ce qui rend la distribution de l'hrologe beaucoup plus compliquée. C'est un point qui fait que la logique dynamique est assez peu utilisée, et souvent limitée à quelques portions bien précise d'un processeur.
==La logique TTL : un apercu rapide==
Tous ce que nous avons vu depuis le début de ce chapitre porte sur les transistors MOS et les technologies associées. Mais les transistors MOS n'ont pas été les premiers inventés. Ils ont été précédés par les '''transistors bipolaires'''. Nous ne parlerons pas en détail du fonctionnement d'un transistor bipolaire, car celui-ci est extraordinairement compliqué. Cependant, nous devons parler rapidement de la logique TTL, qui permet de fabriquer des portes logiques avec ces transistors bipolaires. Là encore, rassurez-vous, nous n'allons pas voir comment fabriquer des portes logiques en logique TTL, cela serait trop compliqué, sans compter que le but n'est pas de faire un cours d'électronique. Mais nous devons fait quelques remarques et donner quelques explications superficielles.
La raison à cela est double. La première raison est que certains circuits présents dans les mémoires RAM sont fabriqués avec des transistors bipolaires. C'est notamment le cas des amplificateurs de lecture ou d'autres circuits de ce genre. De tels circuits ne peuvent pas être implémentés facilement avec des transistors CMOS et nous expliquerons rapidement pourquoi dans ce qui suit. La seconde raison est que ce cours parlera occasionnellement de circuits anciens et qu'il faut quelques bases sur le TTL pour en parler.
Dans la suite du cours, nous verrons occasionnellement quelques circuits anciens, pour la raison suivante : ils sont très simples, très pédagogiques, et permettent d'expliquer simplement certains concepts du cours. Rien de mieux que d'étudier des circuits réels pour donner un peu de chair à des explications abstraites. Par exemple, pour expliquer comment fabriquer une unité logique de calcul bit à bit, je pourrais utiliser l'exemple du Motorola MC14500B, un processeur 1 bit qui est justement une unité logique sous stéroïdes. Ou encore, dans le chapitre sur les circuits additionneurs, je parlerais du circuit additionneur présent dans l'Intel 8008 et dans l'Intel 4004, les deux premiers microprocesseurs commerciaux. Malheureusement, malgré leurs aspects pédagogiques indéniables, ces circuits ont le défaut d'être des circuits TTL. Ce qui est intuitif : les circuits les plus simples ont été inventés en premier et utilisent du TTL plus ancien. Beaucoup de ces circuits ont été inventés avant même que le CMOS ou même les transistors MOS existent. D'où le fait que nous devons faire quelques explications mineures sur le TTL.
===Les transistors bipolaires===
Les '''transistors bipolaires''' ressemblent beaucoup aux transistors MOS. Les transistors bipolaires ont trois broches, appelées le collecteur, la base et l'émetteur. Notez que ces trois termes sont différents de ceux utilisés pour les transistors MOS, où on parle de la grille, du drain et de la source.
Là encore, comme pour les transistors PMOS et NMOS, il existe deux types de transistors bipolaires : les NPN et les PNP. Là encore, il est possible de fabriquer une puce en utilisant seulement des NPN, seulement des PNP, ou en mixant les deux. Mais les ressemblances s'arrêtent là. La différence entre PNP et NPN tient dans la manière dont les courants entrent ou sortent du transistor. La flèche des symboles ci-dessous indique si le courant rentre ou sort par l'émetteur : il rentre pour un PNP, sort pour un NPN. Dans la suite du cours, nous n'utiliserons que des transistors NPN, les plus couramment utilisés.
{|
|[[File:BJT PNP symbol.svg|vignette|BJT PNP]]
|[[File:BJT NPN symbol.svg|vignette|BJT NPN]]
|}
Plus haut nous avons dit que les transistors CMOS sont des interrupteurs. La réalité est que tout transistor peut être utilisé de deux manières : soit comme interrupteur, soit comme amplificateur de tension/courant. Pour simplifier, le transistor bipolaire NPN prend en entrée un courant sur sa base et fournit un courant amplifié sur l'émetteur. Pour s'en servir comme amplificateur, il faut fournir une source de courant sur le collecteur. Le fonctionnement exact est cependant plus compliqué.
[[File:Transistor bipolaire, explication simplifiée de son fonctionnement.png|centre|vignette|upright=1.5|Transistor bipolaire, explication simplifiée de son fonctionnement]]
Les transistors bipolaires sont de bons amplificateurs, mais de piètres interrupteurs. À l'inverse, les transistors CMOS sont généralement de bons interrupteurs, mais de moyens amplificateurs. Pour des circuits numériques, la fonction d'interrupteur est clairement plus adaptée, car elle-même binaire (un transistor est fermé ou ouvert : deux choix possibles). Aussi, les circuits modernes privilégient des transistors CMOS aux transistors bipolaires. À l'inverse, la fonction d'amplification est adaptée aux circuits analogiques.
C'est pour ça que nous rencontrerons les transistors bipolaires soit dans des portions de l'ordinateur qui sont au contact de circuits analogiques. Pensez par exemple aux cartes sons ou au vieux écrans cathodiques, qui gèrent des signaux analogiques (le son pour la carte son, les signaux vidéo analogique pour les vieux écrans). On les croisera aussi dans les mémoires DRAM, dont la conception est un mix entre circuits analogiques et numériques. Nous les croiserons aussi dans de vieux circuits antérieurs aux transistors MOS. Les anciens circuits faisaient avec les transistors bipolaires car ils n'avaient pas le choix, mais ils ont été partiellement remplacés dès l'apparition des transistors CMOS.
===Les portes logiques complexes en TTL===
Le détail le plus important qui nous concernera dans la suite du cours est le suivant : on peut créer des portes logiques exceptionnellement complexes en TTL. Pour comprendre pourquoi, sachez qu'il existe des transistors bipolaires qui possèdent plusieurs émetteurs. Ils sont très utilisés pour fabriquer des portes logiques à plusieurs entrées. Les émetteurs correspondent alors à des entrées de la porte logique. Ainsi, une porte logique à plusieurs entrées se fait non pas en ajoutant des transistors, comme c'est le cas avec les transistors MOS, mais en ajoutant un émetteur sur un transistor. Cela permet à une porte NAND à trois entrées de n'utiliser que deux transistors bipolaires, au lieu de quatre transistors MOS.
[[File:Multiemitter Transistor.svg|centre|vignette|upright=1|Transistor bipolaire avec plusieurs émetteurs.]]
De plus, là où les logiques PMOS/NMOS/CMOS permettent de fabriquer les portes de base que nous avons précédemment, elles ne peuvent pas faire plus. Au pire, on peut implémenter des portes ET/OU/NAND/NOR à plusieurs entrées, mais pas plus. En TTL, on peut parfaitement créer des portes de type ET/OU/NON ou OU/ET/NON, avec seulement quatre transistors. Par exemple, une '''porte ET/OU/NON''' de type 2-2 entrées (pour rappel, qui effectue un ET par paire d’entrée puis fait un NOR entre le résultat des deux ET) est bien implémenté en une seule porte logique, pas en enchainant deux ou trois portes à la suite.
[[File:TTL AND-OR-INVERT 1961.png|centre|vignette|upright=2|TTL AND-OR-INVERT 1961]]
===Les désavantages et avantages des circuits TTL===
Pour résumer, le TTL à l'avantage de pouvoir fabriquer des portes logiques avec peu de transistors comparé au CMOS, surtout pour les portes logiques complexes. Et autant vous dire que les concepteurs de puce électroniques ne se gênaient pas pour utiliser ces portes complexes, capables de fusionner 3 à 5 portes en une seule : les économies de transistors étaient conséquentes.
Et pourtant, les circuits TTL étaient beaucoup plus gros que leurs équivalents CMOS. La raison est qu'un transistor bipolaire prend beaucoup de place : il est environ 10 fois plus gros qu'un transistor MOS. Autant dire que les économies réalisées avec des portes logiques complexes ne faisaient que compenser la taille énorme des transistors bipolaires. Et encore, cette compensation n'était que partielle, ce qui fait que les circuits PMOS/NMOS/CMOS se miniaturisent beaucoup plus facilement. Un avantage pour le transistor MOS !
De plus, les schémas précédents montrent que les portes logiques en TTL utilisent une résistance, elle aussi difficile à miniaturiser. Et cette résistance est parcourue en permanence par un courant, ce qui fait qu'elle consomme de l'énergie et chauffe. C'est la même chose en logique NMOS et PMOS, ce qui explique leur forte consommation d'énergie. Les circuits TTL ont donc le même problème.
[[File:TTL Input voltage.svg|vignette|upright=0.5|TTL voltage.]]
Un autre défaut est lié à la une tension d'alimentation. Les circuits TTL utilisent une tension d'alimentation de 5 volts, alors que les circuits CMOS ont une tension d'alimentation beaucoup plus variable. Les circuits CMOS vont de 3 volts à 18 volts pour les circuits commerciaux, avec des tensions de 1 à 3 volts pour les circuits optimisés. Les circuits CMOS sont généralement bien optimisés et utilisent une tension d'alimentation plus basse que les circuits TTL, ce qui fait qu'ils consomment moins d'énergie et de courant.
De plus, rappelons que coder un zéro demande que la tension soit sous un seuil, alors que coder un 1 demande qu'elle dépasse un autre seuil, avec une petite marge de sécurité entre les deux. Les seuils en question sont indiqués dans le diagramme ci-dessous. Il s'agit des seuils VIH et VIL. On voit que sur les circuits TTL, la marge de sécurité est plus faible qu'avec les circuits CMOS. De plus, les marges sont bien équilibrées en CMOS, à savoir que la marge de sécurité est en plein milieu entre la tension max et le zéro volt. Avec le TTL normal, la marge de sécurité est très proche du zéro volt. Un 1 est codé par une tension entre 2 et 5 volts en TTL ! Une version améliorée du TTL, le LVTTL, corrige ce défaut. Elle baisse la tension d'alimentation à 3,3 Volts, mais elle demande des efforts de fabrication conséquents.
[[File:Niveaux logiques CMOS-TTL-LVTTL.png|centre|vignette|upright=2|Niveaux logiques CMOS-TTL-LVTTL]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les circuits de calcul trigonométriques
| prevText=Les circuits de calcul trigonométriques
| next=Les circuits intégrés
| nextText=Les circuits intégrés
}}
{{autocat}}
</noinclude>
6kepj4y869640wtzar9pyie3bee6aeg
Vocabulaire anglais-français à l'intention des apprenants avancés/J
0
78015
768355
759463
2026-06-22T22:24:06Z
Elnon
41284
/* J */ Complément
768355
wikitext
text/x-wiki
{{../Index}}
=== J ===
* jab (n) (brit.) (fam.) : piqûre (f), piqouse (f) (fam.) - to get a tetanus jab : se faire vacciner contre le tétanos - vaccine jab : piqûre de vaccin
* jab (v) (jabbed2) (brit.) (tr.) : piquer, piqouser (fam.), vacciner
* jabbed (ppa) (brit.) : piqué(e), piqousé(e) (fam.), vacciné(e) (syn. vaxxed) - the jabbed (adj. subst. pl.) : les vaccinés (anton. the unjabbed - the non-jabbed)
* jabber (n) : bredouillis (sing.)
* jabber (v) : 1/ bavarder ; 2/ bredouiller (des excuses), marmonner
* jabberwocky (n) : 1/ charabia, galimatias, bredouillis ; 2/ balivernes (f pl.), foutaises (f pl.) (vulg.)
* jabbing (n) (brit.) (fam.) : vaccination (f)
* jack (n) : 1/ cric - boot jack : tire-botte (en forme de planchette) (masc.) ; 2/ (Cartes) valet ; 3/ prise (électrique) (f) ; 4/ (Pétanque) cochonnet
* jack (v) (tr.) : mettre sur cric
* jackdaw (n) : choucas
* jacket (n) (fa) : 1/ veste (f) - collarless jacket : veste sans col - dinner jacket : smoking ; 2/ gilet - life jacket : gilet de sauvetage
* jackpot (n) : 1/ (Poker) deux valets ou plus ; 2/ gros lot - to hit the jackpot : gagner le gros lot, toucher le gros lot, décrocher le gros lot
* jack rabbit / jackrabbit (n) (amér.) : gros lièvre
* jack up (v) (tr.) : soulever au cric
* jade (n) : canasson, rosse (f)
* Jag (n) (abr. de Jaguar, marque de voitures britannique) - to own a Jag : posséder une Jag
* jag (n) : aspérité (f), pointe (f)
* jagged (a) : déchiqueté(e)
* jail (n) (amér.) : prison (f), taule / tôle (f) (fam.) (ortho. brit. gaol) - to sentence sb to jail : condamner qn à une peine de prison
* jail (v) (tr.) : mettre en prison, mettre en taule / tôle (fam.)
* jalopy (n) (pl. jalopies) : (vieille) bagnole, (vieux) tacot, (vieille) guimbarde
* jam (n) : 1/ confiture (f) ; 2/ bouchon (fam.) - traffic jam : embouteillage ; 3/ (Mus.) improvisation (f), impro (f) (fam.), bœuf (de musiciens de jazz) - jam session : séance d’improvisation, bœuf
* jamb (n) : jambage, montant, piédroit - door jamb : jambage de porte
* jam-proof (ac) : à l’épreuve des blocages, qui ne se bloque jamais
* jangle (v) (intr.) : cliqueter
* janitor (n) (amér.) : gardien (d’immeuble), concierge (brit. caretaker)
* Japan (n pr.) : (le) Japon
* Japanese (a) : japonais(e) (sans maj.) - the Japanese (a. subst. pl.) : les Japonais
* Japanese (n pr.) : Japonais (le ressortissant)
* Japanese (n) : japonais (la langue)
* Japanese-made (ac) : fabriqué(e) par les Japonais, fabriqué(e) au Japon - Japanese-made vehicles : véhicules fabriqués par les Japonais
* JAR (init. de joint airworthiness requirements, règlements de navigabilité conjoints)
* jar (n) : pot - cookie jar : boîte à gâteaux - to be caught with one’s hand in the cookie jar : se faire prendre la main dans le pot à confiture / dans le sac - tip jar : boîte à pourboires
* jar (n) : choc
* jar (v) (intr.) : grincer
* jargon (n) : jargon - technical jargon : jargon technique - jargon buster : glossaire, explication de termes
* jaundice (n) : jaunisse (f)
* jaunt (n) : balade (f)
* jauntily (n) : 1/ d’un pas leste ; 2/ d’un pas allègre
* jaunty (a) : 1/ leste ; 2/ allègre, enjoué(e), jovial(e)
* jaw (n) : mâchoire (f) - the jaws of death : les griffes de la mort - [patient] to be snatched from the jaws of death : [malade] être arraché aux griffes de la mort
* jaw (v) (intr.) : papoter
* jaw-dropping (ac) : [paysage, décor, vues] à laisser bouche bée, à couper le souffle, époustouflant(e), stupéfiant(e) - a jaw-dropping experience : une expérience qui (vous) laisse bouche bée - a jaw-dropping scenery : un décor à (vous) couper le souffle
* jaywalk (v) (intr.) : 1/ traverser en dehors des clous, traverser en dehors des passages pour piétons ; 2/ traverser au rouge
* jaywalker (n) : piéton(ne) traversant en dehors des clous, piéton(ne) traversant en dehors des passages, piéton(ne) traversant au rouge, piéton indiscipliné
* jazz (n) : (Mus.) (le) jazz ; 2/ (amér.) (du) baratin, (du) vent - and all that jazz : et tout le bataclan, et tout le tremblement, et tout le tintouin
* jazzy (a) : 1/ [musique] de jazz, sur un rythme de jazz ; 2/ [habillement] tapageur/-euse, voyant(e)
* jealous (a) : jaloux/-se
* jealousy (n) : jalousie (f) - the pangs of jealousy : les affres de la jalousie
* jeaned (ppa) : en jeans
* jeer (n) : huée (f), raillerie (f)
* jeer (v) : (tr.) huer ; (intr.) huer, railler - to jeer at sb : huer qn (syn. boo)
* jeering (a) : railleur/-euse, moqueur/-euse, goguenard(e)
* jeering (n) : raillerie (f), moquerie (f)
* jejune (a) : immature, naïf/naïve, puéril(e)
* jejuneness (n) : immaturité (f), naïveté (f), puérilité (f)
* Jell-O / jello (n) (marque déposée) (amér.) : (de la) gelée
* jelly (n) : (brit.) (de la) gelée ; (2) (amér.) (de la) confiture
* jeopardise (brit.) / jeopardize (amér.) (v) (tr.) : mettre en péril, compromettre
* jeopardy (n) : péril, danger
* jeremiad (n) : jérémiade (f) - a jeremiad on the evils of the British administration : une longue complainte sur les méfaits de la gouvernance britannique
* jerk (n) : 1/ coup sec, mouvement brusque, saccade (f) ; 2/ éjaculation (f) - circle jerks : éjaculations en groupe
* jerk (n) : pauvre type
* jerk (v) : (tr.) tirer d’un coup sec sur ; (intr.) faire un mouvement brusque
* jerker (n) (en compo.) : 1/ tear jerker : chose qui fait jaillir (les larmes) ; 2/ memory jerker : chose qui fait resurgir (les souvenirs)
* jerkin (n) : justaucorps
* jerk off (v) : (tr.) branler (qn) ; (intr.) : se branler
* jerky (a) : [voix, etc.] saccadé(e) - jerky rhythm : rythme saccadé
* jersey (n) (brit.) : pull-over, pull, tricot
* jest (n) : raillerie (f), plaisanterie (f) - cheap jest : plaisanterie facile - stock jest : plaisanterie classique
* jest (v) (intr.) : plaisanter
* jester (n) : 1/ bouffon, fou du roi ; 2/ plaisantin
* jet (n) : jet - water jet : jet d'eau
* jet (n) (abr. de jet plane : avion à réaction) : avion à réaction - passenger jet : avion de ligne (à réaction) - business jet : avion d’affaires, biréacteur d’affaires - jet engine : moteur à réaction - jet interceptor : appareil d’interception - jet lag : décalage horaire - the engine's jet stream : le souffle du réacteur
* jet-black (ac) : 1/ noir foncé ; 2/ (en parlant de cheveux) noir de jais, de jais - jet-black hair : cheveux de jais
* jet black (n) : noir foncé – in jet black : en noir foncé
* jetliner (n) : avion de ligne (à réaction)
* jet-propelled (a) : [avion] à réaction
* jetsam (n ind. sing.) : marchandises jetées à la mer (f pl.), marchandises jetées à la côte (f pl.), marchandises jetées par dessus bord (f pl.), débris rejetés sur le rivage, épaves (f pl.)
* jet-setting (ac) : qui fait partie du jet set
* jettison (n) : jet (de marchandises) à la mer, jet (de marchandises) par dessus bord
* jettison (v) (tr.) : 1/ jeter à la mer, jeter par dessus bord (des marchandises) ; 2/ (fig.) se délester de, se débarrasser de, jeter, larguer - to jettison a money-losing refinery : se délester d’une raffinerie perdant de l’argent
* Jew (n) : Juif (fém. Jewess) - the wandering Jew : le Juif errant
* jewel (n) : joyau, bijou
* jewelry (n ind. sing.) : bijoux (pl.)
* Jewess (n) (parfois péj.) : Juive (n)
* Jewry (n ind. pl.) : (la) communauté juive - world jewry : (les) juifs du monde entier, (le) monde juif, (l’)internationale juive
* JFK’ed (pp) : qui a subi le sort de JFK - or he would be JFK’ed : où il se ferait buter comme JFK
* jibe (n) voir gibe (n)
* jibe (v) voir gibe (v)
* jig (n) : 1/ gigue (f) - to dance a jig : danser la gigue ; 2/ (Usin.) dispositif de serrage, bâti de montage - assembly jig : bâti de montage - to set up an assembly jig : installer un bâti demontage - to withdraw an assembly jig : retirer un bâti de montage
* jig (v) (intr.) : gigoter, se trémousser
* jigsaw (n) : scie sauteuse (f)
* jilt (n) : coquette (f) (qui abandonne ceux dont elle s’est fait aimer)
* jilt (v) (tr.) : délaisser, abandonner (qn) après s’en être fait aimer - to be jilted : être le jouet d’un inconstant ou d’une coquette, être délaissé(e) par celui ou celle qu’on aime
* jingle (n) : tintement - jingle bell : grelot, clochette (f)
* jingle (v) (intr.) : tinter
* jingo (a) : chauvin(e) (syn. jingoistic)
* jingo (n) (pl. jingoes) : chauvin (n) - by jingo : sapristi !, saperlipopette !
* jingoism (n) : chauvinisme
* jingoistic (a) : chauvin(e)
* jinx (n) : 1/ sort, malédiction (f), guigne (f), poisse (f) (fam.) ; 2/ porte-malheur, personne ou chose qui porte la guigne (syn. pour 1/ et 2/ hoodoo) - to be a jinx : porter malheur, apporter la poisse
* jinx (v) tr.) : porter malheur à
* jitters (n pl.) : frousse (f sing.) - to have the jitters : avoir la frousse
* jive (n) : 1/ (le) jive (danse des années 1940), (le) swing ; 2/ (amér.) (l’)argot du jive
* jive (v) : 1/ (intr.) dancer le jive, dancer le swing, swinguer ; 2/ (tr.) se moquer de, taquiner
* job (n) : 1/ boulot, emploi - to create jobs : créer des emplois - to slash jobs : supprimer des emplois - dead-end job : boulot sans avenir - desk job : travail de bureau - low-paying job : boulot mal payé - odd jobs : petits boulots - to do odd jobs : faire de petits boulots - job centre : agence pour l’emploi - job counselor : conseiller pour l’emploi, conseiller pour l’embauche - job hunting : recherche d’un emploi - job losses : emplois perdus, disparitions d’emplois - the job market : le marché du travail - job seeker : personne à la recherche d’un emploi, demandeur d’emploi ; 2/ tâche, travail - one-off jobs : tâches spéciales - repetitive jobs : tâches répétitives - rote job : tâche apprise par cœur - rush job : a/ travail urgent ; b/ commande urgente - job manager : chef de chantier - job scheduling : planification des travaux - job shadowing : (l’)observation des tâches, (l’)observation au poste de travail, stages (pl.) d’observation au poste de travail (syn. work shadowing) - job shop : a/ atelier général ; b/ (amér.) atelier de constructions mécaniques ; 3/ pièce (f) - to be paid by the job : être payé à la pièce - job work : travail à la pièce - job worker : travailleur à la pièce
* jobless (a) : sans travail
* joblessness (n) : chômage
* job-related (ac) : d’origine professionnelle - job-related health problems : ennuis de santé d’origine professionnelle
* jockey (n) : jockey - desk jockey : gratte-papier
* jockey (v) (intr.) : essayer de se placer - to jockey for a role : intriguer pour obtenir un rôle
* jog (n) : 1/ secousse, saccade, cahot ; 2/ petit coup, coup de coude ; 3/ petite trotte
* jog (v) : 1/ (intr.) remuer par saccades, cahoter ; 2/ (tr.) donner un coup de coude à (syn. to nudge) ; 3/ (intr.) trottiner, aller cahin-caha ; 4/ (fam.) partir, se trotter - Time to be jogging, boys : C’est l’heure de se trotter, les amis
* jog along (v) (intr.) : suivre son petit bonhomme de chemin, aller cahin-caha, aller tant bien que mal
* jog on (v) (intr.) : cheminer avec peine, suivre son petit bonhomme de chemin, aller cahin-caha, aller tant bien que mal - Things will jog on somehow for a few years : Les choses continuront à aller tant bien que mal pendant encore quelques années
* John Hancock (n pr.) (amér.) : dans la phrase Let me see your John Hancock : Montrez-moi votre signature
* join (v) : 1/ (tr.) assembler, unir - to join forces with sb : unir ses forces à qn, mettre ses forces en commun avec qn ; 2/ (tr.) rejoindre, se joindre à - to join sb : se joindre à qn - to join the exodus : prendre à son tour le chemin de l’exode ; (intr.) participer - to join in a Mexican wave : participer à une ola ; 3/ (tr.) devenir membre de - to join the faculty : devenir membre du corps enseignant
* joiner (n) : 1/ menuisier ; 2/ personne portée sur les activités associatives - I’m not much of a joiner : La sociabilité, c’est pas mon fort
* joint (a) : joint(e), conjoint(e), commun(e), combiné(e), associé(e) - joint leaders : chefs conjoints - joint venture : co-entreprise (f)
* joint (n) : 1/ (Menuiserie, Charpenterie) assemblage - dovetail joint : assemblage en queue d’aronde ; 2/ boîte (f) (lieu de rencontre) - clip joint : bar à gogos
* jointly (adv.) : conjointement - to sign jointly : signer conjointement (syn. to co-sign)
* jointly manage (vc) (tr.) : gérer en commun, gérer conjointement
* jointly managed (ac) : géré(e) en commun - jointly managed inventory : stocks gérés par le fournisseur et le client, gestion partagée des stocks
* join up (v) (tr.) : adhérer à, s’engager dans
* joist (n) : solive (f) - floor joist : solive de plancher
* joke (n) : 1/ blague (f), plaisanterie (f) - behind-the-scene joke : blague de coulisses - inside joke : blague d’initiés, blague entre nous, plaisanterie à usage interne - lavatory joke : blague à chier (vulg.) - private joke : blague entre nous - all jokes aside : toutes plaisanteries mises à part, blague à part, sans plaisanter ; 2/ mauvaise blague, farce (f), tour - practical joke : farce - sick joke : plaisanterie de mauvais goût
* joke (v) (intr.) : plaisanter
* joker (n) : 1/ blageur ; 2/ plaisantin, farceur ; 3/ (péj.) rigolo, bouffon
* jokingly (adv.) : en plaisantant, pour plaisanter
* jolly (a) : 1/ [individu] gai(e), jovial(e), enjoué(e) ; 2/ [occasion] joyeux/-euse, [moment] agréable - to have a jolly time : bien s’amuser
* jolly (adv.) (brit.) : (fam.) rudement, bigrement, drôlement - Jolly good! : Très bien !, Compris ! - to have a jolly good laugh : se payer une bonne tranche de rigolade - He’s a jolly good fellow : C’est un gars rudement bien
* jolly (v) (tr.) : taquiner
* jolt (n) choc (to, pour) - to face jolts : subir des chocs - (a) jolt to the body clock : (un) choc pour l’horloge interne
* Jordan (n pr.) : (la) Jordanie
* Jordanian (a) : jordanien(ne) (sans maj.)
* Jordanian (n pr.) : Jordanien (le ressortissant)
* Josh (n pr.) (dim. de Joshua)
* jostle (v) (tr.) : bousculer
* jot (n) : iota - It matters not a jot whether… or… : Cela n’a pas la moindre importance si… ou…
* jot down (v) (tr.) : noter par écrit - to jot down notes : griffonner des notes
* journal (n) (fa) : 1/ revue (scientifique, universitaire) (f) - journal of film criticism : revue de critique cinématographique - academic journal : revue universitaire - international law journal : revue de droit international - legal journal : revue juridique - policy journal : revue d’analyse politique - trade journal : revue professionnelle - journal article : article de revue (savante) ; 2/ livre de bord, livre de comptes
* journalise (brit.) / journalize (amér.) (v) (tr.) : écrire (qch) dans un journal, consigner (qch) dans un journal
* journalism (n) : journalisme - to be in journalism : faire du journalisme - community journalism : journalisme des nouvelles locales - data journalism : journalisme de données numériques, journalisme de statistiques - ethical journalism : journalisme éthique, journalisme moral - explanatory journalism : journalisme d’explication - gutter journalism : journalisme de bas étage (syn. junk journalism) - hit-and-run journalism : journalisme au coup par coup, journalisme sans suivi - in-depth journalism : journalisme exhaustif, journalisme d’enquête approfondie - investigative journalism : journalisme d'enquête - lapdog journalism : journalisme tenu en laisse - opinionated journalism : journalisme d’opinion - participatory journalism : journalisme participatif - phone journalism : journalisme par téléphone, journalisme téléphonique - picture journalism : journalisme photographique (syn. photojournalism photojournalisme) - scientific journalism : journalisme scientifique - sports journalism : journalisme sportif - tabloid journalism : journalisme à sensation - truthful journalism : journalisme honnête, journalisme qui dit la vérité - journalism ethics : (l’)éthique journalistique, (la) déontologie journalistique
* journalist (n) : journaliste (m/f) - broadcast journalist : journaliste de radiotélédiffusion, journaliste de radiotélévision - business journalist : journaliste économique - freelance journalist : journaliste indépendant, pigiste - fully accredited journalist : journaliste muni(e) de toutes les accréditations - hireling journalist : journaliste stipendié - student journalist : étudiant en journalisme - television journalist : journaliste de télévision, journaliste à la télévision - TV journalist : journaliste télé, journaliste à la télé
* journalistic (a) : (selon le cas) journalistique, des journalistes, du journaliste - journalistic parlance : langage journalistique
* journalistically (adv.) : 1/ en langage journalistique ; 2/ selon les règles journalistiques
* journey (n) (fa) : voyage - to do the journey in one hop : accomplir le voyage d’une traite - journey in five hops : voyage en cinq étapes, voyage en quatre escales
* journeyman (n) : apprenti
* journo (n) (pl. journos) (abr. de journalist) (péj.) : journaleux (n)
* joust (n) : joute (f)
* jowl (n) : bajoue (f)
* joy (n) : joie (f)
* joyful (a) : joyeux/-euse
* joyfully (adv.) : joyeusement
* joyous (a) : joyeux/-euse - a joyous baby : un bébé joyeux
* joystick (n) : manche à balai, manipulateur
* JPL (n) (init. de Jet Propulsion Laboratory : Laboratoire de propulsion à réaction (de la NASA))
* judaic (a) : judaïque (aussi judaical)
* judaism (n) : (le) judaïsme
* Judea (n) : (la) Judée
* judge (n) : juge
* judge (v) : 1/ (tr.) juger ; (intr.) juger - I am in no position to judge : ce n'est pas à moi de juger ; 2/ (tr.) estimer
* judgement (brit.) / judgment (amér.) (n) : jugement, discernement
* judgemental (brit.) / judgmental (amér.) (a) : 1/ fondé(e) sur un jugement, de jugement ; 2/ enclin(e) à critiquer, toujours prompt à critiquer, qui porte des jugements à l’emporte-pièce - to be judg(e)mental : porter des jugements catégoriques
* jug (n) : cruche (f) - Toby jug : chope Toby (pot à bière épousant la forme du personnage Toby)
* juggle (v) (tr.) : jongler avec
* juggler (n) : jongleur
* juggling (n) : jonglage - beat juggling : (Mus.) jonglage des tempos (technique de platiniste) - stock juggling : spéculation boursière (f)
* jughandle (n) (amér.) : 1/ anse (f) de cruche ; 2/ sortie sur la droite permettant de tourner à gauche - To make a left, take the jughandle : Sortez à droite, pour tourner à gauche
* juice (n) : jus - grape juice : jus de raisin - pomegranate juice : jus de grenade
* juice (v) (tr.) : presser (des fruits)
* juicer (n) : extracteur de jus, centrifugeuse (f), presse-fruit (masc.), presse-agrumes - lemon juicer : presse-citron
* juicing (n) : pressage (de fruits) - juicing machine : presse-fruit
* juke (n) (arg. amér.) : musique (f), ’zique (f) (fam.)
* jumble (n) : fouillis - jumble sale : vide-grenier (masc.)
* jump (n) : saut, bond - split jump : grand écart - to do a split jump : faire le grand écart - to perform a split jump : exécuter le grand écart
* jump (v) : 1/ (intr.) sauter, bondir - to jump at… : se précipiter sur… - to jump on the bandwagon : a/ (au propre) grimper sur le char de la victoire ; b/ (au figuré) suivre le mouvement, emboîter le pas, prendre le train en marche ; 2/ (tr.) ne pas respecter, brûler (au fig.) - to jump a halt sign : brûler un stop ; 3/ (expressions) - to jump the shark (amér.) : être en perte de vitesse, se ringardiser
* jumper (n) : 1/ sauteur, sauteuse - bandwagon jumper : opportuniste ; 2/ (Élect., Électron.) cavalier
* jumping (n) : (le) saut - bungee jumping : (le) saut à l’élastique - turnstile jumping : sauter le tourniquet
* jump on-jump off (v double) : (tr.) descendre à volonté de (a bus, un bus) ; (intr.) monter et descendre librement
* jump on-jump off (ac) : - jump on-jump off bus : bus où l’on monte et descend à volonté - jump on-jump off tour : voyage semi-organisé
* jump start / jump-start (vc) (tr) : faire démarrer (a car, une voitue) à l’aide de câbles de démarrage
* jumpy (a) : 1/ nerveux/-euse ; 2/ instable
* junction (n) : 1/ jonction (f) (de plusieurs routes), carrefour, croisement ; 2/ sortie (f) (d’autoroute) ; 3/ (Ch. de fer) embranchement - railroad junction (amér.) : passage à niveau
* juncture (n) : moment - at this juncture : en ce moment même
* June (n) : juin (sans maj.)
* junk (n ind. sing.) : 1/ camelote (f), pacotille (f), rebuts (pl.), déchets (pl.) - junk bond : obligation pourrie (f), titre douteux, action sans valeur - junk degree : diplôme sans valeur - junk food : nourriture rapide (f), nourriture (f) de mauvaise qualité, malbouffe (f) - junk information : infos (f pl.) à deux balles, infos pourries, infos de merde (vulg.) - junk journalism : journalisme sans valeur, journalisme de bas étage (syn. gutter journalism) - junk science : pseudo-science ; 2/ jonque (f)
* junker (n) (arg. amér.) : vieille bagnole (f), vieux tacot, vieux tas, tas de boue
* junket (n) : 1/ flan, crème renversée (f) ; 2/ voyage aux frais de la princesse ; 3/ voyage d’agrément ; 4/ banquet, festin ; 5/ partie fine (f)
* junket (v) (intr.) : 1/ voyager aux frais de la princesse ; 2/ faire une partie fine
* junketing (n) : 1/ voyages aux frais de la princesse (f pl.) ; 2/ parties fines (f pl.)
* junky (a) : de camelote, sans valeur
* junta (n) : junte (f) - a Neo-Nazi junta : une junte néo-nazie
* Jupiter (n pr.) : 1/ (Mytho.) Jupiter ; 2/ (la planète) Jupiter
* jurisdiction (n) : juridiction (noter la diff. d’ortho.)
* jury (n) (pl. juries) : jury - trial by jury : procès devant jury, procès avec jury (aussi jury trial)
* just (a) 1/ juste, mérité(e) - to sleep the sleep of the just : dormir du sommeil du juste ; 2/ juste, exact
* just (adv.) (fa) : 1/ juste, à peine - in just minutes : en à peine quelques minutes ; 2/ (tout) simplement, rien que - Don’t think about it! Just do it! : Ne réfléchis pas, vas-y / lance-toi / fonce ! ; 3/ exactement, précisément - a/ just like everybody else : comme tout le monde ; b/ (renforçant un adverbe en -ly) tout - just recently : tout récemment ; 4/ (avec verbe au present perfect) - He has just left : Il vient de partir
* just about (loc. adv.) : à peu près, quasiment
* justice (n) : (la) justice - kangaroo justice : parodie de justice
* justifiable (a) : justifiable, légitime
* justifiably (adv.) : de façon justifiable, légitimement, à juste titre
* just-in-case (ac) « au cas où » - just-in-case production : production « au cas où »
* just-in-time (ac) : 1/ dans les temps, en temps et en heure ; 2/ [gestion, livraison, etc.] tendue(e), serré(e), « juste à temps », à flux tendus - just-in-time delivery : livraison « juste-à-temps », (le) zéro délai à la livraison (jarg.) - just-in-time manufacturing : fabrication juste-à-temps - just-in-time production : production à flux tendus - just-in-time stock management : gestion tendue des stocks, gestion serrée des stocks, gestion des stocks à la japonaise, (le) zéro stock (jarg.)
* justify (v) (tr.) : justifier - Does the end justify the means? : La fin justifie-t-elle les moyens ?
* justly (adv.) : avec justice ; 2/ à juste titre
* justness (n) : 1/ justesse (f) ; 2/ caractère justifié
* jut out (v) (intr.) : faire saillie
c3tvg8v9373rcok7laofj14i4c29gv7
Vocabulaire anglais-français à l'intention des apprenants avancés/L
0
78017
768356
759466
2026-06-22T22:33:49Z
Elnon
41284
/* L */ Complément
768356
wikitext
text/x-wiki
{{../Index}}
=== L ===
* L.A. / LA (n pr.) : init. de Los Angeles
* La. : abr. de Louisiana, (la) Louisiane
* lab (n) (tronc. de laboratory : laboratoire) : labo - biological lab : labo de biologie
* label (n) : 1/ marque (f) ; 2/ (Mus.) (abr. de record label) : marque de disque, boîte de production musicale, boîte de prod (fam.) - They're on the Today label - label manager : directeur de maison de disques
* labor (amér.) / labour (brit.) (n) (fa) : 1/ travail de l’accouchement - false labour : fausses contractions (f pl.), fausse alerte (f) ; 2/ travail - labours : travaux - (the) Department of Labor (amér.) : (le) ministère américain du travail - Labor Secretary (amér.) : ministre américain du Travail ; 3/ main-d'œuvre (f) - cheap labour : main-d’œuvre à bon marché
* labor (amér.) / labour (brit.) (v.) (intr.) : travailler dur, peiner
* laboratory (n) (pl. laboratories) : laboratoire - computer laboratory : l'atelier informatique - language laboratory : laboratoire de langues
* laborer (amér.) / labourer (brit.) (n) (fa) : travailleur manuel, ouvrier manuel, manouvrier, manœuvre
* laboring (amér.) / labouring (brit.) (n) : - to go labouring : prendre un métier manuel - labouring work : travail de manœuvre
* labor-intensive (amér.) / labour-intensive (brit.) (ac) : 1/ à très fort coefficient de travail ; 2/ [entreprise] exigeant beaucoup de main-d'œuvre, exigeant une main d’œuvre abondante, exigeant un personnel important
* lace (n) : 1/ dentelle (f) ; 2/ lacet (de chaussure)
* lace (v) (tr.) : 1/ (tr.) lacer ; (intr.) se lacer ; 2/ additionner (with, de), arroser (with, de)
* lack (n) : manque, absence (f) - lack of preparedness : manque de préparation
* lack (v) (tr.) : manquer de - to lack competency (in an area) : manquer de compétence, ne pas avoir les compétences nécessaires (dans un domaine)
* lacking (a) : 1/ (+ prép. in) qui manque de - [food] to be lacking in salt : [nourriture] manquer de sel ; 2/ déficient(e) - This arrangement is lacking : Cette mesure est déficiente
* laconic (a) : peu disert(e), peu causant(e) - the laconic backwoodsman : l’homme des bois peu causant
* lacquer (n) : laque (f) (syn. amér. hair spray)
* lactate (v) (int.) : secréter du lait - [woman] to be lactating : [femme] être en lactation, allaiter
* lactating (a) : allaitante (f) - lactating woman : femme allaitante (f)
* lad (n) : gars, garçon - stable lad : garçon d’écurie
* ladder (n) : 1/ échelle (f) ; 2/ (fig.) échelons (pl.) (à gravir) - to climb the social ladder : monter dans l’échelle sociale
* ladder (v) : (tr.) filer (un bas, des collants) - to ladder one’s stockings : filer ses bas ; (intr.) [bas, collants] filer
* lade (v) (arch.) (laded, laded/laden) (tr.) : charger (d’un poids) - to lade a container : charger un conteneur
* laden (a) : 1/ en charge (anton. unladen : à vide) - laden outward journey : voyage aller en charge - laden weight : poids en charge - gross laden weight : poids total en charge - laden and unladen trailers : remorques en charge et à vide ; 2/ chargé(e) - consumable goods laden on board commercial aircraft : denrées chargées à bord des avions commerciaux ; 3/ (laden with) chargé(e) de, plein(e) de, comblé(e) de, riche en - episode laden with nostalgia : épisode plein de nostalgie - laden with honours : comblé d’honneurs - future laden with challenges : avenir riche en défis
* ladies (n sing.) : toilettes (f pl.) (pour les) femmes - Could you tell me where the Ladies is? : Pourriez-vous me dire où se trouvent les Dames ?
* ladle (n) : louche (f)
* lady (n) (pl. ladies) : 1/ dame (f) - a ladies’ man : un homme à femmes (syn. womaniser/-zer) ; 2/ (titre) lady ; 3/ (fam.) épouse (f), femme (f), patronne (f) - I’ll ask my lady : Je vais demander à la patronne
* ladybird (n) (brit.) : coccinelle (f)
* ladybug (n) (amér.) : coccinelle (f)
* lag (n) : retard
* lag behind (v) (intr.) : être à la traîne
* laicism (n) : (la) laïcité (syn. secularism)
* laid (prét. de to lay)
* laid (pp de to lay)
* laid-back (a) : relax(e)
* laity (n pl.) : 1/ (les) laïcs ; 2/ (les) profanes
* lake (n) : lac - alkaline lake : lac salé - oxbow lake : bras mort
* lamb (n) : agneau - sacrificial lamb : agneau sacrificiel, bouc émissaire
* lambast (v) (tr.) : éreinter (fig.), démolir (fig.)
* lambswool (n) : laine d’agneau
* lame (a) (fa) : 1/ [individu] éclopé(e), estropié(e) ; 2/ [argument] boiteux/-euse, [excuse] piètre
* lament (n) : complainte (f)
* lamer (n) : (Toile) débutant, nullard
* laminate (n) : feuilleté (n)
* lamp (n) : lampe (f) - bedside lamp : lampe de chevet - floor lamp : lampe à pied, un lampadaire - indicator lamp : lampe témoin - table lamp : lampe de table - lamp post : réverbère
* lampoon (n) : libelle, pamphlet
* lampshade (n) : abat-jour (masc.)
* LAN (n) (init. de local-area network, « réseau local ») : - LAN party : tournoi en réseau
* Lancastrian (a) de Lancaster - the Lancastrian accent : l’accent de Lancaster
* lance (v) (tr.) (fa) : percer (au sens médical) - The doctor lanced the abcess : Le médecin perça l'abcès
* lancer (n) : (Milit.) lancier
* land (n) : terre (f), pays - the Promised Land : la Terre promise - grazing land : pâturages (pl.) - land art : art in situ, art environnemental - land grabber : accapareur de terres
* land (v) 1/ (intr.) atterrir, accoster, débarquer ; 2/ (tr.) décrocher (a job, un boulot)
* lander (n) : atterrisseur - lunar lander : atterrisseur lunaire
* landfall (n) : 1/ débarquement (d’un navire) - [ship] to make landfall : toucher terre, arriver à terre ; 2/ glissement de terrain ; 3/ arrivée (f) (d’une tempête) sur les côtes - [storm] to make landfall : [tempête] atteindre les côtes
* landfill (n) : 1/ déchets enfouis (pl.) ; 2/ enfouissement des déchets - landfill site : site d'enfouissement des déchets
* landfill (v) (tr.) : enfouir (des déchets) - to be landfilled : être enfoui(e)
* landfilled (ac) : enfoui(e)
* land grab / landgrab (n) : appropriation de terres, spoliation de terres, saisie de terres
* landing (n) : 1/ débarquement - landing ship : navire de débarquement, bâtiment de débarquement ; 2/ (Av.) atterrissage - to make a landing : faire un atterrissage - blind landing : atterrissage sans visibilité - forced landing : atterrissage forcé - hard landing : atterrissage brutal - soft landing : atterrissage en douceur - UFO landing : atterrissage d'ovni - landing gear : (Aéro.) train d’atterrissage - landing legs : béquilles d’atterrissage (d’une soucoupe volante) - landing permit : autorisation d’atterrissage ; 3/ palier
* landlady (n) : propriétaire (f) (au sens de bailleur), logeuse (f)
* land-locked (ac) : enclavé(e), sans littoral - land-locked country : pays enclavé
* landlord (n) : propriétaire (au sens de bailleur), logeur
* landmark (n) : point de repère
* landscape (n) : paysage - the media landscape : le paysage médiatique - to alter the political landscape : bouleverser le paysage politique - landscape architect : architecte paysagiste
* landslide (n) : 1/ glissement de terrain - [mountainous land, terre montagneuse] to be prone to landslides : être sujet(te) à des glissements de terrain ; 2/ (fig.) avalanche, raz-de-marée, victoire écrasante - landslide election : ras de marée électoral, élection triomphale
* lane (n) : 1/ ruelle (f) ; 2/ (amér.) voie (f) (d’autoroute), file (f) - passing lane : voie de gauche - lane change : changement de file; 3/ piste (f) - bike lane : piste cyclable ; 4/ (Mar.) couloir - shipping lane : couloir de navigation
* language (n) (fa p) : 1/ langue (f) (d’un pays, humaine) - to be proficient in a language : avoir un bon niveau dans une langue, bien maîtriser une langue - adopted language : langue d’adoption - ancient language : langue ancienne - bastardised/-ized language : langue abatardie - dead language : langue morte - dominant language : langue dominante - extinct language : langue disparue - first language : première langue, langue maternelle - foreign language : langue étrangère - human language : langue humaine - living language : langue vivante - the local language : la langue du cru - modern language : langue moderne - national language : langue nationale - native language : langue maternelle - natural language : langue d’origine naturelle - official language : langue officielle - primary language : langue maternelle - second language : a/ seconde langue, langue seconde, deuxième langue ; b/ langue étrangère - vehicular language : langue véhiculaire - vernacular language : langue vernaculaire, langue du pays - world language : langue parlée dans le monde entier - the language barrier : l’obstacle de la langue - language laboratory : laboratoire de langues - language learning : (l')apprentissage des langues - language policy : politique linguistique - language school : école de langue - language skills : compétences linguistiques - language teaching : (l')enseignement des langues ; 2/ langage (sans u) (artificiel), langue (f) - body language : langage du corps, langage corporel - computer language : langage informatique, langue informatique - constructed language : langue construite (par ex. espéranto, interlingua, klingon) - controlled language : langue normalisée, langue rationalisée - inflected language : langue qui prend des marques flexionnelles, langue flexionnelle - invented language : language inventé - leftie language : langage de gauchiste - restricted language : langue limitée - sign language : langage gestuel - spoken language : langue parlée - written language : langue écrite - language set : (Inf.) jeu de caractères (affichables à l’écran) ; 3/ langage, vocabulaire, termes (pl.), mots (pl.) - in plain language : en langage clair ; 4/ langage, façon de parler - elevated language : langage soutenu - formal language : langage soutenu - informal language : langage familier
* languid (a) : languissant(e)
* lantern (n) : lanterne (f) - Chinese lantern : lanterne chinoise
* lanyard (n) : 1/ cordon, cordelette (f) ; 2/ (Naut.) amarre (f)
* lap (n) : giron - to live in the lap of luxury : nager dans l’opulence, vivre dans le grand luxe - It is in the lap of gods : C’est dans la décision des dieux
* lap (v) : (tr.) (Usin.) roder ; (intr.) : [vagues] clapoter
* lapdog (n) : bichon - lapdog journalism : (le) journalisme tenu en laisse
* lapel (n) : revers (d’habit) - raincoat lapels : revers d'imperméable - lapel mike : micro-cravate (m)
* lapelled (a) : à revers
* lapidary (a) : 1/ lapidaire - lapidary saw : scie lapidaire, scie à pierres précieuses ; 2/ (fig.) lapidaire, très succinct(e)
* lapping (n) : (Usin.) rodage
* lapse (n) : 1/ faute (f) (syn. fault) ; 2/ laps - time lapse : a/ laps de temps, temps écoulé (between… and…, entre… et…) ; b/ (Phot.) accéléré (n) - time lapse video : vidéo en accéléré
* laptop (n) : ordinateur portable, portable (n)
* lapwing (n) : vanneau
* larceny (n) : vol simple, larcin - grand larceny : vol de grande envergure, vol qualifié - petty larceny : larcin, vol simple
* lard (n) (fa) : 1/ saindoux ; 2/ gras (du ventre)
* lard (v) (tr.) : larder
* larder (n) (brit.) : garde-manger (syn. amér. pantry)
* large (a) (fa) : grand(e), gros(se), vaste
* large-capacity (ac) : de grande contenance
* largely (adv.) (fa) : en grande partie, principalement, en majorité, pour la plupart
* large-scale (ac) : à grande échelle
* large-size(d) (ac) : de grande taille, de grandes dimensions - large-sized documents : documents de grand format
* lark (n) : 1/ alouette (f) ; 2/ (fam.) rigolade (f) ; 3/ affaire (f), histoire (f)
* lariat (n) : 1/ lasso ; 2/ longe (f)
* larva (n) (pl. larvae) : larve (f) - botfly larva : larve de gastérophile
* laser (n) (init. de light amplification by stimulated emission of radiation) : laser - laser beam : rayon laser - laser cutting : découpe au laser - laser ray : rayon laser - processing laser : laser d’usinage
* laser off (v) : (tr.) enelever au laser ; (intr.) s’enlever au laser - That will laser off : Ça partira au laser
* lash (n) (pl. lashes) : cil
* lass (n) (brit.) : jeune fille (f)
* last (a) : 1/ dernier/-ière (= ultime) - the last man standing : le dernier homme debout (à la fin du combat), l’ultime survivant (du combat) - the last picture show : la dernière séance (au cinéma) ; 2/ dernier/-ière (= le plus récent) - Last update: 29 February 2004 : Dernière mise à jour : 29 février 2004
* last (adv.) : 1/ en dernier ; 2/ pour la dernière fois - It has been many years since I last added material to this page : Cela fait des années que je n’ai rien ajouté à cette page
* last (adj. subst.) : - the last : la dernière fois - I have a feeling that we have not heard the last of that fiend : J’ai le sentiment que ce n’est pas la dernière fois que nous entendons parler de ce démon, J’ai le sentiment que nous entendrons encore parler de ce démon - Have we seen the last of them ? : Est-ce la dernière fois que nous les voyons ?
* last (n) : forme (f) (de chaussure)
* last (v) (tr.) : faire (tant de temps), durer - It’s too good to last : C’est trop beau pour durer
* last but not least (m d l) : dernier point mais non le moindre, enfin et surtout (var. and last but by no means least)
* last-ditch (ac) : ultime, dernier/-ière - last-ditch attempt : ultime tentative (f) - last-ditch effort : ultime effort
* lasting (a) : 1/ permanent(e) ; 2/ tenace, persistant(e)
* Lastly (a m p) (t d p) : En dernier lieu, Pour finir
* Lastly, but importantly, … (a m p) (t d p) : Dernier point et non le moindre, …
* last night (loc. adv.) : 1/ la nuit dernière ; 2/ hier soir
* latch (n) (pl. latches) : loquet
* latch (v) (tr.) : fermer au loquet
* late (a) : 1/ en retard - to be late : être en retard - They are an hour late : Ils ont une heure de retard ; 2/ tardif/-ive - by the late 1920s : vers la fin des années 1920 - in late afternoon : tard dans l’après-midi - in late spring : vers la fin du printemps ; 3/ récent(e) - of late years : ces dernières années ; 4/ feu(e) - the late Mr. Thomas Cardew : feu le regretté M. Thomas Cardew
* late (adv.) : tard - He left late in the afternoon : Il partit tard dans l’après-midi (anton. early)
* latecomer (n) : retardataire
* lately (adv.) : dernièrement - Lately, … (a m p) (t d p) : Dernièrement, …
* latent (a) : latent(e), caché(e) - latent defect : défaut caché, vice caché
* later (compar. de late) : plus tard - no later than… : pas plus tard que…
* latest (a) (superl. de late) : tout dernier / toute dernière, tout récent / toute récente, dernier/-ière en date - the latest news : les dernières nouvelles - the latest offspring in the family : le dernier né de la famille
* latest (n) (the) : 1/ (les) dernières nouvelles, (les) dernières informations ; 2/ (la) dernière blague - You heard the latest ? : Tu connais la dernière ? ; 3/ (les) nouveautés (in a field, dans un domaine) ; 2/ (le) plus tard - at the latest : au plus tard
* lathe (n) : (Usin.) tour (la machine) - numerically-controlled production lathe : tour à commande numérique
* lather (n) : mousse (f) (de savon)
* lather (v) (tr .) : faire mousser, savonner - Lather, rinse, repeat : Savonnez, rincez, recommencez
* Latin (a) : latin(e) - Latin America : Amérique latine - Latin lover : roméo, bourreau des cœurs latin, séducteur latin, séducteur méditerranéen, tombeur de ces dames
* latitude (n) : liberté (f)
* latter (a) : - the latter half of August : la deuxième quinzaine d’août - the latter (a. subst. sing.) : ce dernier / cette dernière (anton. the former)
* lattice (n) : 1/ treillis ; 2/ treillage
* lattice (v) (tr.) : 1/ treillisser ; 2/ treillager
* Latvia (n pr.) : (la) Lettonie
* Latvian (a) : letton(e) (sans maj.)
* Latvian (n pr.) : Letton (le ressortissant)
* Latvian (n) : letton (la langue), lettone (la ressortissante)
* laud (v) (tr.) : faire l’éloge de, encenser, chanter les louanges de - to be lauded by the media : être encensé par les médias
* laugh (v) (intr) : rire - You’ll laugh on the other side of your face when… : Tu vas rire jaune quand…
* laughable (a) : risible, ridicule
* laughably (adv.) : de façon risible, risiblement, de façon ridicule, ridiculement
* laugh off (v) (tr.) : rire de (qch), choisir de rire de (qch), ne pas prendre (qch) au sérieux - to try to laugh it off lightly : essayer de prendre (qch) à la légère
* laughter (n) : rire - a peal of laughter : un éclat de rire - sardonic laughter : rire sardonique
* launch (n) (pl. launches) : lancement - orbital launch (Aéro.) : lancement en orbite - launch vehicle (Aéro.) : véhicule de lancement, lanceur - launch window (Aéro.) : fenêtre de tir, créneau de tir
* launch (v) : (tr.) lancer (un vaisseau, une attaque, etc.) - to launch a counterattack : lancer une contre-attaque - to lauch a counterstrike : lancer une contre-attaque - to launch a first strike : lancer une première frappe - to launch a space probe : lancer une sonde spatiale ; (intr.) - to launch into sb : s’en prendre verbalement à qn
* launcher (n) : (Aéro.) lanceur - grenade launcher : lance-grenade - missile launcher : lance-missile - rocket launcher : lance-roquette - torpedo launcher : lance-torpille (l’appareil) (syn. torpedo tube)
* launchpad (n) : (Aéro.) plateforme de lancement
* launder (v) (tr.) : 1/ laver, blanchir ; 2/ blanchir (de l’argent)
* launderer (n) : blanchisseur (le fém. est laundress) - money launderer : blanchisseur d’argent
* laundering (n) : 1/ lavage, blanchissage ; 2/ (Fin.) blanchiment - money laundering : blanchiment d’argent
* launderette / laundrette (n) : laverie automatique (f)
* laundress (n) (pl. laundresses) : 1/ lavandière (f) ; 2/ blanchisseuse (f) - professional laundress : blanchisseuse professionnelle
* laundry (n) : linge à laver, linge sale - laundry basket : panier à linge - laundry list : a/ liste de blanchisserie ; b/ (fig.) longue liste (f), liste interminable - laundry room : buanderie (f)
* laurel (n) : 1/ (le) laurier (l’arbre) ; 2/ laurels (pl.) : lauriers (la couronne) - Don't rest on your laurels! : Ne te repose pas sur tes lauriers ! / Ne vous reposez pas sur vos lauriers !
* lavatory (n) : toilettes (f pl.) - public lavatory : toilettes publiques - lavatory humour : humour de bas étage - lavatory joke : blague à chier (vulg.) - lavatory paper : papier toilettes, papier hygiénique
* lavish (a) : 1/ [individu] généreux/-euse ; 2/ [individu] dépensier/-ière ; 3/ [dépense] extravagante - lavish budget : budget faramineux
* lavish (v) (tr.) : prodiguer
* lavishly (n) : 1/ généreusement ; 2/ à profusion
* law (n) : 1/ (la) loi - It’s the law! : C’est la loi ! - not to be above the law : ne pas être au-dessus de la loi / des lois - to be demanded by law : être exigé par la loi - to break the law : enfreindre la loi - to enforce the law : appliquer la loi - law and order (sans art.) : l'ordre public (syn. public order) - the law of the strongest : la loi du plus fort - admiralty law : (la) loi maritime - law breaker : contrevenant à la loi, délinquant(e), hors-la-loi, criminel(le) - law breaking : violation(s) de la loi ; 2/ (une) loi - the law of unintended consequences : la loi des conséquences imprévues, la loi des effets pervers - the licensing laws : les lois sur les débits de boissons ; 3/ (le) droit - point of law : point de droit - business law : (le) droit des affaires - canon law : (le) droit canonique - civil law : (le) droit civil - common law (Irlande, Canada, États-Unis) (litt. (la) loi commune) : (le) droit commun - constitutional law : (le) droit constitutionnel - domestic law : (le) droit interne, (le) droit national - international law : (le) droit international - law school : faculté de droit
* law-abiding (ac) : respectueux/-euse des lois - law-abiding citizen : citoyen respectueux des lois
* lawbreaker (n) : voir law breaker
* lawbreaking (n) : voir law breaking
* lawn (n) : pelouse (f) - lawn mower : tondeuse à gazon (svt abrégé en mower) - lawn sprinkler : système d’arrosage de pelouse
* lawsuit (n) : procès
* lawyer (n) : 1/ homme de loi, juriste (m/f) ; 2/ (amér.) avocat, avocate
* laziness (n) : paresse (f)
* lazy (a) : paresseux/-euse
* lazybones (n) : paresseux, traîne-savate (masc.)
* LAX (n pr.) (code de Los Angeles International Airport) - to take off from LAX : décoller de l’aéroport de Los Angeles
* lax (a) : 1/ [individu] négligent(e) ; 2/ [comportement] relâché(e), laxiste - lax security procedures : pratiques de sécurité laxistes - lax editorial standards : (Presse) normes rédactionnelles peu strictes
* laxer (comp. de lax) : plus coulant, moins strict
* lay (v) (laid, laid) (tr.) : 1/ poser horizontalement, poser à plat, déposer (horizontalement) - to lay a wreath on a cenotaph : déposer une couronne sur un cénotaphe - to lay a pipeline : (selon le cas) poser une canalisation / un oléoduc / un gazoduc - to lay a road : faire une route, construire une route ; 2/ (expressions diverses) - to lay in place : mettre en place - to lay stress on sth : insister sur qch
* lay down (v) (laid, laid) (tr.) : 1/ (tr.) déposer - to lay down one’s arms : déposer les armes - to lay down a film : déposer une pellicule ; 2/ (intr.) se coucher, s’étendre, se reposer
* layer (n) : couche (f) - near-impervious layer : couche quasi imperméable - top layer : couche supérieure
* layered (a) : superposé(e) - layered rhythms : (Mus.) rythmes superposés
* laying (n) : pose à plat - road laying : construction de routes
* layman (n) (pl. laymen) : 1/ laïc / laïque ; 2/ profane, novice, débutant - for the unwary layman : pour le simple profane - in layman’s terms : a/ en termes simples, en langage de tous les jours ; b/ (selon le cas) en termes non scientifiques, en termes non techniques
* lay off (laid, laid) (v) (tr.) : licencier, mettre à pied, débaucher
* layoffs (n pl.) : licenciements collectifs, mises à pied collectives (f pl.)
* layout (n) : 1/ aménagement, disposition (f) ; 2/ mise en page ; 3/ première maquette (f), squelette (d’un film d’animation) - layout artist : maquettiste (en animation) (m/f)
* lay out (v) (laid, laid) (tr.) : 1/ aménager, disposer, agencer - to be well laid out : être bien aménagé ; 2/ exposer, présenter (des explications)
* lay over (v) (intr.) : faire escale, faire halte
* layover (n) : 1/ escale (f), halte (f) - to have a layover in Paris : faire escale à Paris ; 2/ (Av.) visite de grand entretien
* lead (n) : plomb - lead poisoning : empoisonnement au plomb, saturnisme
* lead (n) : 1/ - to take the lead : a/ (Danse) conduire ; b/ (fig.) prendre la tête, prendre la direction, jouer un rôle moteur, jouer le rôle de chef de file ; 2/ piste, indice - false lead : fausse piste
* lead (v) (led, led) (tr.) : être à la tête de, conduire, mener - to lead the way : aller devant - to lead to sth : conduire à qch, donner lieu à qch, aboutir à qch, entraîner qch, causer qch
* lead along (v) (led, led) (tr.) : maintenir en haleine
* lead away (v) (led2) (tr.) : emmener (qn) ailleurs
* leader (n) : 1/ chef, chef de file, dirigeant - business leader : chef d’entreprise - cheer leader : meneur de claque (Q) - war leader : chef de guerre ; 2/ (Mus.) chef, meneur (de groupe rock, pop, etc.) - band leader : chef de groupe (musical) ; 3/ (Course cycliste) meneur ; 4/ (Courses hippiques) cheval de tête
* leadership (n) : 1/ domination (f), suprématie (f), hégémonie, position dominante (f), première place (f), place de numéro 1, primauté (f) (d'un pays) ; 2/ exercice de l'autorité (d'un chef), commandement - leadership abilities : qualités de meneur d’hommes ; 3/ dirigeants (pl.)
* lead-in (n) : introduction (f), intro (f) (fam.) (anton. lead-out)
* leading (a) : 1/ principal(e) - leading part : rôle principal ; 2/ de premier plan - leading columnist : chroniqueur de premier plan ; 3/ de pointe - leading engineer : ingénieur de pointe
* lead-free (ac) : sans plomb - lead-free petrol : essence sans plomb (amér. lead-free gasoline)
* leadless (a) : sans plomb
* lead-laden (ac) : contenant du plomb, plombifère - lead-laden paint : peinture plombifère (f)
* lead-out (n) : conclusion (f) (d’un reportage, d’une émission), final (d’un épisode)
* lead-up (n) : période qui précède (qch) - the lead-up to our encounter : la période précédant notre rencontre
* leaf (n) (pl. leaves) : 1/ feuille (f) - cabbage leaf : feuille de chou - fig leaf : (au prop.) feuille de figuier, (au fig.) feuille de vigne, couverture - leaf blower : souffleur de feuilles, souffleuse de feuilles ; 2/ (expressions) to take a leaf out of sb’s book : prendre exemple sur qn, s’inspirer de qn, suivre les traces de qn - Everyone should take a leaf out of their book : Tout le monde devrait s’inspirer de leur livre
* leaflet (n) : feuillet, prospectus - the accompanying leaflet : le feuillet joint
* leaf blower (v) (tr.) : passer qch au souffleur de feuilles - to leaf blower the floor : passer le soufleur de feuilles sur le sol
* league (n) : lieue (f)
* leak (n) : 1/ fuite (f) - Look under the bonnet for leaks : Soulevez le capot pour voir s'il n'y a pas de fuites ; 2/ (Journ., Rens.) fuite (f) (d'informations) (about, au sujet de) - press leak : fuite dans la presse - unauthorised leak : fuite qui n’est pas volontaire ; 3/ (fam.) - to take a leak : aller pisser un coup
* leak (v) : 1/ (tr.) laisser fuir ; (intr.) fuir ; 2/ (tr.) divulguer (des informations) - the story was leaked to the press : la presse a eu vent de l'affaire
* leakage (n) : fuites (f pl.) - bladder leakage : fuites urinaires
* leaker (n) (amér.) : responsable de fuites, fuiteur (d’informations), taupe (f), espion
* leak out (v) (intr.) : 1/ [liquide] fuir, [gaz} s’échapper ; 2/ (fig.) fuiter, filtrer, être divulgué(e) - Word will leak out : Ça se saura
* leak-proof (vc) (tr.) : rendre étanche
* leak-resistant (ac) : anti-fuites - leak-resistant seal : joint anti-fuites
* lean (a) : 1/ maigre, sans gras - lean beef : viande de bœuf maigre - lean diet : régime frugal - lean meat : viande maigre (f) (anton. fatty meat) - lean crops : maigres récoltes (f pl.) - lean muscles : muscles fins - lean manufacturing : production au plus juste, fabrication sans gaspillage - lean years : années maigres (pl.) , années déficitaires, années de disette, période de vaches maigres (syn. lean times) ; 2/ amaigri(e), décharné(e), efflanqué(e), étique - lean horse : cheval élancé ; 3/ pauvre, improductif/-ive, à faible teneur - lean coal : houille maigre (f) , charbon anthraciteux - lean coke : coke maigre - lean concrete : béton maigre - lean exhaust : gaz d’échappement pauvre - lean gas : gaz à l’air, gaz pauvre - lean lime : chaux hydraulique (f) - lean solution : (Chimie) solution pauvre (f)
* lean (n) : (le) maigre (de la viande)
* lean (v) (leant, leant) (intr.) : se pencher (against, contre) - to lean forward : se pencher vers l’avant
* lean and mean / lean-and-mean : maigre et agressif, maigre et agressive, dégraissé et agressif, dégraissée et agressive, - lean-and-mean production plant : unité de production dégraissée et agressive - (the) lean-and-mean workplace : (l’)entreprise dégraissée et aggressive
* leaner (a) (comp. de lean) : - The company now has a leaner organisation : L’entreprise a été dégraissée
* leant (prét. de to lean)
* leant (pp de to lean)
* lean-to (n) : appentis
* leap (n) : saut, bond (syn. jump, bound) - to take a leap : faire un bond - giant leap : bond gigantesque - to take giant leaps forward : faire de gigantesques bonds en avant - quantum leap : a/ (au prop.) saut quantique ; b/ (au fig.) grand bond (en avant), pas de géant (syn. quantum jump)
* leap (v) (leapt, leapt) (intr.) : sauter, bondir - to leap to a conclusion : en arriver à une conclusion hâtive
* leapt (prét. de to leap)
* leapt (pp de to leap)
* learn (v) (learnt, learnt, aussi learned) (tr.) : apprendre - to learn by heart : apprendre par cœur
* learned (a) : éminent(e)
* learner (n) : 1/ apprenti(e) ; 2/ étudiant(e) ; 3/ apprenant(e) (jarg.) - advanced learner : apprenant de niveau élevé - intermediate learner : apprenant de niveau intermédiaire - quick learner : personne qui apprend vite - learners’ errors : (les) erreurs des apprenants
* learning (n) : 1/ apprentissage, étude (f) - pace of learning : rythme d'apprentissage - language learning : (l')apprentissage des langues - machine learning : (l’)apprentissage des machines, (l’)apprentissage automatique - learning centre : centre éducatif - the learning community : la communauté éducative ; 2/ savoir
* learnt (prét. de to learn)
* learnt (pp de to learn)
* lease (n) : bail - to sign a lease : signer un bail - lease of life (brit.) : regain de vie
* lease (v) (tr.) : 1/ donner à bail, louer ; 2/ prendre à bail, louer
* lease and buy (v coord.) : acheter en crédit-bail
* leased (ppa) : - private leased circuits (Télécom.) : réseaux privés en location
* leasing (n) : crédit-bail (off.), location-vente (f), location avec option d’achat (LOA)
* leash (n) : 1/ attache (f), fil ; 2/ laisse (f) (de chien) - to be off the leash : a/ être sans laisse ; b/ (fig.) échapper à tout contrôle
* least (a) (superl. de little) : le moins, le moindre, minimal
* least (adv.) : le moins
* (the) least (n) : le minimum
* leather (n) : cuir
* leather-jacketed (a) : en veste de cuir - jeaned, leather-jacketed youths : des jeunes en jeans et en veste de cuir
* leave (n) : 1/ permission (f), autorisation (f) - to give sb leave to + inf. : donner à qn la permission de + inf. - shore leave : permission à terre ; 2/ congé - to be on leave : être en congé - maternity leave : congé de maternité - paid leave : congés payés (pl.) - to provide paid leave : accorder les congés payés - to take the French leave : filer à l’anglaise
* leave (v) (left, left) : (tr.) laisser, quitter - Leave me alone! : Laisse-moi / Laissez-moi tranquille ! ; (intr.) partir (for, pour) - We leave first thing in he morning : Nous partons aux aurores
* leave off (v) (left off, left off) (intr.) : cesser, s’arrêter, s’interrompre
* leaven (n) : levain
* leaven (v) (tr.) : 1/ ajouter du levain à ; 2/ (Cuis.) faire lever
* leaver (n) : - school leaver : élève ayant fini sa scolarité, élève de dernière année
* Lebanese (a) : libanais(e) (sans maj.)
* Lebanese (n pr.) : Libanais (le ressortissant)
* Lebanon (n pr.) : (le) Liban
* lectern (n) : pupitre
* lecture (n) (fa) : 1/ leçon (f) (de morale) ; 2/ cours magistral ; 3/ conférence (f)
* lecture (v) : 1/ (tr.) sermonner ; 2/ (intr.) donner des cours, enseigner - He lectures at Melbourne university : Il enseigne à l’université de Melbourne ; 3/ (intr.) donner des conférences
* lecturer (n) (fa) : 1/ chargé(e) de cours, assistant(e) ; 2/ - assistant lecturer : maître-assistant d'université - senior lecturer : maître de conférences ; 3/ conférencier/-ière
* led (prét. et pp de to lead)
* ledge (n) : ressaut, corniche (sur une façade) - bedrock ledge : rebord rocheux
* ledger (n) : (Compta.) grand livre
* lee (n) (naut.) : côté sous le vent, lof
* leech (n) : sangsue (f)
* leecher (n) : sangsue (f) (au fig.)
* leek (n) : poireau
* leer (n) : regard sournois, regard libidineux
* leer (v) (intr.) : jeter des regards sournois ou libidineux - to leer at sb : lorgner qn
* LEET / leet (n pr.) (tronc. de leet speak langage leet) (le) leet (langage codé utilisant les caractères ASCII - @$$ = ass - $# !+ = shit)
* left (prét. de to leave)
* left (pp de to leave)
* left (a) : 1/ gauche ; 2/ (Polit.) de gauche - left winger : homme / femme de gauche
* left-hand (ac) : à main gauche, à gauche - left-hand rotation : rotation à gauche
* left-handed (ac) : gaucher/-ère
* leftie / lefty (n) (pl. lefties) : 1/ homme de gauche, femme de gauche, gaucho (péj.) - leftie language : langage de gauchiste ; 2/ gaucher/-chère
* left justify / left-justify (vc) (tr.) : cadrer à gauche, aligner à gauche, justifier à gauche (text, du texte) (anton. right justify / right-justify)
* left-leaning (ac) : (qui est) de gauche, gauchisant(e) - left-leaning think tank : groupe de réflexion de gauche (anton. right-leaning : (qui est) de droite, droitisant(e))
* leftover (n) : reste, vestige - a leftover from… : les vestiges de… - the leftovers, plur. : les restes (d’un repas)
* left-wing (ac) : de gauche (politiquement) (anton. right-wing)
* left-winger (n) : personne de gauche (politiquement) (anton. right-winger)
* leg (n) : 1/ jambe (f) - to stretch one’s legs : se dégourdir les jambes ; 2/ béquille (f) - landing legs : béquilles d’atterrissage (d’une soucoupe volante) ; 3/ taquet (d’un clavier d’ordinateur)
* legacy (n) : (fig.) héritage, legs (sing.) - the legacy media (sing./pl.) : (Presse) les médias traditionnels (pl.) - legacy operating system : (Info.) système d’exploitation hérité / antérieur / déjà en place - legacy student (amér.) : étudiant parrainé
* legal (a) (fa p) : 1/ légal(e) - What I did was perfectly legal : Ce que j'ai fait était parfaitement légal; 2/ juridique, du droit - legal affairs : questions juridiques (f pl.) - legal correspondent : journaliste juridique - legal journal : revue juridique (f) - legal lingo : langage juridique - (in) legal parlance : (en) langage juridique - legal theory : (la) philosophie du droit ; 3/ judiciaire - to take legal action : intenter une action judiciaire ; 4/ - legal pad : bloc-notes (grand format)
* legalise (brit.) / legalize (amér.) (v) (tr.) : légaliser
* legend (n) : légende (f), mythe - urban legend : légende urbaine (syn. urban myth)
* legendary (a) : légendaire
* leggings (n pl.) : guêtres (f pl.)
* legislation (n) : législation (f) - hastily passed legislation : législation votée à la hâte
* legislator (n) : législateur, législatrice
* leg it (v) (intr.) (arg. brit.) : se tirer - to leg it at speed : se tirer à toute vitesse
* legitimate (a) : légitime - legitimate worry : préoccupation légitime (f)
* legitimise (brit.) / legitimize (amér.) (v) (tr.) : légitimer
* leisure (n) : temps libre, loisir, loisirs (pl.) - a life of leisure : une vie de loisirs - leisure activity : activité de loisir
* leisurely (a) : tranquille, calme, serein(e)
* lemma (n) (pl. lemmata) : lemme (forme sous laquelle un terme intègre un dictionnaire) (ex. le verbe go et ses autes formes goes, went, gone, going)
* lemme (fam.) (contr. de let me)
* lemon (n) : citron - rind of lemon : écorce de citron - lemon juicer : press-citron (masc.) - lemon squeezer : presse-citron
* lend (v) (lent, lent) (tr.) : prêter - to lend oneself to : se prêter à
* lender (n) : prêteur/-euse (n) - money lender : société de prêt
* length : 1/ longueur (f), taille (f) - unit of length : unité de longueur ; 2/ (Inf.) taille (f) (d’une carte d’extension) ; 3/ nombre de pages - Length: 115 pages : Nombre de pages : 115 ; 4/ morceau, tronçon, section (f) ; 5/ durée (f) - length of internship : durée de stage ; 6/ (expressions) - to go to great lengths (to do sth) : se donner beaucoup de mal (pour faire qch)
* lengthen (v) : (tr.) allonger, prolonger ; (intr.) s’allonger, se prolonger
* lengthening (n) : allongement, prolongement - lengthening shaft (Méca.) : arbre de prolongement
* lengthy (a) : long, qui n’en finit pas, interminable - lengthy cable runs : longueurs de câble importantes
* lens (n) : (Photog.) objectif (n) - California through my lens : La Californie à travers mon objectif - through the lens of… (fig.) : à travers le prisme de…, sous l’angle de … - through the lens of economic theory : sous l’angle de la théorie économique - telephoto lens : téléobjectif (syn. zoom lens) - lens adjustment ring : bague de réglage de l’objectif
* lent (prét. de to lend)
* lent (pp de to lend)
* lenticular (a) : lenticulaire - lenticular cloud : nuage lenticulaire - lenticular galaxy : galaxie lenticulaire (f)
* leonine (n) : léonin(e) - leonine convention : contrat léonin - leonine treaty : traité léonin, traité inégal (syn. unequal treaty)
* leopard (n) : léopard
* leopardess (n) : léoparde (f)
* lesbian (a) : lesbien(ne)
* lesbian (n) : lesbienne (f), gouine (f) (péj.)
* less (a) : moins
* less (adv.) : moins
* less (pron.) : moins
* lessen (v) : (tr.) amoindrir ; (intr.) s’amoindrir
* lesson (n) : 1/ leçon (f), cours - to take lessons : suivre des cours - drama lessons : cours d’art dramatique, cours de théâtre - object lesson : leçon de choses - private lessons : cours particuliers ; 2/ (fig.) lesson (morale) - hard-learned lessons : leçons durement apprises
* lest (lit.) (conj. de crainte) : de peur que
* let (v) (let, let) (tr.) : 1/ laisser, permettre to let sb + base verbale (inf. sans to) : permettre à qn de + inf. - to let sb handle sth : laisser qn gérer qch, permettre à qn de gérer qch - Don't let me catch you at it again! : Que je ne t'y reprenne plus ! / Que je ne vous y reprenne plus ; 2/ louer (sth to sb, qch à qn) (en tant que propriétaire) - [landlord / landlady] to let rooms to students [logeur / logeuse] louer des chambres à des étudiants
* let alone (m d l) : sans parler de …, sans compter …, à plus forte raison … - I had never seen one, let alone used it : Je n’en avais jamais vu, et encore moins utilisé
* let down (v) (let, let) : 1/ (tr.) laisser tomber (au propre et au figuré) - to let down one's mates : laisser tomber ses potes - to let one’s hair down : a/ détacher ses cheveux, laisser retomber ses cheveux ; b/ (fig.) se détendre ; 2/ (tr.) décevoir (qn)
* letdown (n) : détente (f)
* lethal (a) : mortel(le), létal (syn. deadly)
* lethality (n) : capacité à tuer, létalité (f) - the lethality of a virus : la létalité d’un virus
* let in (v) (tr.) : laisser entrer - Don't let anybody in! : Ne laisse / Ne laissez entrer personne !
* let off (v) (let, let) (tr.) : relâcher, laisser s’échapper - to let off toxic chemicals into the atmosphere : relâcher des produits chimiques toxiques dans l’atmosphère
* letter (n) : 1/ lettre (f) (de l’alphabet) ; 2/ lettre (pour la poste) - to post a letter : mettre une lettre à la poste, poster une lettre - confidential letter : lettre confidentielle - letter bomb : lettre piégée - letter opener : coupe-papier (masc.) - letter scale (amér.) / letter scales (brit., pl.) : pèse-lettre (masc.) (syn. postal scale (amér.) / postal scales (brit., pl.)) ; 3/ - French letter (fam.) : capote anglaise (f), préservatif (n) ; 4/ lettre (d’information) - letter sent to investors : lettre envoyée aux investisseurs
* letting (n) : 1/ location (f) - letting of guest rooms : location de chambres d’hôte ; 2/ (svt au pl. lettings : locations) - summer lettings : locations estivales - winter lettings : locations hivernales
* lettuce (n) : laitue (f)
* let-up / letup (n) : pause (f) , relâche (f) - to work all day without a let up! : travailler toute la journée sans répit
* Levant (n pr.) : - the Levant : a/ le Levant, la Méditerranée orientale, b/ le Moyen Orient
* Levantine (a) : du Levant, levantin(e) - the Levantine coast : le littoral du Levant
* Levantine (n pr.) : Levantin, Levantine (n)
* level (n) : niveau - level of radiation : niveau de radiation - to be on the level : être régulier, être réglo (fam.), être sincère - access level (Inf.) : niveau d’accès - game level : niveau dans un jeu vidéo - sea level : niveau de la mer - at sea level : au niveau de la mer
* level (a) : de niveau
* level (v) (tr.) : - to level a charge at sb : diriger une accusation contre qn
* level-headed (ac) : ayant la tête bien plantée sur les épaules, ayant la tête sur les épaules, sensé(e), raisonnable - to stay level-headed : garder la tête sur les épaules, raison garder
* level off (v) (intr.) : 1/ redevenir plat ; 2/ [unemployment, chômage] se stabiliser -
* lever (n) : levier - gear lever : levier de vitesses ; 2/ manette (f) - sliding lever : manette coulissante
* lever out (v) (tr.) : extraire en faisant levier
* levity (n) : légèreté (f)
* levy (v) (tr.) : lever (tax, des impôts, troops, des troupes)
* lexer (n) : (Inf.) analyseur lexical
* lexical (a) : lexical(e) - lexical quiz : QCM lexical
* lexicographer (n) : lexicographe (m/f)
* lexicographic (a) : lexicographique
* lexicography (n) : (la) lexicographie
* lexicon (n) : lexique
* ley line (n) (brit.) : ligne tellurique (f)
* lez (n) (tronc. de lesbian) : lesbienne, gouine
* lezzie (n) (fam.) : lesbienne (f), gouine (f)
* LH (a) (init. de left-hand : à gauche) - LH rotation : rotation à gauche (anton. RH, init. de right-hand : à droite)
* liability (n) : 1/ responsabilité (f) - several liability (Droit) : responsabilité sépaée (f), obligation séparée (f) ; 2/ dette (f), engagement, passif - tax liability : obligations fiscales (f pl.), impôts à payer (pl.) ; 3/ (fig.) frein, boulet
* liable (a) : 1/ responsable - to be liable to a third party : être responsable auprès d’un tiers ; 2/ susceptible (de faire qch) - to be liable to do sth : être susceptible de faire qch
* liaise (v) (intr.) : être en liaison (with, avec), travailler en liaison (with, avec)
* liar (n) : menteur/-euse - I’m not that much of a liar : Je ne suis pas si grand menteur que ça - bare-faced liar : menteur éhonté - an outright liar : un fieffé menteur - proven liar : menteur avéré - a liars’ club : un cercle de menteurs, un groupe d’adeptes du canular
* libel (n) (fa) : diffamation (f) - blood libel : accusation de meurtre rituel
* libel (v) (tr.) : diffamer, calomnier
* liberal (a) (fa p) : social-démocrate (aux États-Unis)
* liberate (v) (tr.) : libérer
* liberated (ppa) : libéré(e) - liberated woman : femme libérée (f)
* liberation (n) : libération (f) - liberation struggle : lutte de libération
* Liberia (n pr.) : (le) Libéria
* Liberian (a) : libérien(ne) (sans maj. en français)
* Liberian (n pr.) : Libérien (le ressortissant), Libérienne (la ressortissante)
* Liberian-flagged (ac) : (Naut.) à pavillon libérien, sous pavillon libérien - Liberian-flagged cargo ship : cargo battant pavillon libérien
* liberty (n) (pl. liberties) : liberté (f) (syn. freedom) - civil liberties : libertés civiques
* librarian (n) (fa) : bibliothécaire (m/f)
* librarianship (n) : poste de bibliothécaire
* library (n) (pl. libraries) (fa) : bibliothèque (f) - a library’s holdings : le fonds d’une bibliothèque - circulating library : bibliothèque de prêt - cuttings library : (Presse) bureau recensant les coupures de presse - film library : cinémathèque (f) - media library : médiathèque (f) - library science : bibliothéconomie (f)
* licence (brit.) / license (amér.) (n) 1/ licence (f), liberté (f) - artistic licence : licence artistique, liberté artistique ; 3/ (fa) : permis - driving licence : permis de conduire - trading licence : patente (f)
* license (v) (tr.) : accorder une licence à - to license a technology : donner une licence d’exploitation pour une technique - to be licensed : avoir une licence (de fabrication, d’utilisation)
* licensee (n) : titulaire d’une licence (de fabrication, d’utilisation)
* licensing (n) : - to establish licensing operations : établir des unités de production sous licence
* licentious (a) : licencieux/-euse
* licentiousness (n) : licence (f) (des mœurs)
* lick (n) : 1/ (fam.) un peu de - not a lick (of sth) : pas la moindre once (de qch) ; 2/ pierre à lécher ; 3/ (Boxe) (fam.) coup
* lick (v) (tr.) : 1/ lécher ; 2/ (fig.) mettre une raclée à, battre à plates coutures
* licker (n) : lécheur - boot licker : lèche-botte (masc.) - butt licker (vulg.) : lèche-cul (masc.) (vulg.)
* lick up (v) (tr.) : laper
* lick-up (n) : - to have a lick-up : lécher son assiette
* lid (n) : 1/ couvercle ; 2/ (abr. de eyelid) paupière (f)
* lie (n) (fa) : mensonge - to spread lies : répandre des mensonges - demonstrable lie : mensonge patent - reassuring lie : mensonge réconfortant - transparent lie : mensonge évident - white lie : petit mensonge, mensonge sans conséquence - lie detector : détecteur de mensonge, polygraphe - to give the lie to sth : démentir qch
* lie (v) (régulier, lied) : mentir
* lie (v) (lay, lain) (intr.) : être étendu(e), gésir - to lie still : être étendu immobile
* lie down (v) (lay, lain) (intr.) : se coucher, s’allonger, s’étendre - When you lie down with dogs, you get up with fleas : Qui dort avec les chiens, se lève avec des puces - He wasn’t going to take it lying down (expr.) : Il n’allait pas prendre cela sans réagir / sans rien dire
* lie-down (n) : sieste (f) - to have a lie-down : s’allonger (pour faire la sieste), faire la sieste
* life (n) (pl. lives) : 1/ (la) vie, (l’)existence (f) - life after death : la vie après la mort - way of life : mode de vie - a hellish life : l’enfer sur Terre - life cycle : cycle de vie - (a) life form : (une) forme de vie ; 2/ vie (d’une personne) - to threaten lives : mettre des vies (humaines) en danger - to take sb’s life : prendre la vie de qn ; 3/ durée de vie - design life : durée de vie théorique, durée de vie de calcul, durée de vie objective - shelf life : durée de conservation sur étagère ; 4/ organismes (vivants) (pl.) - plant life : organismes végétaux
* life blood / lifeblood (n) : 1/ élément vital, forces vives (f pl.), pierre angulaire (f), pierre d’angle, moteur - Scientific research is the life blood of our civilization : La recherches scientifique est la pierre d’angle de notre civilisation ; 2/ (Litt.) vie (f)
* lifeboat (n) : canot de sauvetage - lifeboat coxswain : timonier de canot de sauvetage
* lifebuoy (n) : bouée (f)
* life-changing (ac) : qui change la vie, qui a changé la vie (de qn), qui est un tournant dans l’existence (de qn)
* lifeguard (n) : sauveteur, surveillant de baignade - lifeguard tower : poste de sauvetage, guérite de sauveteur
* lifejacket (n) : brassière de sauvetage
* lifeless (a) : inanimé(e), sans vie
* liferaft (n) : radeau de sauvetage
* life-size(d) (ac) : (de) grandeur nature, en grand
* life style / lifestyle (n) : 1/ style de vie, mode de vie, vie (f) - to lead a healthy lifestyle : mener une vie saine - lifestyle change : changement de style de vie ; 2/ the lifestyle! : la belle vie !
* life style / lifestyle-oriented (ac) : de loisir - lifestyle-oriented bicycle : bicyclette de loisir
* life-threatening (ac) : [illness, maladie] qui peut entraîner la mort (anton. non life-threatening)
* lift (n) : 1/ (Av.) portance (f) ; 2/ intonation aigüe (f) - the lift in his voice ; 3/ ascenseur - goods lift (brit.) : monte-charge (masc.) (syn. amér. goods elevator ou freight elevator) - lift shaft : cage d’ascenseur ; 3/ (brit.) - to thumb a lift : faire de l’auto-stop, faire du stop (fam.), faire du pouce (Q)
* lift (v) (tr.) : 1/ élever ; 2/ se saisir de, soulever ; 3/ (Av.) porter ; 4/ voler (an idea, etc., une idée) (from, à)
* lifter (n) : 1/ appareil de levage, cric de levage ; 2/ (abr. de shoplifter) voleur à l’étalage ; 3/ (abr. de power lifter) haltérophile
* lifting (n) : levage - power lifting : dynamophilie (f) - weight lifting : haltérophilie (f) - lifting bag : coussin de levage
* lift off (v) (tr.) : soulever
* lifton-liftoff (n double) : chargement-déchargement - lifton-liftoff machine : engin de chargement-déchargement
* lift up (v) : (tr.) élever - to lift up one’s voice : élever la voix ; (intr.) s’élever
* lig (v) (intr.) : entrer sans payer
* light (a) : clair(e)
* light (a) : 1/ léger/-ère - light aircraft : petits avions (pl.) ; 2/ allégé(e)
* light (adv.) : 1/ avec peu de bagages - to travel light : voyager avec peu de bagages
* light (n) : 1/ lumière (f) - dark light : lumière sombre - dim light : lumière diffuse - natural light : lumière du jour, lumière naturelle - pale light : lumière pale - white light : lumière blanche - the speed of light : la vitesse de la lumière - It doesn’t hold up to the light of day : Ça ne tient pas la route - light pen : (Inf.) crayon optique, crayon lumineux, photostyle ; 2/ feu - reversing lights : feux de marche arrière, feux de recul ; 3/ lampe, luminaire - arc light : lampe à arc - ceiling light : plafonnier - street light : lampadaire
* light (v) (lit, lit) (tr.) : allumer, éclairer
* lighten (v) : 1/ (tr.) éclaire, illuminer ; (intr.) s’éclairer, s’illuminer ; 2/ (tr.) éclaircir ; (intr.) s’éclaircir
* lighten (v) : (tr.) alléger ; (intr.) s’alléger
* lighten up (v) (tr.) : éclairer, illuminer, égayer - to lighten up sb’s day : égayer la journée de qn
* lighten up (v) : (tr.) relativiser ; (intr.) se détendre
* lighter (n) : briquet - cigarette lighter : allume-cigarette (masc.), allume-cigare (masc.)
* light-hearted (a) : 1/ enjoué(e) ; 2/ léger/-ère, badin(e)
* lighting (n) : éclairage - gas lighting : éclairage au gaz - lighting director (Cin.) : chef de l'éclairage
* lightly (adv.) : 1/ légèrement, faiblement - lightly laden horses : chevaux faiblement chargés ; 2/ d’un ton léger, à la légère - to take sth lightly : prendre qch à la légère
* lightning (n) : foudre (f) - ball lightning : (la) foudre en boule - lightning rod : paratonnerre
* lightpen (n) : (Inf.) crayon optique, photostyle
* light-transducing (a) : qui convertit la lumière - light-transducing abilities : aptitude à convertir la lumière
* lightweight (a) : ultraléger/-ère
* like (prép.) : comme, à l'instar de
* like (interj.) : 1/ (= as if) comme si - Like that thought never entered my mind! : Comme si cette pensée ne m’avait jamais effleuré l’esprit ! ; 2/ (arg. amér.) environ, à peu près - It is like five miles from here : C’est à environ 8 km d’ici ; 3/ (arg. amér.) du genre - He was, like, "I don’t want to do that" : Il était du genre « Je ne veux pas faire ça »
* like (v) (tr.) : aimer, aimer bien - I like the swing in the chorus : J’aime bien l’air entraînant du refrain - I don’t like cats : Je n’aime pas les chats - I like having bangs : J’aime avoir une frange - I'd like to see them in concert : J’aimerais bien les voir en concert - How would you like to be in charge of the Export Department ? : Ça te/vous dirait d’être à la tête du département Exportations ?
* like (n) (pl. likes) : (Toile) « j’aime », « aime » (anton. dislike, pl. dislikes : « je n’aime pas, « aime pas ») - a high number of likes : un grand nombre de « aime » - the like-dislike ratio : la proportion entre « aime » et « aime pas »
* like (a) : semblable, pareil(le)
* likeable (a) : aimable, agréable, sympathique - to be likeable : inspirer de la sympathie
* like button (the) (n) : (le) bouton « j’aime » (anton. (the) dislike button : (le) bouton « je n’aime pas »)
* liken (v) (tr.) : comparer (to, à), assimiler (to, à)
* likelihood (n) : probabilité (f) - in all likelihood : en toute probabilité
* likely (a) : susceptible - to be likely to + inf. (forme verbale à sens modal) : être susceptible de + inf., risquer de + inf., avoir des chances de + inf. - to look likely to + inf. : paraître susceptible de + inf., paraître avoir des chances de + inf. - It’s not likely to happen : ÇCa ne risque pas de se produire
* likely (adv.) (amér.) : probablement
* likewise (adv.) (m d l) : également, pareillement
* lilt (n) : 1/ chant court et bien rythmé ; 2/ cadence (f), rythme (in song, dans une chanson, of voice, de la voix)
* lilt (v) (intr.) : chanter harmonieusement, chanter gaiement, chanter en accentuant le rythme
* lily (n) (pl. lilies) : lys, lis - lily pad : feuille de nénuphar (f), feuille de nymphéa (f)
* limb (n) : membre (bras, jambe)
* limbo (n) : limbes (m pl.) - to retrieve sth from limbo : arracher qch aux limbes / à l’oubli - in limbo : dans l’expectative
* lime (n) (fa) : 1/ citron vert ; 2/ chaux (f) - quick lime : chaux vive - lime quarry : carrière à chaux, carrière de pierre à chaux
* limelight (n) : lumière oxhydrique (f) - in the limelight : sous les feux de la rampe
* limestone (n) : calcaire (n) - the limestone pavement : (Géol.) le socle calcaire
* limey (a) : angliche (péj.)
* limey (n) (amér.) (arg.) : 1/ marin anglais, matelot anglais ; 2/ Angliche (péj.), Rosbif (péj.)
* limit (n) : limite (f)
* limit (v) (tr.) : 1/ limiter ; 2/ réduire, restreindre
* limitation (n) : 1/ limitation (f) - damage limitation : limitation des dégâts ; 2/ restriction (f) - burdensome limitation : restriction pesante
* limited (ppa) : 1/ limité(e) - a limited run (of cars) : une série limitée (de voitures) ; 2/ réduit(e) - limited availability : disponibilité réduite (f) - limited partner : commanditaire (n)
* limo (n) (abr. de limousine) : limousine (f) - limo driver : chauffeur de limousine
* limp (a) : flasque
* limp (n) : claudication (f)
* limp (v) (intr.) : boîter, claudiquer
* limpet (n) : 1/ patelle (f), chapeau chinois ; 2/ (fig.) personne collante (f), sangsue (f)
* line (n) : 1/ ligne (f), trait - line shadings : ombrages au trait ; 2/ (Mus.) ligne - the bass line : la ligne de basse - the organ line : la ligne d'orgue ; 3/ alignement ; 4/ ligne (de téléphone) - Hold the line! : Ne quittez pas ! - telephone line : ligne téléphonique ; 5/ ligne, chaîne (f) (de fabrication, d'assemblage) - assembly line : ligne de montage, chaîne de montage - manufacturing line : ligne de fabrication, chaîne de production ; 6/ corde (f) (à linge) - washing line : corde à linge (syn. clothes line) ; 7/ conduite (f) - fuel lines (Aéro.) : conduites de carburant ; 8/ (amér.) file d’attente, queue (f) - to get in line : faire la queue - to cut in line : passer devant les autres (dans une queue), resquiller (dans une queue) (syn. brit. to jump the queue) - picket line : piquet de grève ; 9/ (Poésie) vers ; 10/ (Théât.) réplique (f) ; 11/ limite (f), démarcation (f) - We must draw the line somewhere : Il y a une limite à tout - I draw the line at that : Je n’admets pas qu’on aille jusque là - to draw the line at + gér. : refuser de + inf. ; 12/ seuil - the poverty line : le seuil de pauvreté
* lineal (a) : en ligne directe - lineal descendant : descendant en ligne directe
* linear (a) : linéaire - linear equation : (Math.) équation linéaire (f)
* linen (n) : 1/ linge - bathroom linen : linge de toilette - household linen : linge de maison ; 2/ (en mod.) lin - linen jacket : veste en lin
* line-in (nc) : canal d’entrée
* line-out (nc) : canal de sortie - line-out port : prise du canal de sortie
* liner (n) : revêtement intérieur, doublure (f) - bin liner (brit.) : sac poubelle (masc.)
* liner (n) : 1/ paquebot de ligne - costal liner : paquebot côtier - cruise liner : navire de croisière - ocean liner : paquebot - transatlantic liner : paquebot transatlantique - transpacific liner : paquebot transpacifique ; 2/ avion de ligne - air liner : avion de ligne
* line-replaceable (ac) : (Av.) [pièce] remplaçable en escale
* line-up / lineup (n) : 1/ alignement, rangée (f), rang ; 2/ queue (f) ; 3/ liste d’attente ; 4/ ordre de passage ; 5/ (Police) séance d’identification, tapissage (fam.) ; 6/ (Mus.) programmation (f) ; 7/ (Sport) a/ composition d’une équipe ; b/ liste de joueurs sélectionnés
* line up (v) : 1/ (tr.) mettre en rang (des élèves) ; 2/ (tr.) aligner (with sth, avec qch) ; (intr.) s’aligner, se mettre en ligne ; 3/ (intr.) faire la queue ; 4/ (tr.) prévoir, organiser - I’ve lined up a lot of activities for us this week : J’ai prévu un tas d’activités pour nous cette semaine
* linger (v) (intr.) : s’attarder, traîner
* lingering (a) : qui traîne, attardé(e)
* lingo (n) : 1/ (fam.) langue (f) (d’un pays, d’une époque) - the linguo of the time : la langue de l’époque - I don’t speak the local linguo : Je ne parle pas la langue du pays ; 2/ jargon (d’un métier) - That’s linguo : C’est du jargon - in legal lingo : en langage juridique - in military linguo : en jargon militaire - our modern tech lingo : notre jargon technique moderne
* lingua franca (n) (Lat .) : lingua franca, langue véhiculaire (f) - English as a lingua franca : (l’)anglais comme langue véhiculaire
* linguicide (n) : linguicide
* linguist (n) : linguiste (m/f)
* linguistic (a) : linguistique - linguistic diversity : diversité linguistique - linguistic theory : théorie linguistique
* linguistics (n) (sing.) : (la) linguistique - applied linguistics : linguistique appliquée - - theoretical linguistics : linguistique théorique
* lining (n) : revêtement, doublure (f)
* link (n) : 1/ lien ; 2/ (Toile) - back link : lien retour - broken link : lien brisé - inbound link : lien entrant - shareable link : lien partageable - link rot : pourrissement des liens ; 3/ liaison (f)
* link (v) (tr.) : (tr.) lier (to, à) ; (intr.) se connecter (to, à), se brancher (on, sur)
* linkable (a) : reliable
* linkage (n) : liaisonnement, liens (pl.)
* linker (n) : (Inf.) éditeur de liens, lieur
* linseed (n) : 1/ graine de lin - linseed cake : tourteau de graines de lin ; 2/ lin - linseed oil : huile de lin
* lint (n) : 1/ coton égrainé ; 2/ peluches (f pl.) ; 3/ charpie (f)
* lint (v) (tr.) : déplucher - to lint one's dress : déplucher sa robe
* lintel (n) : (Bât.) linteau
* lint-free (ac) : non pelucheux/-euse
* lion (n) : lion - cave lion : lion des cavernes - mountain lion : lion des montagnes, puma - lion cub : lionceau
* lioness (n) : lionne (f)
* lionfish (n) : poisson-lion
* lionisation (brit.) / lionization (amér.) (n) : idolâtrie (f), adulation (f), célébration (f) (d’une personne célèbre)
* lionise (brit.) / lionize (amé.) (v) (tr.) : idolâtrer, aduler, célébrer, encenser, porter aux nues (qn de célèbre)
* lip (n) : 1/ lèvre (f) - lip service : belles paroles, beaux dicours - to be just lip service : n’être que des discours lénifiants ; 2/ bord (of a cup, etc., d'une tasse, etc.)
* lipoma (n) : lipome
* lip sing (vc) (intr.) : chanter en différé
* lipstick (n) : rouge à lèvres - lipstick camera : caméra-crayon (f), mini-caméra (f)
* lip sync (n) : synchronisation des lèvres - lip sync delay : non synchronisation lors du doublage
* lip sync (vc) : (intr.) mimer les paroles, chanter en différé - to lip sync to a song : mimer les paroles d'une chanson, chanter une chanson en différé
* liquefied (ppa) : liquéfié(e) - liquefied natural gas : gaz naturel liquéfié
* liquefy (v) (tr.) : liquéfier
* liqueur (n) : liqueur (f)
* liquid (a) : liquide - liquid oxygen : oxygène liquide
* liquidity (n) : liquidité (f), convertibilité en espèces - liquidity crisis : crise de trésorerie
* liquor (n) (fa) : boisson alcoolisée (f), alcool - intoxicating liquor : boisson très alcoolisée - liquor cabinet : bar domestique - liquor mart (amér.) : magasin d’alcools
* lisp (n) : zézaiement, zozotement (fam.) - to have a lisp : zézayer, zozoter (fam.)
* lisp (v) (intr.) : zézayer, zozoter (fam.)
* list (n) : 1/ liste (f) - The next up on the list is… : Le suivant sur la liste est… - bucket list : liste de choses à faire avant de mourir - illustrated parts list : liste de composants illustrée - laundry list : a/ liste de blanchisserie ; b/ (fig.) longue liste, liste interminable - mailing list : (Inf.) liste de publipostage, liste de diffusion - shopping list : liste d’emplettes - sortable list : liste permettant le tri - waiting list : liste d’attente - word list : a/ liste de mots ; b/ vocabulaire - list prices : prix du catalogue, prix de base (susceptibles d’être diminués selon la quantité, les délais de paiement, etc.) ; 2/ bande (Naut.)
* list (v) : 1/ (tr.) faire la liste de - to list sth as one’s top priority : mettre qch en tête de ses préoccupations - to be listed in the electronic directory : figurer dans l’annuaire électronique ; 2/ (tr.) coter en bourse - to be listed on the stock exchange : être coté en Bourse ; 3/ (intr.) (Naut.) donner de la bande
* listed (ppa) : 1/ coté (en Bourse) - listed securities : valeurs cotées (f pl.) ; 2/ (brit.) inscrit(e) - listed site : site inscrit
* listen (v) : (tr.) écouter ; (intr.) to listen for sth : repérer qch à l’ouïe
* listener (n) : auditeur/-trice - radio listener : auditeur/-trice (de radio) - poor listener : élève qui n’écoute pas
* listenership (n) : auditeurs (pl.) d’une station de radio)
* listening (n) : (l’)écoute (f) - listening post : poste d’écoute - listening device : dispositif d'écoute, appareil d'écoute
* listing (n) : 1/ admission à la cote officielle; 2/ (a listing) une cote
* listless (a) : apathique, indolent(e), amorphe
* listlessly (adv.) : avec apathie, mollement
* listlessness (n) : apathie (f), manque d’énergie
* lit (prét. de to light)
* lit (pp de to light)
* lit (n) (tronc. de literature) : littérature (f), écrits (pl.) - alt lit (= alternative literature) : littérature publiée à compte d’auteur, littérature mise en ligne sur les réseaux sociaux
* literacy (n) : aptitude à écrire et à lire, degré d’instruction - literacy classes : cours d’alphabétsation - literacy rate : taux d’alphabétisation
* literal (a) : littéral(e) - literal translation : traduction littérale
* literary (a) : littéraire - female literary writer : femme de lettres
* literature (n) : 1/ littérature (f) ; 2/ écrits (pl.) - hate literature : écrits haineux (pl.), écrits incitant à la haine, propagande haineuse (f) ; 3/ (Indust.) documentation (f) - the manufacturer’s literature : la documentation du fabricant - literature search : recherche documentaire
* liter (amér.) / litre (brit.) (n) : litre
* lithe (a) : agile, souple
* Lithuania (n pr.) : (la) Lituanie (noter la diff. ortho.)
* Lithuanian (a) : lituanien(ne)
* Lithuanian (n pr.) : Lituanien (le ressortissant), Lithuanienne (la ressortissante)
* litigious (a) (fa) : [individu] procédurier/-ière, qui aime faire des procès, quérulent(e) (Q)
* litter (n) (fa p) : 1/ litière (f) (pour animaux domestiques) ; 2/ détritus (pl.), déchets (pl.) ; 3/ portée (f) (d’un animal)
* litter (v) (tr.) : joncher (with, de)
* live (a) : 1/ vivant(e) ; 2/ réel(le) - live ammo : munitions réelles (f pl.), balles réelles (f pl.), vraies balles (f pl.) - live exercise : exercice réel - live fire : tir à balles réelles, balles réelles (f pl.) ; 3/ [arme à feu] chargé(e) - live gun : arme chargée (f) ; 4/ (Élect.) sous tension, électrisé(e) - live wire : a/ fil (électrique) sous tension, fil électrisé ; b/ (fig.) personne qui déborde d’énergie, boule d’énergie ; 5/ [concert] transmis en direct, [chanteur] chantant en direct, [album] enregistré sur scène - live broadcast : émission en direct - live music : musique non enregistrée
* live (adv.) : en direct, sur scène - to play live : jouer en direct
* live (v) : 1/ (tr. et intr.) vivre - to live below the poverty line : vivre en dessous du seuil de pauvreté - to live grandly : mener grand train, vivre sur un grand pied - to live on the fringes of society : vivre en marge de la société ; 2/ (tr. et intr.) habiter - to live on campus : habiter sur le campus - to live off campus : habiter en ville
* livecam (n) (contr. de live camera, litt. « caméra filmant en direct ») : caméra en direct, camirette (Q)
* live down (v) (tr.) : laisser au temps le soin d’effacer (un chagrin) / de faire oublier (un scandale)
* live-in (ac) : à domicile, résident(e) - live-in maid : domestique (fém.) - live-in nurse : garde-malade, infirmière à demeure (f)
* livelihood (n) : gagne-pain, moyens de subsistance (pl.)
* liven (v) : (tr.) animer (une soirée), activer - to liven one’s text with clip art : égayer son texte avec des images prêtes à l’emploi ; (intr.) s’animer, s’activer
* liven up (v) : (tr.) animer, activer - to live it up : faire la fête, s’éclater (fig.) ; (intr.) s’animer, s’activer
* live off (v) (tr.) (non sécable) : - to live off sb : vivre aux crochets de qn - I have lived off several men : J’ai été entretenue par plusieurs hommes
* liver (n) : foie - liver failure : insuffisance hépatique (f)
* Liverpudlian (a) : liverpudlien(ne), de Liverpool
* Liverpudlian (n pr.) : Liverpudlien, Liverpudlienne, habitant de Liverpool, habitante de Liverpool
* livestock (n) : bétail
* livestream / live stream (v) (tr.) : diffuser (une vidéo) en direct
* live up (v) (tr.) : - to live it up : s’amuser follemnt, s’éclater
* liveware (n ind. sing.) : ressources humaines (f pl.), ressources vives (f pl.), personnel informatique (sing.)
* livid (a) (fa p) : 1/ livide ; 2/ furieux/-euse
* living (a) : vivant(e) - living language : langue vivante (f)
* living (n) : mode de vie - desert-wise living : mode de vie adapté au désert
* lizard (n) : lézard
* LMAO (jarg. Web) (init. de laughing my ass off, suis tordu de rire, suis mort de rire, c’est à se taper le cul par terre (vulg.))
* lo (interj.) (littéraire) : regardez ! - lo and behold : a/ ô surprise, surprise , b/ et voilà que… - And lo and behold, her wish was granted : et ô surprise, voilà que son vœu est exaucé
* lo! (interj.) (jarg. Web) (tronc. de hello! : Salut !)
* loach (n) : loche (f)
* load (n) : charge (f) - a load off my shoulders : une charge en moins, une affaire réglée - a load on my shouders : une charge en plus, une affaire sur les bras
* load (v) : (tr.) charger ; (intr.) se charger
* load-absorbing (ac) : encaissant une charge
* loader (n) : chargeur - bucket loader : chargeur à godets - front loader : chargeur frontal (syn. front-end loader) - wheel loader : chargeur sur roues, chargeur sur pneus
* loading (n) : chargement (l’action)
* load/unload (v double) (tr.) : charger-décharger - load/unload station : poste de chargement-déchargement
* loaf (n) : 1/ miche de pain (f), pain ; 2/ - Use your loaf (brit.) : Utilise ta cervelle, Réfléchis un peu (syn. arg. brit. Use your bonce, Use your noodle)
* loam (n) : terreau
* loan (n) : emprunt, prêt - to take out a loan : faire un emprunt - to get a loan : obtenir un prêt
* loan word / loanword (n) : (Ling.) emprunt (au sens de terme emprunté)
* loath (a) (lit.) : peu disposé(e) (to do sth, à faire qch)
* loathe (v) (tr.) : détester
* loathly (a) : détestable
* loathsome (a) : détestable
* lob (v) (tr.) : lancer lentement, balancer (fam.) - to lob a few shells into a country : balancer quelques obus sur un pays
* lobby (n) (pl. lobbies) : 1/ vestibule - lobby card (amér.) : photo d’exploitation, photo de film ; 2/ groupe de pression, groupe d’intérêt particulier, groupe d’intérêt - the Green lobby : le groupe de pression des Verts
* lobotomise (brit.) / lobotomize (amér.) (v) (tr.) : lobotomiser
* local (a) : du lieu, des lieux, local, proche - local dustup : querelle de clocher - the local language : la langue du cru - local lore : (la) tradition locale - local news : (les) nouvelles locales (f pl.), (l’)actualité locale (f) - local newscast : bulletin d'informations locales
* local (n) (fa) : 1/ personne du pays, indigène - locals : gens du cru ; 2/ (the local) pub du coin (en G.-B.) ; 3/ (the local) cinéma de quartier
* localise (brit.) / localize (amér.) (v) (tr.) : adapter (un logiciel) aux exigences particulières d’un pays
* locally (adv.) : localement
* locally developed (ac) : mis(e) au point sur place, mis(e) au point dans le pays
* locally grown (ac) : cultivé(e) dans la région, produit(e) sur place - locally grown food : produits alimentaires locaux
* locally produced (ac) : produit(e) sur place, de production locale - locally produced electricity : électricité de production locale
* locate (v) (tr.) : 1/ placer, positionner ; 2/ implanter ; 3/ situer, localiser - to be located : être situé(e), se situer
* location (n) (fa) : 1/ emplacement, endroit, point, site - bug-out location : retraite de survie - damp location : endroit humide - screw locations : emplacement des vis - location code : code géographique ; 2/ décor naturel, extérieurs (pl.) - shot on location : tourné en extérieurs - This scene was shot on location : Cette scène a été tournée en extérieurs (anton. in the studio : en studio)
* location-aware (ac) : (Inf.) réagissant en fonction de l’emplacement, sensible à l’emplacement
* lock (n) : 1/ boucle (f) ; 2/ serrure (f) - door lock : serrure de porte ; 3/ écluse (f) ; 4/ blocage - wheel lock : blocage des roues
* lock (v) : 1/ (tr.) fermer à clé ; 2/ (tr.) verrouiller ; (intr.) se verrouiller ; 3/ (tr.) bloquer - This forum is locked : Ce forum est verrouillé ; (intr.) se bloquer
* lock away (v) (tr.) : 1/ enfermer (qch), cacher (qch), planquer (qch) (fam.) ; 2/ envoyer (qn) en prison, mettre (qn) sous les vevrous, coffrer (qn) (fam.) ; 3/ faire enfermer (qn) - I don’t want to be locked away, I’m not mental : Je ne veux pas qu’on m’enferme, je ne suis pas maboul
* lockdown (n) : 1/ bouclage, blocage ; 2/ isolement cellulaire ; 3/ confinement - [area] to be under lockdown : [zone] être en confinement - lockdown dodger : réfractaire au confinement - strict lockdown rules : règles de confinement strictes (f. pl.); 4/ (Inf.) verrouillage (de données, de terminaux)
* locker (n) : casier (d’un élève)
* lockjaw (n) (fam.) : trisme, tétanos
* lock out (v) (tr.) : interdire d’accès, verrouiller
* lock-out (n) : grève patronale (f)
* lock up (v) : (tr.) enfermer à clé ; (intr.) se verrouiller
* locust (n) : criquet, sauterelle (f)
* lodger (n) (fa) : locataire (d'une chambre), pensionnaire (syn. amér. roomer)
* lofty (a) : hautain(e)
* log (n) : rondin, bûche (f) - log burner : poêle à bois - log cabin : cabane en rondins - log splitter : (la machine) fendeuse de bûches
* log (n) : journal de bord, registre
* log (v) (logged2) (tr.) : 1/ consigner, noter (dans un livre de bord, un journal de voyage) ; 2/ enregistrer, avoir à son actif - to log a total of 200,000 flying hours : avoir à son actif un total de 200 000 heures de vol, totaliser 200 000 heures de vol
* logbook (n) : livre de bord
* logger (n) (amér.) : bûcheron, exploitant forestier - illegal logger : exploitant forestier clandestin
* logging (n) : abattage (d'arbres), exploitation de la forêt (f) - illegal logging : abattage illégal, abattage interdit
* logic (n) : 1/ (Inf. et Électron.) logique (n) (f) (a/ =ensemble des opérations de calcul logique effectuées par un ordinateur ; b/ = ensemble des circuits électroniques capables de réaliser des opérations de calcul logique) - hardwired logic : logique câblée - software logic : logique programmée ; 2/ logique, raisonnements (pl.) - to apply logic : faire appel à la logique, être logique - according to his/her tortured logic : selon ses raisonnements aberrants
* logically (adv.) : logiquement - Logically enough, … (a m p) (t d p) : En toute logique, …
* logistics (n) : (sing.) (la) logistique - reverse logistics : (la) logistique à rebours, (la) logistique des retours (de produits), (la) gestion des retours (de produits) (syn. recovery logistics)
* logjam (n) : 1/ embâcle (masc.) ; 2/ (amér.) (fig.) impasse (f)
* logo (n) (tronc. de logotype) : logo
* log on (v) (intr.) : se connecter - to log on as an administrator : se connecter en tant qu’administrateur
* logotype (n) : logotype (abré. logo)
* loin (n) : 1/ longe, filet - pork loin : filet de porc ; 2/ reins (pl.)
* loincloth (n) : pagne, cache-sexe (masc.)
* loiter (v) (intr.) : 1/ traîner, traînasser (péj.) (syn. to hang around) ; 2/ rôder ; 3/ flâner, musarder
* loitering (a) : - loitering munitions : munitions flottantes (f pl.)
* loitering (n) : flânerie (f), flânage (Q) - No loitering : Réservé à la clientèle, Interdiction de flâner (Q) - no-loitering sign : panneau « Réservé à la clientèle »
* loll (v) (intr.) : se prélasser
* lollop (v) (lolloped) (intr.) : traîner
* lolly (n) (brit.) : 1/ (ice lolly) glace à l’eau ; 2/ sucette (f) ; 3/ (arg.) fric, pognon - to be in the lolly : avoir plein de fric
* lo-lo (n double) (abr. de lifton-liftoff : chargement-déchargement)
* London (n pr.) : Londres - south London : Londres sud
* Londoner (n) : Londonien (l’habitant), Londonienne (l’habitante)
* lone (a) : solitaire, individuel(le) - lone wolf : loup solitaire
* loneliness (n) : solitude (f)
* lonely (a) : seul(e)
* lonesome (a) : solitaire
* lonesomeness (n) : solitude (f)
* long (a) : long(ue) - long dash : tiret long, tiret cadratin (syn. em dash)
* long (adv.) : 1/ longtemps ; 2/ depuis longtemps
* long (v) (intr.) : - to long to + inf. : rêver de + inf., brûler de + inf., brûler d’envie de + inf., être impatient de + inf.
* long-awaited (ac) : tant attendu(e) - long-awaited reform : réforme tant attendue (f)
* longboard (n) : (Glisse) (l’objet) planche longue (f)
* longboarding (n) : (Glisse) pratique de la planche longue
* long-defunct (ac) : 1/ mort depuis longtemps, disparu depuis longtemps ; 2/ (fig.) [projet] abandonné depuis longtemps, enterré depuis longtemps, mort et enterré depuis longtemps
* long-delayed (ac) : tant attendu(e), longtemps différé(e), qui accumule les retards - long-delayed agreement : accord tant attendu
* long-distance (ac) : à longue distance
* long-drawn out (ac) : prolongé(e)
* longer (a) : plus long/longue (en parlant de la taille ou du temps)
* longer (adv.) : plus longtemps - How much longer before he comes ? : Encore combien de temps avant qu’il vienne ?
* long-established (ac) : établi(e) de longue date - long-established tradition : tradition établie de longue date
* long-finned (ac) : à longues nageoires (anton. short-finned)
* long-forgotten (ac) : oublié(e) depuis longtemps
* longhand (n) : écriture normale (f), écriture courante - to write in longhand : écrire à la main (anton. shorthand : sténographie (f))
* longing (n) : envie (f), désir (syn. desire)
* long johns (n pl.) : caleçon long (sing.)
* long-known (ac) : connu(e) depuis longtemps, connu de longue date - long-known danger : danger connu de longue date
* long-life (ac) : à longue durée de vie, (de) longue durée, à vie, fiable - long-life O-ring seal : bague d’étanchéité de longue durée
* long-lived (n) : à longue durée de vie, (de)longue durée (anton. short-lived)
* long-overdue (ac) : qui se fait attendre depuis longtemps
* long-range (ac) : 1/ à long terme - long-range planning : planification à long terme ; 2/ (Aéro.) à long rayon d’action, long courrier - long-range bomber : bombardier à long rayon d’action
* long-running (ac) : long(ue), de longue date - long-running affair : liaison qui remonte à loin
* longship (n) : drakkar, bateau long viking - Viking longship : drakkar viking
* longshoreman (n) (amér.) : débardeur
* long-sighted (ac) : 1/ hypermétrope ; 2/ presbyte)
* long since (loc. adv.) : depuis longtemps - They are all long since dead : Ils sont tous morts depuis longtemps
* long-standing / longstanding (ac) : de longue date - long-standing problems : problems qui ne datent pas d’hier
* long-suffering (ac) : qui souffre depuis longtemps, qui a beaucoup souffert, qui souffre le calvaire, si durement éprouvé(e) - the long-suffering nation of Syria : la nation syrienne si durement éprouvée
* long-term (ac) : à long terme (anton. short-term) - long-term planning : planification à long terme
* long-track (ac) : sur piste longue - long-track speed skating : patinage de vitesse sur piste longue
* long-troubled (ac) : à l’histoire mouvementée, à l’histoire agitée, qui a connu des déboires - long-troubled project : projet à l’histoire mouvementée
* look (n) : 1/ regard, coup d’œil - a pointed look : un regard éloquent - Just take a look at that! : Regarde-moi / Regardez-moi ça ! - to take a closer look : y regarder de plus près ; 2/ aspect, apparence (f)
* look (v) (intr.) : 1/ - to look after sth : s'occuper de qch ; 2/ - to look for sth : chercher qch (qu’on a perdu), rechercher qch (qu’on n’a pas), attendre (from sb, de qn) - I’ve been looking for my pencil case all day : J’ai cherché ma trousse toute la journée - He has everything a woman can look for in a man : Il a tout ce qu’une femme recherche chez un homme - What I’m looking for from you is a guarantee : Ce que j’attends de vous, c’est une garantie ; 3/ - to look (intr.) to + inf. : chercher à + inf.
* look-alike / lookalike (n) (pl. look-alikes / lookalikes) : 1/ mot-sosie ; 2/ (Cin.) sosie
* look back (v) (intr.) : regarder en arrière - to look back to sth : jeter un regard rétrospectif sur qch
* look down (v) (intr.) : 1/ baisser les yeux ; 2/ - to look down on sth : dédaigner qch - to look down on sb : regarder qn de haut
* looker (n) (arg.) : (en parlant d’un femme) (un) canon - She was the best-looker around here : C’était la fille la plus canon du quartier
* look forward (v) (intr.) : attendre avec impatience (to + subst. ou gér.)
* look out (v) (intr.) : - Look out! : Attention !
* lookout (n) : vigie (f)
* look over (v) (tr.) : étudier en détail
* look up (v) : 1/ (tr.) chercher (un mot, une adresse, dans une liste) ; (intr.) - to look up into a face : scruter un visage ; 2/ (intr.) aller mieux, s’améliorer - Things are looking up! : Les choses s’arrangent !
* loom (n) : métier à tisser
* loom (v) (intr.) : se dessiner, apparaître dans le lointain, surgir - to loom large : occuper une place prépondérante
* loom (up) (v) (intr.) : apparaître indistinctement, surgir
* loon (n) : barjot, dingue, fada
* loony (a) : dingue, foldingue, cinglé(e), maboul(e), toqué(e), siphonné(e), fada
* loony (n) (pl. loonies) : dingue (n), cinglé (n), fada (n)
* loop (n) (fa) : 1/ boucle (décrite) (f) - to be in the loop : être au courant, être informé - Keep me in the loop : Tiens-moi au courant / Tenez-moi au courant; 2/ (Inf.) boucle (d’itération)
* loophole (n) : point faible (dans un règlement), faille (f) (dans une réglementation)
* loose (a) : 1/ mal assujetti(e), non assujetti(e), détaché(e), délié(e), lâche, détendu(e), déserré(e) - loose end : a/ bout non attaché ; b/ (fig.) détail à régler, question en suspens ; 2/ [vêtement] flottant(e), ample - loose clothing : des vêtements amples ; 3/ (locutions) - to be at a loose end / at loose ends : ne pas trop savoir quoi faire, être un peu perdu, être un peu paumé
* loosely (adv.) : 1/ sans serrer, sans être trop moulant ; 2/ approximativement, plus ou moins, vaguement ; 3/ de façon très libre
* loosen (v) : 1/ (tr.) délier, donner du jeu à, desserrer - to loosen the purse strings : désserrer les cordons de la bourse ; (intr.) se délier, prendre du jeu, se desserrer ; 2/ (tr.) dérider, détendre ; (intr.) se dérider, se détendre
* loosen up (v) (intr.) : se dérider, se détendre
* loot (n) : 1/ butin ; 2/ fric, pognon
* loot (v) (tr.) : piller - to loot shops : piller des magasins
* looting (n) : pillage
* lop (off) (v) (tr.) : couper
* lop-sided (a) : de travers
* loquacious (a) : loquace, volubile
* lord (n) : seigneur - our Lord : notre Seigneur
* lordship (n) : 1/ seigneurie ; 2/ Your/His Lorship : (à un noble) Monsieur le Marquis, Monsieur le Baron ; (à un juge) Monsieur le juge ; (à un évêque) (Son) Excellence
* lore (n) : tradition (f) - local lore : (la) tradition locale
* lorgnette (n) (fa) : face-à-main
* lorry (n) (pl. lorries) : camion - articulated lorry : semi-remorque
* lose (v) (lost, lost) : 1/ (tr.) perdre - to lose a battle : perdre une bataille - to lose confidence in sb : ne plus avoir confiance en qn (syn. to lose faith in sb) - to lose money : perdre de l’argent - to lose one's appeal : perdre de son attrait - to lose one’s citizenship : perdre sa citoyenneté ; (intr.) perdre - What have I got to lose? : Qu’est-ce que j’ai à perdre ? ; 2/ (expressions) - to lose one’s footing : perdre pied - to lose one’s temper : se mettre en colère - to lose the day : perdre la bataille - to lose touch with… : perdre le contact avec… - to lose track of… : perdre la notion de…
* lose-lose (ac) : où tout le monde est perdant, désavantageux/-euse pour toutes les parties concernées, perdant-perdant - lose-lose situation : situation où il n’y a que des perdants, état de choses qui ne profite à personnes (anton. win-win : où il n’y a que des gagnants, qui profite à tout le monde, gagnant-gagnant)
* lose-lose (n) : situation où il n’y a que des perdants - It’s a lose-lose : Tout le monde y perd
* loser (n) : perdant (n) - sore loser : mauvais perdant
* loser-friendly (ac) : (jeu de mots avec user-friendly) pour les nuls
* loss (n) (pl. losses) : perte - It’s your loss! : C’est vous qui y perdez - to be at a loss for words : être à court de mots - to make up for a loss : compenser une perte - to run at an operating loss of… : essuyer des pertes d’exploitation de l’ordre de…- loss of face : (fait de) perdre la face, humiliation - data loss (Inf.) : perte de données - hearing loss : perte auditive - power loss : perte de puissance (d’un moteur) - pressure loss : perte de pression ; 2/ disparition - job losses : emplois perdus, disparitions d’emplois
* lost (prét. de to lose)
* lost (pp de to lose) : - to be lost for words : ne plus trouver ses mots, ne savoir que dire, être à court de mots - I’m lost for words : les mots me manquent
* (the) lost and found (adj. subst. pl.) : les) objets trouvés - to check with the lost and found : demander aux objets trouvés - to take sth to the lost and found : porter qch aux objets trouvés
* lot (n) (fa p) : 1/ condition (f), sort - to be satisfied with one’s lot : être satisfait de son sort (on dit aussi « son lot » dans ce sens) - grim lot : triste condition ; 2/ s'emploie pour « beaucoup de » (a lot of ) et « des tas de » (lots of) ; 3/ (a lot) (fam.) groupe (de gens) - a tech-centric lot : un groupe féru de technologie ; 4/ (a lot) (péj.) personne de peu de valeur - He is a bad lot : Il ne vaut pas cher - They are a bad lot : Ils ne valent pas cher
* lotta (amér.) (contr. de lot of) : a lotta people : un tas de gens, une floppée de gens
* loud (a) : bruyant(e)
* loud (adv.) : bruyamment
* loud hailer / loudhailer (n) (brit.) : porte-voix, mégaphone
* loudly (adv.) : bruyamment - to loudly proclaim : clamer haut et fort
* loud-mouthed (ac) : fort(e) en gueule, qui a le verbe haut, braillard(e)
* loudness (n) : bruit fort, caractère bruyant
* loudspeaker (n) : haut-parleur
* lough (n) : bras de mer
* lounge (n) : salon - onboard lounge : salon de bord (dans un avion de ligne) - lounge music : musique de salon (jouée dans les hôtels et les casinos) - lounge singer : chanteur/chanteuse de cabaret - lounge suit : complet-veston
* lounge (v) (intr.) : paresser (syn. idle)
* louse (n) (pl. lice) : pou (pl. poux)
* lousy (fam.) (a) : 1/ pouilleux/-euse, qui a des poux - to be lousy with sth : grouiller de qch - The place was lousy with people : L’endroit grouillait d’Anglais - to be lousy with money : être pourri d’argent ; 2/ infect(e), pourri(e) ; 3/ minable, nul(le)
* lout (n) : rustre
* louver (amér.) / louvre (brit.) (n) (fa) : jalousie (f), persienne (f)
* love (n) : 1/ amour (le sentiment) - to be madly in love : être follement amoureux (with sb, de qn), être fou amoureux (with sb, de qn) - to fall in love : s’éprendre (with sb, de qn) - to make love : faire l’amour - love at first sight : coup de foudre - puppy love : premier amour - love handles : poignées d’amour, petits bourrelets - love seat : causeuse (f), canapé biplace - love story : histoire d'amour, idylle (f), romance (f) ; 2/ amour (la personne) - Oh, there’s a little love! : Ah, en voilà un amour de petit garçon / petite fille ! (selon le cas)
* lovebird (n) : 1/ (Ornith.) inséparable (n) ; 2/ (fig.) tourtereau - They are like a pair of lovebirds : On dirait des tourtereaux
* lovelock (n) : accroche-cœur (syn. brit. kiss curl)
* love-lucky (ac) : qui porte chance en amour
* lovely (a) : 1/ joli(e), charmant(e), adorable ; 2/ agréable
* lovely (n) : dans l’expression my lovely : ma chérie, mon amour, ma belle, mon chou
* lover (n) : 1/ amant(e) - Latin lover : roméo, bourreau des cœurs latin, séducteur latin, séducteur méditerranéen, tombeur de ces dames (fam.) - true lover’s knot : bijou en forme d’entrelacs, lacs d'amour - a lovers lane : le coin des amoureux ; 2/ ami(e) - nature lover : ami de la nature ; 3/ amateur/-trice (de musique, de vin, etc.) - book lover : bibliophile - cinema lover : cinéphile
* love-struck (ac) : qui a eu le coup de foudre - We were love-struck : Nous eûmes le coup de foudre (syn. It was love at first sight)
* loving (a) : aimant(e), affectueux/-euse
* low (a) : 1/ bas(se) ; 2/ min (indication sur une jauge) ; 3/ grave (dans l’échelle des sons) ; 4/ déprimé(e) - to feel low : se sentir déprimé
* low (adv.) : bas, à basse altitude - to fly low : voler à basse altitude - to lie low : (au propre) se coucher ; (au fig.) faire profil bas
* low (n) : 1/ niveau bas - Shares are at an all-time low : Les actions sont à leur plus bas niveau ; 2/ prix plancher
* low-altitude (ac) : de faible altitude
* low-budget (ac) : à petit budget - low-budget movie : film à petit budget
* lowdown (a) : vil(e), méprisable, abject(e)
* low-cost (ac) : à faible coût, à petit prix - low-cost online resources : ressources en ligne à faible coût - low-cost producer : producteur à faible coût de revient, fabricant à faible coût de revient
* low-end (ac) : de bas de gamme (anton. high-end : de haut de gamme)
* lower (a) : inférieur(e) - the lower orders : les ordres inférieurs (de la société) - in the lower sixties : de 60 à 63 degrés
* lower (v) (tr.) : baisser, abaisser, diminuer - to lower the credit rating of DB from A3 to Baa1 : baisser la cote de crédit de la DB de A3 à Baa1
* low-fat (ac) : à faible teneur en gras / en graisse - low-fat foods : aliments à faible teneur en gras / en graisse
* low-fi (ac) (abr. de low-fidelity) : de basse fidélité
* low-fired (ac) : à cuisson réduite, à faible cuisson, à petit feu - low-fired bricks : briques à cuisson réduite (f pl.) - low-fired earthenware : faïence à petit feu (f)
* low-flying (ac) : qui vole à basse altitude, volant à basse altitude - low-flying missile : missile volant à basse altitude (anton. high-flying)
* low-hanging (ac) : [branche] basse, [fruits] les plus bas, facile(s) à cueillir (anton. high-hanging) - low-hanging branches : branches les plus basses - to pick the low-hanging fruit : a/ (au propre) cueillir les fruits les plus bas ; b/ (au fig.) choisir la solution de facilité
* low-income (ac) : à faible(s) revenu(s), aux revenus modestes
* low-intellect (ac) : à l’esprit limité, au front bas, bas de front
* lowlands (n pl.) : plaines (f pl.)
* lowly (adv.) : peu, au plus bas
* low-lying (ac) : bas(se), de basse altitude, peu élévé(e) - low-lying coastal road : route côtière basse (f) - low-lying lands : terres basses (f pl.), basses terres (f pl.)
* low-paid (ac) : mal payé(e), peu rémunéré(e) - low-paid job : boulot sous-payé (anton. highly-paid ; high-paid est incorrect)
* low-paying (ac) : mal payé(e), sous-payé(e), peu rémunéré(e) (anton. high-paying) - low-paying job : boulot mal payé
* low-price (ac) : à faible prix
* low-priced (ac) : à faible prix - low-priced works of art : œuvres d’art à petit prix
* low-rise (ac) : [immeuble] peu élevé(e) (anton. high-rise : très élevé(e))
* low-skilled (ac) : peu qualifié(e), à faible niveau de compétence - low-skilled labour : main-d’œuvre peu qualifiée (f)
* low-speed (ac) : à faible vitesse
* low-tech (ac) : à faible degré de technicité (anton. high-tech : à haut degré de technicité) - low-tech system : système à faible degré de technicité
* low-yield (ac) : à faible rendement (anton. high-yield : à haut rendement)
* lozenge (n) (fa p) : 1/ losange ; 2/ pastille (f)
* LP (n) (init. de long player) : (Mus.) 1/ (vinyle) 75 tours ; 2/ album
* Ltd : abr. de Limited
* lubber (n) : marin d’eau douce
* lubricate (v) (tr.) : lubrifier, graisser
* lubrication (n) : lubrification (f)
* lubricity (n) (fa) : 1/ lubricité (f) ; 2/ onctuosité (f) ; 3/ pouvoir lubrifiant
* lucid (a) : lucide - lucid dreaming : (le) rêve éveillé - lucid thought : (la) lucidé des idées
* luck (n) : chance (f) - Her luck ran out : La chance l’a abandonnée - Luck smiled on him : La chance lui sourit - bad luck : malchance (f), guigne (f) - to bring bad luck : porter malchance - Good luck! : Bonne chance !
* luckily (adv.) : heureusement, par chance
* lucky (a) : chanceux/-euse, qui a de la chance - Think yourself lucky! : Estime-toi / Estimez-vous heureux ! (heureuse, au fém.) - to be a lucky devil : être un sacré veinard (une sacrée veinarde, au fém.) - lucky mojo : pendentif porte-bonheur
* lucrative (a) : rentable
* lucre (n) : lucre - filthy lucre : argent sale
* ludicrous (a) : dérisoire
* luff (n) (naut.) : guindant, lof
* lug around (v) (intr.) : trimbaler (qch) (fam.)
* luggage (n ind. sing.) : bagages (pl.) - a piece of luggage : un bagage - luggage rack : porte-bagage (de voiture)
* lull (n) : accalmie (f)
* lumber (n) : 1/ bois de construction - lumber mill : scierie (f) - lumber room : débarras ; 2/ (fig.) - to be a lumber : être un boulet, être un objet encombrant, être un poids à traîner
* lumber (v) : 1/ (intr.) avancer d’un pas lourd ; 2/ (tr.) coller (sth with sth, qch à qch)
* lumberjack (n) (amér.) : bûcheron
* luminary (n) (pl. luminaries) (fa) : personnage de premier plan, sommité (f) - He is a luminary in the field : C’est une sommité dans ce domaine
* luminous (a) : lumineux/-euse - luminous object : objet lumineux
* lump (n) : 1/ morceau (de sucre) ; 2/ grumeau ; 3/ bosse (f), protubérance (f)
* lumpy (a) : 1/ grumeleux/-euse, plein(e) de grumeaux ; 2/ plein(e) de bosses, plein(e) de protubérances
* Lunar / lunar (n) : lunaire - lunar lander : atterrisseur lunaire - lunar base : base lunaite - lunar colony : colonie lunaire - lunar colonist : colon lunaire
* lunatic (a) (fa) : fou/folle, aliéné(e), dément(e) - lunatic asylum : asile d’aliénés, asile de fous
* lunch (n) : repas de midi (France), déjeuner (France), dîner (Belgique, Suisse, Canada)
* lunch (v) (tr.) : déjeuner (France), dîner (Belgique, Suisse, Canada)
* lunchable (n) (pl. lunchables) : plat tout prêt
* luncheon (n) : déjeuner (France), dîner (Belgique, Suisse, Canada) - luncheon meat (brit.) : viande à sandwich
* lung (n) : poumon - lung cancer : cancer du poumon, cancer des poumons
* lunge (n) : 1/ [Escr.] coup en avant, fente (f) ; 2/ [Gym.] fente (f) ; 3/ mouvement brusque en avant - to make a lunge at sb : se jeter sur qn
* lunge (v) (intr.) : se jeter en avant, s’avancer brusquement - to lunge at sb : se ruer sur qn
* lurch (n) (pl. lurches) : embardée (f) - to leave sb in the lurch : laisser qn en plan, laisser qn dans le pétrin, laisser tomber qn
* lurch (v) (intr.) : faire une embardée, tituber
* lure (n) : 1/ (Pêche) leurre, appât - fishing lure : appât à poissons ; 2/ (fig.) attrait
* lure (v) (tr.) : attirer, séduire, tromper - lure sb into a trap : attirer qn dans un piège - to lure sb into doing sth : inciter qn à faire qch
* lurid (a) : horrible, affreux/-euse, effrayant(e)
* lurk (v) (intr.) : rôder (syn. prowl) - to be lurking : se cacher, se tapir
* lurker (n) : 1/ rôdeur/-euse ; 2/ (Internet) observateur passif, observatrice passive (d’un forum)
* luscious (a) : 1/ succulent(e) ; 2/ voluptueux/-euse
* lust (n) : 1/ désir (for, pour) ; 2/ luxure (f)
* lust (v) (intr.) : convoiter, désirer (for sth, qch)
* luster (amér.) / lustre (brit.) (n) : éclat, lustre
* lustful (a) : 1/ plein de désir ; 2/ lubrique, libidineux/-euse
* lustfully (adv.) : 1/ avidement, avec avidité ; 2/ de façon lubrique, de façon libidineuse
* lusty (a) : vigoureux/-euse, robuste
* Lutheran (a) : luthérien(ne) (sans maj.)
* Lutheran (n pr. ) : luthérien, luthérienne
* luxury (n) (pl. luxuries) (fa) : luxe - luxury brand : marque de luxe - luxury run (Av.) : traversée de luxe
* Lybia (n pr.) : (la) Lybie
* Lybian (a) : lybien(ne) (sans maj.)
* Lybian (n pr.) : Lybien (le ressortissant)
* lye (n) : soude (f), soude caustique
* lye-based (ac) : à bas de soude - lye-based soap : savon à base de soude
* lynch (v) (tr.) : lyncher
* lynchet (n) : rideau (de culture), royon - cultivation lynchet : rideau de culture
* lynching (n) : lynchage
* lyrical (a) : lyrique
* lyrics (n pl.) : paroles (d'une chanson) (f pl.)
4omq5tzjhz4gyiyf27h66vxy47zqeyl
768357
768356
2026-06-22T22:35:56Z
Elnon
41284
/* L */
768357
wikitext
text/x-wiki
{{../Index}}
=== L ===
* L.A. / LA (n pr.) : init. de Los Angeles
* La. : abr. de Louisiana, (la) Louisiane
* lab (n) (tronc. de laboratory : laboratoire) : labo - biological lab : labo de biologie
* label (n) : 1/ marque (f) ; 2/ (Mus.) (abr. de record label) : marque de disque, boîte de production musicale, boîte de prod (fam.) - They're on the Today label - label manager : directeur de maison de disques
* labor (amér.) / labour (brit.) (n) (fa) : 1/ travail de l’accouchement - false labour : fausses contractions (f pl.), fausse alerte (f) ; 2/ travail - labours : travaux - (the) Department of Labor (amér.) : (le) ministère américain du travail - Labor Secretary (amér.) : ministre américain du Travail ; 3/ main-d'œuvre (f) - cheap labour : main-d’œuvre à bon marché
* labor (amér.) / labour (brit.) (v.) (intr.) : travailler dur, peiner
* laboratory (n) (pl. laboratories) : laboratoire - computer laboratory : l'atelier informatique - language laboratory : laboratoire de langues
* laborer (amér.) / labourer (brit.) (n) (fa) : travailleur manuel, ouvrier manuel, manouvrier, manœuvre
* laboring (amér.) / labouring (brit.) (n) : - to go labouring : prendre un métier manuel - labouring work : travail de manœuvre
* labor-intensive (amér.) / labour-intensive (brit.) (ac) : 1/ à très fort coefficient de travail ; 2/ [entreprise] exigeant beaucoup de main-d'œuvre, exigeant une main d’œuvre abondante, exigeant un personnel important
* lace (n) : 1/ dentelle (f) ; 2/ lacet (de chaussure)
* lace (v) (tr.) : 1/ (tr.) lacer ; (intr.) se lacer ; 2/ additionner (with, de), arroser (with, de)
* lack (n) : manque, absence (f) - lack of preparedness : manque de préparation
* lack (v) (tr.) : manquer de - to lack competency (in an area) : manquer de compétence, ne pas avoir les compétences nécessaires (dans un domaine)
* lacking (a) : 1/ (+ prép. in) qui manque de - [food] to be lacking in salt : [nourriture] manquer de sel ; 2/ déficient(e) - This arrangement is lacking : Cette mesure est déficiente
* laconic (a) : peu disert(e), peu causant(e) - the laconic backwoodsman : l’homme des bois peu causant
* lacquer (n) : laque (f) (syn. amér. hair spray)
* lactate (v) (int.) : secréter du lait - [woman] to be lactating : [femme] être en lactation, allaiter
* lactating (a) : allaitante (f) - lactating woman : femme allaitante (f)
* lad (n) : gars, garçon - stable lad : garçon d’écurie
* ladder (n) : 1/ échelle (f) ; 2/ (fig.) échelons (pl.) (à gravir) - to climb the social ladder : monter dans l’échelle sociale
* ladder (v) : (tr.) filer (un bas, des collants) - to ladder one’s stockings : filer ses bas ; (intr.) [bas, collants] filer
* lade (v) (arch.) (laded, laded/laden) (tr.) : charger (d’un poids) - to lade a container : charger un conteneur
* laden (a) : 1/ en charge (anton. unladen : à vide) - laden outward journey : voyage aller en charge - laden weight : poids en charge - gross laden weight : poids total en charge - laden and unladen trailers : remorques en charge et à vide ; 2/ chargé(e) - consumable goods laden on board commercial aircraft : denrées chargées à bord des avions commerciaux ; 3/ (laden with) chargé(e) de, plein(e) de, comblé(e) de, riche en - episode laden with nostalgia : épisode plein de nostalgie - laden with honours : comblé d’honneurs - future laden with challenges : avenir riche en défis
* ladies (n sing.) : toilettes (f pl.) (pour les) femmes - Could you tell me where the Ladies is? : Pourriez-vous me dire où se trouvent les Dames ?
* ladle (n) : louche (f)
* lady (n) (pl. ladies) : 1/ dame (f) - a ladies’ man : un homme à femmes (syn. womaniser/-zer) ; 2/ (titre) lady ; 3/ (fam.) épouse (f), femme (f), patronne (f) - I’ll ask my lady : Je vais demander à la patronne
* ladybird (n) (brit.) : coccinelle (f)
* ladybug (n) (amér.) : coccinelle (f)
* lag (n) : retard
* lag behind (v) (intr.) : être à la traîne
* laicism (n) : (la) laïcité (syn. secularism)
* laid (prét. de to lay)
* laid (pp de to lay)
* laid-back (a) : relax(e)
* laity (n pl.) : 1/ (les) laïcs ; 2/ (les) profanes
* lake (n) : lac - alkaline lake : lac salé - oxbow lake : bras mort
* lamb (n) : agneau - sacrificial lamb : agneau sacrificiel, bouc émissaire
* lambast (v) (tr.) : éreinter (fig.), démolir (fig.)
* lambswool (n) : laine d’agneau
* lame (a) (fa) : 1/ [individu] éclopé(e), estropié(e) ; 2/ [argument] boiteux/-euse, [excuse] piètre
* lament (n) : complainte (f)
* lamer (n) : (Toile) débutant, nullard
* laminate (n) : feuilleté (n)
* lamp (n) : lampe (f) - bedside lamp : lampe de chevet - floor lamp : lampe à pied, un lampadaire - indicator lamp : lampe témoin - table lamp : lampe de table - lamp post : réverbère
* lampoon (n) : libelle, pamphlet
* lampshade (n) : abat-jour (masc.)
* LAN (n) (init. de local-area network, « réseau local ») : - LAN party : tournoi en réseau
* Lancastrian (a) de Lancaster - the Lancastrian accent : l’accent de Lancaster
* lance (v) (tr.) (fa) : percer (au sens médical) - The doctor lanced the abcess : Le médecin perça l'abcès
* lancer (n) : (Milit.) lancier
* land (n) : terre (f), pays - the Promised Land : la Terre promise - grazing land : pâturages (pl.) - land art : art in situ, art environnemental - land grabber : accapareur de terres
* land (v) 1/ (intr.) atterrir, accoster, débarquer ; 2/ (tr.) décrocher (a job, un boulot)
* lander (n) : atterrisseur - lunar lander : atterrisseur lunaire
* landfall (n) : 1/ débarquement (d’un navire) - [ship] to make landfall : toucher terre, arriver à terre ; 2/ glissement de terrain ; 3/ arrivée (f) (d’une tempête) sur les côtes - [storm] to make landfall : [tempête] atteindre les côtes
* landfill (n) : 1/ déchets enfouis (pl.) ; 2/ enfouissement des déchets - landfill site : site d'enfouissement des déchets
* landfill (v) (tr.) : enfouir (des déchets) - to be landfilled : être enfoui(e)
* landfilled (ac) : enfoui(e)
* land grab / landgrab (n) : appropriation de terres, spoliation de terres, saisie de terres
* landing (n) : 1/ débarquement - landing ship : navire de débarquement, bâtiment de débarquement ; 2/ (Av.) atterrissage - to make a landing : faire un atterrissage - blind landing : atterrissage sans visibilité - forced landing : atterrissage forcé - hard landing : atterrissage brutal - soft landing : atterrissage en douceur - UFO landing : atterrissage d'ovni - landing gear : (Aéro.) train d’atterrissage - landing legs : béquilles d’atterrissage (d’une soucoupe volante) - landing permit : autorisation d’atterrissage ; 3/ palier
* landlady (n) : propriétaire (f) (au sens de bailleur), logeuse (f)
* land-locked (ac) : enclavé(e), sans littoral - land-locked country : pays enclavé
* landlord (n) : propriétaire (au sens de bailleur), logeur
* landmark (n) : point de repère
* landscape (n) : paysage - the media landscape : le paysage médiatique - to alter the political landscape : bouleverser le paysage politique - landscape architect : architecte paysagiste
* landslide (n) : 1/ glissement de terrain - [mountainous land, terre montagneuse] to be prone to landslides : être sujet(te) à des glissements de terrain ; 2/ (fig.) avalanche, raz-de-marée, victoire écrasante - landslide election : ras de marée électoral, élection triomphale
* lane (n) : 1/ ruelle (f) ; 2/ (amér.) voie (f) (d’autoroute), file (f) - passing lane : voie de gauche - lane change : changement de file; 3/ piste (f) - bike lane : piste cyclable ; 4/ (Mar.) couloir - shipping lane : couloir de navigation
* language (n) (fa p) : 1/ langue (f) (d’un pays, humaine) - to be proficient in a language : avoir un bon niveau dans une langue, bien maîtriser une langue - adopted language : langue d’adoption - ancient language : langue ancienne - bastardised/-ized language : langue abatardie - dead language : langue morte - dominant language : langue dominante - extinct language : langue disparue - first language : première langue, langue maternelle - foreign language : langue étrangère - human language : langue humaine - living language : langue vivante - the local language : la langue du cru - modern language : langue moderne - national language : langue nationale - native language : langue maternelle - natural language : langue d’origine naturelle - official language : langue officielle - primary language : langue maternelle - second language : a/ seconde langue, langue seconde, deuxième langue ; b/ langue étrangère - vehicular language : langue véhiculaire - vernacular language : langue vernaculaire, langue du pays - world language : langue parlée dans le monde entier - the language barrier : l’obstacle de la langue - language laboratory : laboratoire de langues - language learning : (l')apprentissage des langues - language policy : politique linguistique - language school : école de langue - language skills : compétences linguistiques - language teaching : (l')enseignement des langues ; 2/ langage (sans u) (artificiel), langue (f) - body language : langage du corps, langage corporel - computer language : langage informatique, langue informatique - constructed language : langue construite (par ex. espéranto, interlingua, klingon) - controlled language : langue normalisée, langue rationalisée - inflected language : langue qui prend des marques flexionnelles, langue flexionnelle - invented language : language inventé - leftie language : langage de gauchiste - restricted language : langue limitée - sign language : langage gestuel - spoken language : langue parlée - written language : langue écrite - language set : (Inf.) jeu de caractères (affichables à l’écran) ; 3/ langage, vocabulaire, termes (pl.), mots (pl.) - in plain language : en langage clair ; 4/ langage, façon de parler - elevated language : langage soutenu - formal language : langage soutenu - informal language : langage familier
* languid (a) : languissant(e)
* lantern (n) : lanterne (f) - Chinese lantern : lanterne chinoise
* lanyard (n) : 1/ cordon, cordelette (f) ; 2/ (Naut.) amarre (f)
* lap (n) : giron - to live in the lap of luxury : nager dans l’opulence, vivre dans le grand luxe - It is in the lap of gods : C’est dans la décision des dieux
* lap (v) : (tr.) (Usin.) roder ; (intr.) : [vagues] clapoter
* lapdog (n) : bichon - lapdog journalism : (le) journalisme tenu en laisse
* lapel (n) : revers (d’habit) - raincoat lapels : revers d'imperméable - lapel mike : micro-cravate (m)
* lapelled (a) : à revers
* lapidary (a) : 1/ lapidaire - lapidary saw : scie lapidaire, scie à pierres précieuses ; 2/ (fig.) lapidaire, très succinct(e)
* lapping (n) : (Usin.) rodage
* lapse (n) : 1/ faute (f) (syn. fault) ; 2/ laps - time lapse : a/ laps de temps, temps écoulé (between… and…, entre… et…) ; b/ (Phot.) accéléré (n) - time lapse video : vidéo en accéléré
* laptop (n) : ordinateur portable, portable (n)
* lapwing (n) : vanneau
* larceny (n) : vol simple, larcin - grand larceny : vol de grande envergure, vol qualifié - petty larceny : larcin, vol simple
* lard (n) (fa) : 1/ saindoux ; 2/ gras (du ventre)
* lard (v) (tr.) : larder
* larder (n) (brit.) : garde-manger (syn. amér. pantry)
* large (a) (fa) : grand(e), gros(se), vaste
* large-capacity (ac) : de grande contenance
* largely (adv.) (fa) : en grande partie, principalement, en majorité, pour la plupart
* large-scale (ac) : à grande échelle
* large-size(d) (ac) : de grande taille, de grandes dimensions - large-sized documents : documents de grand format
* lark (n) : 1/ alouette (f) ; 2/ (fam.) rigolade (f) ; 3/ affaire (f), histoire (f)
* lariat (n) : 1/ lasso ; 2/ longe (f)
* larva (n) (pl. larvae) : larve (f) - botfly larva : larve de gastérophile
* laser (n) (init. de light amplification by stimulated emission of radiation) : laser - laser beam : rayon laser - laser cutting : découpe au laser - laser ray : rayon laser - processing laser : laser d’usinage
* laser off (v) : (tr.) enelever au laser ; (intr.) s’enlever au laser - That will laser off : Ça partira au laser
* lash (n) (pl. lashes) : cil
* lass (n) (brit.) : jeune fille (f)
* last (a) : 1/ dernier/-ière (= ultime) - the last man standing : le dernier homme debout (à la fin du combat), l’ultime survivant (du combat) - the last picture show : la dernière séance (au cinéma) ; 2/ dernier/-ière (= le plus récent) - Last update: 29 February 2004 : Dernière mise à jour : 29 février 2004
* last (adv.) : 1/ en dernier ; 2/ pour la dernière fois - It has been many years since I last added material to this page : Cela fait des années que je n’ai rien ajouté à cette page
* last (adj. subst.) : - the last : la dernière fois - I have a feeling that we have not heard the last of that fiend : J’ai le sentiment que ce n’est pas la dernière fois que nous entendons parler de ce démon, J’ai le sentiment que nous entendrons encore parler de ce démon - Have we seen the last of them ? : Est-ce la dernière fois que nous les voyons ?
* last (n) : forme (f) (de chaussure)
* last (v) (tr.) : faire (tant de temps), durer - It’s too good to last : C’est trop beau pour durer
* last but not least (m d l) : dernier point mais non le moindre, enfin et surtout (var. and last but by no means least)
* last-ditch (ac) : ultime, dernier/-ière - last-ditch attempt : ultime tentative (f) - last-ditch effort : ultime effort
* lasting (a) : 1/ permanent(e) ; 2/ tenace, persistant(e)
* Lastly (a m p) (t d p) : En dernier lieu, Pour finir
* Lastly, but importantly, … (a m p) (t d p) : Dernier point et non le moindre, …
* last night (loc. adv.) : 1/ la nuit dernière ; 2/ hier soir
* latch (n) (pl. latches) : loquet
* latch (v) (tr.) : fermer au loquet
* late (a) : 1/ en retard - to be late : être en retard - They are an hour late : Ils ont une heure de retard ; 2/ tardif/-ive - by the late 1920s : vers la fin des années 1920 - in late afternoon : tard dans l’après-midi - in late spring : vers la fin du printemps ; 3/ récent(e) - of late years : ces dernières années ; 4/ feu(e) - the late Mr. Thomas Cardew : feu le regretté M. Thomas Cardew
* late (adv.) : tard - He left late in the afternoon : Il partit tard dans l’après-midi (anton. early)
* latecomer (n) : retardataire
* lately (adv.) : dernièrement - Lately, … (a m p) (t d p) : Dernièrement, …
* latent (a) : latent(e), caché(e) - latent defect : défaut caché, vice caché
* later (compar. de late) : plus tard - no later than… : pas plus tard que…
* latest (a) (superl. de late) : tout dernier / toute dernière, tout récent / toute récente, dernier/-ière en date - the latest news : les dernières nouvelles - the latest offspring in the family : le dernier né de la famille
* latest (n) (the) : 1/ (les) dernières nouvelles, (les) dernières informations ; 2/ (la) dernière blague - You heard the latest ? : Tu connais la dernière ? ; 3/ (les) nouveautés (in a field, dans un domaine) ; 2/ (le) plus tard - at the latest : au plus tard
* lathe (n) : (Usin.) tour (la machine) - numerically-controlled production lathe : tour à commande numérique
* lather (n) : mousse (f) (de savon)
* lather (v) (tr .) : faire mousser, savonner - Lather, rinse, repeat : Savonnez, rincez, recommencez
* Latin (a) : latin(e) - Latin America : Amérique latine - Latin lover : roméo, bourreau des cœurs latin, séducteur latin, séducteur méditerranéen, tombeur de ces dames
* latitude (n) : liberté (f)
* latter (a) : - the latter half of August : la deuxième quinzaine d’août - the latter (a. subst. sing.) : ce dernier / cette dernière (anton. the former)
* lattice (n) : 1/ treillis ; 2/ treillage
* lattice (v) (tr.) : 1/ treillisser ; 2/ treillager
* Latvia (n pr.) : (la) Lettonie
* Latvian (a) : letton(e) (sans maj.)
* Latvian (n pr.) : Letton (le ressortissant)
* Latvian (n) : letton (la langue), lettone (la ressortissante)
* laud (v) (tr.) : faire l’éloge de, encenser, chanter les louanges de - to be lauded by the media : être encensé par les médias
* laugh (v) (intr) : rire - You’ll laugh on the other side of your face when… : Tu vas rire jaune quand…
* laughable (a) : risible, ridicule
* laughably (adv.) : de façon risible, risiblement, de façon ridicule, ridiculement
* laugh off (v) (tr.) : rire de (qch), choisir de rire de (qch), ne pas prendre (qch) au sérieux - to try to laugh it off lightly : essayer de prendre (qch) à la légère
* laughter (n) : rire - a peal of laughter : un éclat de rire - sardonic laughter : rire sardonique
* launch (n) (pl. launches) : lancement - orbital launch (Aéro.) : lancement en orbite - launch vehicle (Aéro.) : véhicule de lancement, lanceur - launch window (Aéro.) : fenêtre de tir, créneau de tir
* launch (v) : (tr.) lancer (un vaisseau, une attaque, etc.) - to launch a counterattack : lancer une contre-attaque - to lauch a counterstrike : lancer une contre-attaque - to launch a first strike : lancer une première frappe - to launch a space probe : lancer une sonde spatiale ; (intr.) - to launch into sb : s’en prendre verbalement à qn
* launcher (n) : (Aéro.) lanceur - grenade launcher : lance-grenade - missile launcher : lance-missile - rocket launcher : lance-roquette - torpedo launcher : lance-torpille (l’appareil) (syn. torpedo tube)
* launchpad (n) : (Aéro.) plateforme de lancement
* launder (v) (tr.) : 1/ laver, blanchir ; 2/ blanchir (de l’argent)
* launderer (n) : blanchisseur (le fém. est laundress) - money launderer : blanchisseur d’argent
* laundering (n) : 1/ lavage, blanchissage ; 2/ (Fin.) blanchiment - money laundering : blanchiment d’argent
* launderette / laundrette (n) : laverie automatique (f)
* laundress (n) (pl. laundresses) : 1/ lavandière (f) ; 2/ blanchisseuse (f) - professional laundress : blanchisseuse professionnelle
* laundry (n) : linge à laver, linge sale - laundry basket : panier à linge - laundry list : a/ liste de blanchisserie ; b/ (fig.) longue liste (f), liste interminable - laundry room : buanderie (f)
* laurel (n) : 1/ (le) laurier (l’arbre) ; 2/ laurels (pl.) : lauriers (la couronne) - Don't rest on your laurels! : Ne te repose pas sur tes lauriers ! / Ne vous reposez pas sur vos lauriers !
* lavatory (n) : toilettes (f pl.) - public lavatory : toilettes publiques - lavatory humour : humour de bas étage - lavatory joke : blague à chier (vulg.) - lavatory paper : papier toilettes, papier hygiénique
* lavish (a) : 1/ [individu] généreux/-euse ; 2/ [individu] dépensier/-ière ; 3/ [dépense] extravagante - lavish budget : budget faramineux
* lavish (v) (tr.) : prodiguer
* lavishly (n) : 1/ généreusement ; 2/ à profusion
* law (n) : 1/ (la) loi - It’s the law! : C’est la loi ! - not to be above the law : ne pas être au-dessus de la loi / des lois - to be demanded by law : être exigé par la loi - to break the law : enfreindre la loi - to enforce the law : appliquer la loi - law and order (sans art.) : l'ordre public (syn. public order) - the law of the strongest : la loi du plus fort - admiralty law : (la) loi maritime - law breaker : contrevenant à la loi, délinquant(e), hors-la-loi, criminel(le) - law breaking : violation(s) de la loi ; 2/ (une) loi - the law of unintended consequences : la loi des conséquences imprévues, la loi des effets pervers - the licensing laws : les lois sur les débits de boissons ; 3/ (le) droit - point of law : point de droit - business law : (le) droit des affaires - canon law : (le) droit canonique - civil law : (le) droit civil - common law (Irlande, Canada, États-Unis) (litt. (la) loi commune) : (le) droit commun - constitutional law : (le) droit constitutionnel - domestic law : (le) droit interne, (le) droit national - international law : (le) droit international - law school : faculté de droit
* law-abiding (ac) : respectueux/-euse des lois - law-abiding citizen : citoyen respectueux des lois
* lawbreaker (n) : voir law breaker
* lawbreaking (n) : voir law breaking
* lawn (n) : pelouse (f) - lawn mower : tondeuse à gazon (svt abrégé en mower) - lawn sprinkler : système d’arrosage de pelouse
* lawsuit (n) : procès
* lawyer (n) : 1/ homme de loi, juriste (m/f) ; 2/ (amér.) avocat, avocate
* laziness (n) : paresse (f)
* lazy (a) : paresseux/-euse
* lazybones (n) : paresseux, traîne-savate (masc.)
* LAX (n pr.) (code de Los Angeles International Airport) - to take off from LAX : décoller de l’aéroport de Los Angeles
* lax (a) : 1/ [individu] négligent(e) ; 2/ [comportement] relâché(e), laxiste - lax security procedures : pratiques de sécurité laxistes - lax editorial standards : (Presse) normes rédactionnelles peu strictes
* laxer (comp. de lax) : plus coulant, moins strict
* lay (v) (laid, laid) (tr.) : 1/ poser horizontalement, poser à plat, déposer (horizontalement) - to lay a wreath on a cenotaph : déposer une couronne sur un cénotaphe - to lay a pipeline : (selon le cas) poser une canalisation / un oléoduc / un gazoduc - to lay a road : faire une route, construire une route ; 2/ (expressions diverses) - to lay in place : mettre en place - to lay stress on sth : insister sur qch
* lay down (v) (laid, laid) (tr.) : 1/ (tr.) déposer - to lay down one’s arms : déposer les armes - to lay down a film : déposer une pellicule ; 2/ (intr.) se coucher, s’étendre, se reposer
* layer (n) : couche (f) - near-impervious layer : couche quasi imperméable - top layer : couche supérieure
* layered (a) : superposé(e) - layered rhythms : (Mus.) rythmes superposés
* laying (n) : pose à plat - road laying : construction de routes
* layman (n) (pl. laymen) : 1/ laïc / laïque ; 2/ profane, novice, débutant - for the unwary layman : pour le simple profane - in layman’s terms : a/ en termes simples, en langage de tous les jours ; b/ (selon le cas) en termes non scientifiques, en termes non techniques
* lay off (laid, laid) (v) (tr.) : licencier, mettre à pied, débaucher
* layoffs (n pl.) : licenciements collectifs, mises à pied collectives (f pl.)
* layout (n) : 1/ aménagement, disposition (f) ; 2/ mise en page ; 3/ première maquette (f), squelette (d’un film d’animation) - layout artist : maquettiste (en animation) (m/f)
* lay out (v) (laid, laid) (tr.) : 1/ aménager, disposer, agencer - to be well laid out : être bien aménagé ; 2/ exposer, présenter (des explications)
* lay over (v) (intr.) : faire escale, faire halte
* layover (n) : 1/ escale (f), halte (f) - to have a layover in Paris : faire escale à Paris ; 2/ (Av.) visite de grand entretien
* lead (n) : plomb - lead poisoning : empoisonnement au plomb, saturnisme
* lead (n) : 1/ - to take the lead : a/ (Danse) conduire ; b/ (fig.) prendre la tête, prendre la direction, jouer un rôle moteur, jouer le rôle de chef de file ; 2/ piste, indice - false lead : fausse piste
* lead (v) (led, led) (tr.) : être à la tête de, conduire, mener - to lead the way : aller devant - to lead to sth : conduire à qch, donner lieu à qch, aboutir à qch, entraîner qch, causer qch
* lead along (v) (led, led) (tr.) : maintenir en haleine
* lead away (v) (led2) (tr.) : emmener (qn) ailleurs
* leader (n) : 1/ chef, chef de file, dirigeant - business leader : chef d’entreprise - cheer leader : meneur de claque (Q) - war leader : chef de guerre ; 2/ (Mus.) chef, meneur (de groupe rock, pop, etc.) - band leader : chef de groupe (musical) ; 3/ (Course cycliste) meneur ; 4/ (Courses hippiques) cheval de tête
* leadership (n) : 1/ domination (f), suprématie (f), hégémonie, position dominante (f), première place (f), place de numéro 1, primauté (f) (d'un pays) ; 2/ exercice de l'autorité (d'un chef), commandement - leadership abilities : qualités de meneur d’hommes ; 3/ dirigeants (pl.)
* lead-in (n) : introduction (f), intro (f) (fam.) (anton. lead-out)
* leading (a) : 1/ principal(e) - leading part : rôle principal ; 2/ de premier plan - leading columnist : chroniqueur de premier plan ; 3/ de pointe - leading engineer : ingénieur de pointe
* lead-free (ac) : sans plomb - lead-free petrol : essence sans plomb (amér. lead-free gasoline)
* leadless (a) : sans plomb
* lead-laden (ac) : contenant du plomb, plombifère - lead-laden paint : peinture plombifère (f)
* lead-out (n) : conclusion (f) (d’un reportage, d’une émission), final (d’un épisode)
* lead-up (n) : période qui précède (qch) - the lead-up to our encounter : la période précédant notre rencontre
* leaf (n) (pl. leaves) : 1/ feuille (f) - cabbage leaf : feuille de chou - fig leaf : (au prop.) feuille de figuier, (au fig.) feuille de vigne, couverture - leaf blower : souffleur de feuilles, souffleuse de feuilles ; 2/ (expressions) to take a leaf out of sb’s book : prendre exemple sur qn, s’inspirer de qn, suivre les traces de qn - Everyone should take a leaf out of their book : Tout le monde devrait s’inspirer de leur livre
* leaflet (n) : feuillet, prospectus - the accompanying leaflet : le feuillet joint
* leaf blower (v) (tr.) : passer qch au souffleur de feuilles - to leaf blower the floor : passer le soufleur de feuilles sur le sol
* league (n) : lieue (f)
* leak (n) : 1/ fuite (f) - Look under the bonnet for leaks : Soulevez le capot pour voir s'il n'y a pas de fuites ; 2/ (Journ., Rens.) fuite (f) (d'informations) (about, au sujet de) - press leak : fuite dans la presse - unauthorised leak : fuite qui n’est pas volontaire ; 3/ (fam.) - to take a leak : aller pisser un coup
* leak (v) : 1/ (tr.) laisser fuir ; (intr.) fuir ; 2/ (tr.) divulguer (des informations) - the story was leaked to the press : la presse a eu vent de l'affaire
* leakage (n) : fuites (f pl.) - bladder leakage : fuites urinaires
* leaker (n) (amér.) : responsable de fuites, fuiteur (d’informations), taupe (f), espion
* leak out (v) (intr.) : 1/ [liquide] fuir, [gaz} s’échapper ; 2/ (fig.) fuiter, filtrer, être divulgué(e) - Word will leak out : Ça se saura
* leak-proof (vc) (tr.) : rendre étanche
* leak-resistant (ac) : anti-fuites - leak-resistant seal : joint anti-fuites
* lean (a) : 1/ maigre, sans gras - lean beef : viande de bœuf maigre - lean diet : régime frugal - lean meat : viande maigre (f) (anton. fatty meat) - lean crops : maigres récoltes (f pl.) - lean muscles : muscles fins - lean manufacturing : production au plus juste, fabrication sans gaspillage - lean years : années maigres (pl.) , années déficitaires, années de disette, période de vaches maigres (syn. lean times) ; 2/ amaigri(e), décharné(e), efflanqué(e), étique - lean horse : cheval élancé ; 3/ pauvre, improductif/-ive, à faible teneur - lean coal : houille maigre (f) , charbon anthraciteux - lean coke : coke maigre - lean concrete : béton maigre - lean exhaust : gaz d’échappement pauvre - lean gas : gaz à l’air, gaz pauvre - lean lime : chaux hydraulique (f) - lean solution : (Chimie) solution pauvre (f)
* lean (n) : (le) maigre (de la viande)
* lean (v) (leant, leant) (intr.) : se pencher (against, contre) - to lean forward : se pencher vers l’avant
* lean and mean / lean-and-mean : maigre et agressif, maigre et agressive, dégraissé et agressif, dégraissée et agressive, - lean-and-mean production plant : unité de production dégraissée et agressive - (the) lean-and-mean workplace : (l’)entreprise dégraissée et aggressive
* leaner (a) (comp. de lean) : - The company now has a leaner organisation : L’entreprise a été dégraissée
* leant (prét. de to lean)
* leant (pp de to lean)
* lean-to (n) : appentis
* leap (n) : saut, bond (syn. jump, bound) - to take a leap : faire un bond - giant leap : bond gigantesque - to take giant leaps forward : faire de gigantesques bonds en avant - quantum leap : a/ (au prop.) saut quantique ; b/ (au fig.) grand bond (en avant), pas de géant (syn. quantum jump)
* leap (v) (leapt, leapt) (intr.) : sauter, bondir - to leap to a conclusion : en arriver à une conclusion hâtive
* leapt (prét. de to leap)
* leapt (pp de to leap)
* learn (v) (learnt, learnt, aussi learned) (tr.) : apprendre - to learn by heart : apprendre par cœur
* learned (a) : éminent(e)
* learner (n) : 1/ apprenti(e) ; 2/ étudiant(e) ; 3/ apprenant(e) (jarg.) - advanced learner : apprenant de niveau élevé - intermediate learner : apprenant de niveau intermédiaire - quick learner : personne qui apprend vite - learners’ errors : (les) erreurs des apprenants
* learning (n) : 1/ apprentissage, étude (f) - pace of learning : rythme d'apprentissage - language learning : (l')apprentissage des langues - machine learning : (l’)apprentissage des machines, (l’)apprentissage automatique - learning centre : centre éducatif - the learning community : la communauté éducative ; 2/ savoir
* learnt (prét. de to learn)
* learnt (pp de to learn)
* lease (n) : bail - to sign a lease : signer un bail - lease of life (brit.) : regain de vie
* lease (v) (tr.) : 1/ donner à bail, louer ; 2/ prendre à bail, louer
* lease and buy (v coord.) : acheter en crédit-bail
* leased (ppa) : - private leased circuits (Télécom.) : réseaux privés en location
* leasing (n) : crédit-bail (off.), location-vente (f), location avec option d’achat (LOA)
* leash (n) : 1/ attache (f), fil ; 2/ laisse (f) (de chien) - to be off the leash : a/ être sans laisse ; b/ (fig.) échapper à tout contrôle
* least (a) (superl. de little) : le moins, le moindre, minimal
* least (adv.) : le moins
* (the) least (n) : le minimum
* leather (n) : cuir
* leather-jacketed (a) : en veste de cuir - jeaned, leather-jacketed youths : des jeunes en jeans et en veste de cuir
* leave (n) : 1/ permission (f), autorisation (f) - to give sb leave to + inf. : donner à qn la permission de + inf. - shore leave : permission à terre ; 2/ congé - to be on leave : être en congé - maternity leave : congé de maternité - paid leave : congés payés (pl.) - to provide paid leave : accorder les congés payés - to take the French leave : filer à l’anglaise
* leave (v) (left, left) : (tr.) laisser, quitter - Leave me alone! : Laisse-moi / Laissez-moi tranquille ! ; (intr.) partir (for, pour) - We leave first thing in he morning : Nous partons aux aurores
* leave off (v) (left off, left off) (intr.) : cesser, s’arrêter, s’interrompre
* leaven (n) : levain
* leaven (v) (tr.) : 1/ ajouter du levain à ; 2/ (Cuis.) faire lever
* leaver (n) : - school leaver : élève ayant fini sa scolarité, élève de dernière année
* Lebanese (a) : libanais(e) (sans maj.)
* Lebanese (n pr.) : Libanais (le ressortissant)
* Lebanon (n pr.) : (le) Liban
* lectern (n) : pupitre
* lecture (n) (fa) : 1/ leçon (f) (de morale) ; 2/ cours magistral ; 3/ conférence (f)
* lecture (v) : 1/ (tr.) sermonner ; 2/ (intr.) donner des cours, enseigner - He lectures at Melbourne university : Il enseigne à l’université de Melbourne ; 3/ (intr.) donner des conférences
* lecturer (n) (fa) : 1/ chargé(e) de cours, assistant(e) ; 2/ - assistant lecturer : maître-assistant d'université - senior lecturer : maître de conférences ; 3/ conférencier/-ière
* led (prét. et pp de to lead)
* ledge (n) : ressaut, corniche (sur une façade) - bedrock ledge : rebord rocheux
* ledger (n) : (Compta.) grand livre
* lee (n) (naut.) : côté sous le vent, lof
* leech (n) : sangsue (f)
* leecher (n) : sangsue (f) (au fig.)
* leek (n) : poireau
* leer (n) : regard sournois, regard libidineux
* leer (v) (intr.) : jeter des regards sournois ou libidineux - to leer at sb : lorgner qn
* LEET / leet (n pr.) (tronc. de leet speak langage leet) (le) leet (langage codé utilisant les caractères ASCII - @$$ = ass - $# !+ = shit)
* left (prét. de to leave)
* left (pp de to leave)
* left (a) : 1/ gauche ; 2/ (Polit.) de gauche - left winger : homme / femme de gauche
* left-hand (ac) : à main gauche, à gauche - left-hand rotation : rotation à gauche
* left-handed (ac) : gaucher/-ère
* leftie / lefty (n) (pl. lefties) : 1/ homme de gauche, femme de gauche, gaucho (péj.) - leftie language : langage de gauchiste ; 2/ gaucher/-chère
* left justify / left-justify (vc) (tr.) : cadrer à gauche, aligner à gauche, justifier à gauche (text, du texte) (anton. right justify / right-justify)
* left-leaning (ac) : (qui est) de gauche, gauchisant(e) - left-leaning think tank : groupe de réflexion de gauche (anton. right-leaning : (qui est) de droite, droitisant(e))
* leftover (n) : reste, vestige - a leftover from… : les vestiges de… - the leftovers, plur. : les restes (d’un repas)
* left-wing (ac) : de gauche (politiquement) (anton. right-wing)
* left-winger (n) : personne de gauche (politiquement) (anton. right-winger)
* leg (n) : 1/ jambe (f) - to stretch one’s legs : se dégourdir les jambes ; 2/ béquille (f) - landing legs : béquilles d’atterrissage (d’une soucoupe volante) ; 3/ taquet (d’un clavier d’ordinateur)
* legacy (n) : (fig.) héritage, legs (sing.) - the legacy media (sing./pl.) : (Presse) les médias traditionnels (pl.) - legacy operating system : (Info.) système d’exploitation hérité / antérieur / déjà en place - legacy student (amér.) : étudiant parrainé
* legal (a) (fa p) : 1/ légal(e) - What I did was perfectly legal : Ce que j'ai fait était parfaitement légal; 2/ juridique, du droit - legal affairs : questions juridiques (f pl.) - legal correspondent : journaliste juridique - legal journal : revue juridique (f) - legal lingo : langage juridique - (in) legal parlance : (en) langage juridique - legal theory : (la) philosophie du droit ; 3/ judiciaire - to take legal action : intenter une action judiciaire ; 4/ - legal pad : bloc-notes (grand format)
* legalise (brit.) / legalize (amér.) (v) (tr.) : légaliser
* legend (n) : légende (f), mythe - urban legend : légende urbaine (syn. urban myth)
* legendary (a) : légendaire
* leggings (n pl.) : guêtres (f pl.)
* legislation (n) : législation (f) - hastily passed legislation : législation votée à la hâte
* legislator (n) : législateur, législatrice
* leg it (v) (intr.) (arg. brit.) : se tirer - to leg it at speed : se tirer à toute vitesse
* legitimate (a) : légitime - legitimate worry : préoccupation légitime (f)
* legitimise (brit.) / legitimize (amér.) (v) (tr.) : légitimer
* leisure (n) : temps libre, loisir, loisirs (pl.) - a life of leisure : une vie de loisirs - leisure activity : activité de loisir
* leisurely (a) : tranquille, calme, serein(e)
* lemma (n) (pl. lemmata) : lemme (forme sous laquelle un terme intègre un dictionnaire) (ex. le verbe go et ses autes formes goes, went, gone, going)
* lemme (fam.) (contr. de let me)
* lemon (n) : citron - rind of lemon : écorce de citron - lemon juicer : press-citron (masc.) - lemon squeezer : presse-citron
* lend (v) (lent, lent) (tr.) : prêter - to lend oneself to : se prêter à
* lender (n) : prêteur/-euse (n) - money lender : société de prêt
* length : 1/ longueur (f), taille (f) - unit of length : unité de longueur ; 2/ (Inf.) taille (f) (d’une carte d’extension) ; 3/ nombre de pages - Length: 115 pages : Nombre de pages : 115 ; 4/ morceau, tronçon, section (f) ; 5/ durée (f) - length of internship : durée de stage ; 6/ (expressions) - to go to great lengths (to do sth) : se donner beaucoup de mal (pour faire qch)
* lengthen (v) : (tr.) allonger, prolonger ; (intr.) s’allonger, se prolonger
* lengthening (n) : allongement, prolongement - lengthening shaft (Méca.) : arbre de prolongement
* lengthy (a) : long, qui n’en finit pas, interminable - lengthy cable runs : longueurs de câble importantes
* lens (n) : (Photog.) objectif (n) - California through my lens : La Californie à travers mon objectif - through the lens of… (fig.) : à travers le prisme de…, sous l’angle de … - through the lens of economic theory : sous l’angle de la théorie économique - telephoto lens : téléobjectif (syn. zoom lens) - lens adjustment ring : bague de réglage de l’objectif
* lent (prét. de to lend)
* lent (pp de to lend)
* lenticular (a) : lenticulaire - lenticular cloud : nuage lenticulaire - lenticular galaxy : galaxie lenticulaire (f)
* leonine (n) : léonin(e) - leonine convention : contrat léonin - leonine treaty : traité léonin, traité inégal (syn. unequal treaty)
* leopard (n) : léopard
* leopardess (n) : léoparde (f)
* lesbian (a) : lesbien(ne)
* lesbian (n) : lesbienne (f), gouine (f) (péj.)
* less (a) : moins
* less (adv.) : moins
* less (pron.) : moins
* lessen (v) : (tr.) amoindrir ; (intr.) s’amoindrir
* lesson (n) : 1/ leçon (f), cours - to take lessons : suivre des cours - drama lessons : cours d’art dramatique, cours de théâtre - object lesson : leçon de choses - private lessons : cours particuliers ; 2/ (fig.) lesson (morale) - hard-learned lessons : leçons durement apprises
* lest (lit.) (conj. de crainte) : de peur que
* let (v) (let, let) (tr.) : 1/ laisser, permettre to let sb + base verbale (inf. sans to) : permettre à qn de + inf. - to let sb handle sth : laisser qn gérer qch, permettre à qn de gérer qch - Don't let me catch you at it again! : Que je ne t'y reprenne plus ! / Que je ne vous y reprenne plus ; 2/ louer (sth to sb, qch à qn) (en tant que propriétaire) - [landlord / landlady] to let rooms to students [logeur / logeuse] louer des chambres à des étudiants
* let alone (m d l) : sans parler de …, sans compter …, à plus forte raison … - I had never seen one, let alone used it : Je n’en avais jamais vu, et encore moins utilisé
* let down (v) (let, let) : 1/ (tr.) laisser tomber (au propre et au figuré) - to let down one's mates : laisser tomber ses potes - to let one’s hair down : a/ détacher ses cheveux, laisser retomber ses cheveux ; b/ (fig.) se détendre ; 2/ (tr.) décevoir (qn)
* letdown (n) : détente (f)
* lethal (a) : mortel(le), létal (syn. deadly)
* lethality (n) : capacité à tuer, létalité (f) - the lethality of a virus : la létalité d’un virus
* let in (v) (tr.) : laisser entrer - Don't let anybody in! : Ne laisse / Ne laissez entrer personne !
* let off (v) (let, let) (tr.) : relâcher, laisser s’échapper - to let off toxic chemicals into the atmosphere : relâcher des produits chimiques toxiques dans l’atmosphère
* letter (n) : 1/ lettre (f) (de l’alphabet) ; 2/ lettre (pour la poste) - to post a letter : mettre une lettre à la poste, poster une lettre - confidential letter : lettre confidentielle - letter bomb : lettre piégée - letter opener : coupe-papier (masc.) - letter scale (amér.) / letter scales (brit., pl.) : pèse-lettre (masc.) (syn. postal scale (amér.) / postal scales (brit., pl.)) ; 3/ - French letter (fam.) : capote anglaise (f), préservatif (n) ; 4/ lettre (d’information) - letter sent to investors : lettre envoyée aux investisseurs
* letting (n) : 1/ location (f) - letting of guest rooms : location de chambres d’hôte ; 2/ (svt au pl. lettings : locations) - summer lettings : locations estivales - winter lettings : locations hivernales
* lettuce (n) : laitue (f)
* let-up / letup (n) : pause (f) , relâche (f) - to work all day without a let up! : travailler toute la journée sans répit
* Levant (n pr.) : - the Levant : a/ le Levant, la Méditerranée orientale, b/ le Moyen Orient
* Levantine (a) : du Levant, levantin(e) - the Levantine coast : le littoral du Levant
* Levantine (n pr.) : Levantin, Levantine (n)
* level (n) : niveau - level of radiation : niveau de radiation - to be on the level : être régulier, être réglo (fam.), être sincère - access level (Inf.) : niveau d’accès - game level : niveau dans un jeu vidéo - sea level : niveau de la mer - at sea level : au niveau de la mer
* level (a) : de niveau
* level (v) (tr.) : - to level a charge at sb : diriger une accusation contre qn
* level-headed (ac) : ayant la tête bien plantée sur les épaules, ayant la tête sur les épaules, sensé(e), raisonnable - to stay level-headed : garder la tête sur les épaules, raison garder
* level off (v) (intr.) : 1/ redevenir plat ; 2/ [unemployment, chômage] se stabiliser -
* lever (n) : levier - gear lever : levier de vitesses ; 2/ manette (f) - sliding lever : manette coulissante
* lever out (v) (tr.) : extraire en faisant levier
* levity (n) : légèreté (f)
* levy (v) (tr.) : lever (tax, des impôts, troops, des troupes)
* lexer (n) : (Inf.) analyseur lexical
* lexical (a) : lexical(e) - lexical quiz : QCM lexical
* lexicographer (n) : lexicographe (m/f)
* lexicographic (a) : lexicographique
* lexicography (n) : (la) lexicographie
* lexicon (n) : lexique
* ley line (n) (brit.) : ligne tellurique (f)
* lez (n) (tronc. de lesbian) : lesbienne, gouine
* lezzie (n) (fam.) : lesbienne (f), gouine (f)
* LH (a) (init. de left-hand : à gauche) - LH rotation : rotation à gauche (anton. RH, init. de right-hand : à droite)
* liability (n) : 1/ responsabilité (f) - several liability (Droit) : responsabilité sépaée (f), obligation séparée (f) ; 2/ dette (f), engagement, passif - tax liability : obligations fiscales (f pl.), impôts à payer (pl.) ; 3/ (fig.) frein, boulet
* liable (a) : 1/ responsable - to be liable to a third party : être responsable auprès d’un tiers ; 2/ susceptible (de faire qch) - to be liable to do sth : être susceptible de faire qch
* liaise (v) (intr.) : être en liaison (with, avec), travailler en liaison (with, avec)
* liar (n) : menteur/-euse - I’m not that much of a liar : Je ne suis pas si grand menteur que ça - bare-faced liar : menteur éhonté - an outright liar : un fieffé menteur - proven liar : menteur avéré - a liars’ club : un cercle de menteurs, un groupe d’adeptes du canular
* libel (n) (fa) : diffamation (f) - blood libel : accusation de meurtre rituel
* libel (v) (tr.) : diffamer, calomnier
* liberal (a) (fa p) : social-démocrate (aux États-Unis)
* liberate (v) (tr.) : libérer
* liberated (ppa) : libéré(e) - liberated woman : femme libérée (f)
* liberation (n) : libération (f) - liberation struggle : lutte de libération
* Liberia (n pr.) : (le) Libéria
* Liberian (a) : libérien(ne) (sans maj. en français)
* Liberian (n pr.) : Libérien (le ressortissant), Libérienne (la ressortissante)
* Liberian-flagged (ac) : (Naut.) à pavillon libérien, sous pavillon libérien - Liberian-flagged cargo ship : cargo battant pavillon libérien
* liberty (n) (pl. liberties) : liberté (f) (syn. freedom) - civil liberties : libertés civiques
* librarian (n) (fa) : bibliothécaire (m/f)
* librarianship (n) : poste de bibliothécaire
* library (n) (pl. libraries) (fa) : bibliothèque (f) - a library’s holdings : le fonds d’une bibliothèque - circulating library : bibliothèque de prêt - cuttings library : (Presse) bureau recensant les coupures de presse - film library : cinémathèque (f) - media library : médiathèque (f) - library science : bibliothéconomie (f)
* licence (brit.) / license (amér.) (n) 1/ licence (f), liberté (f) - artistic licence : licence artistique, liberté artistique ; 3/ (fa) : permis - driving licence : permis de conduire - trading licence : patente (f)
* license (v) (tr.) : accorder une licence à - to license a technology : donner une licence d’exploitation pour une technique - to be licensed : avoir une licence (de fabrication, d’utilisation)
* licensee (n) : titulaire d’une licence (de fabrication, d’utilisation)
* licensing (n) : - to establish licensing operations : établir des unités de production sous licence
* licentious (a) : licencieux/-euse
* licentiousness (n) : licence (f) (des mœurs)
* lick (n) : 1/ (fam.) un peu de - not a lick (of sth) : pas la moindre once (de qch) ; 2/ pierre à lécher ; 3/ (Boxe) (fam.) coup
* lick (v) (tr.) : 1/ lécher ; 2/ (fig.) mettre une raclée à, battre à plates coutures
* licker (n) : lécheur - boot licker : lèche-botte (masc.) - butt licker (vulg.) : lèche-cul (masc.) (vulg.)
* lick up (v) (tr.) : laper
* lick-up (n) : - to have a lick-up : lécher son assiette
* lid (n) : 1/ couvercle ; 2/ (abr. de eyelid) paupière (f)
* lie (n) (fa) : mensonge - to spread lies : répandre des mensonges - demonstrable lie : mensonge patent - reassuring lie : mensonge réconfortant - transparent lie : mensonge évident - white lie : petit mensonge, mensonge sans conséquence - lie detector : détecteur de mensonge, polygraphe - to give the lie to sth : démentir qch
* lie (v) (régulier, lied) : mentir
* lie (v) (lay, lain) (intr.) : être étendu(e), gésir - to lie still : être étendu immobile
* lie down (v) (lay, lain) (intr.) : se coucher, s’allonger, s’étendre - When you lie down with dogs, you get up with fleas : Qui dort avec les chiens, se lève avec des puces - He wasn’t going to take it lying down (expr.) : Il n’allait pas prendre cela sans réagir / sans rien dire
* lie-down (n) : sieste (f) - to have a lie-down : s’allonger (pour faire la sieste), faire la sieste
* life (n) (pl. lives) : 1/ (la) vie, (l’)existence (f) - life after death : la vie après la mort - way of life : mode de vie - a hellish life : l’enfer sur Terre - life cycle : cycle de vie - (a) life form : (une) forme de vie ; 2/ vie (d’une personne) - to threaten lives : mettre des vies (humaines) en danger - to take sb’s life : prendre la vie de qn ; 3/ durée de vie - design life : durée de vie théorique, durée de vie de calcul, durée de vie objective - shelf life : durée de conservation sur étagère ; 4/ organismes (vivants) (pl.) - plant life : organismes végétaux
* life blood / lifeblood (n) : 1/ élément vital, forces vives (f pl.), pierre angulaire (f), pierre d’angle, moteur - Scientific research is the life blood of our civilization : La recherches scientifique est la pierre d’angle de notre civilisation ; 2/ (Litt.) vie (f)
* lifeboat (n) : canot de sauvetage - lifeboat coxswain : timonier de canot de sauvetage
* lifebuoy (n) : bouée (f)
* life-changing (ac) : qui change la vie, qui a changé la vie (de qn), qui est un tournant dans l’existence (de qn)
* lifeguard (n) : sauveteur, surveillant de baignade - lifeguard tower : poste de sauvetage, guérite de sauveteur
* lifejacket (n) : brassière de sauvetage
* lifeless (a) : inanimé(e), sans vie
* liferaft (n) : radeau de sauvetage
* life-size(d) (ac) : (de) grandeur nature, en grand
* life style / lifestyle (n) : 1/ style de vie, mode de vie, vie (f) - to lead a healthy lifestyle : mener une vie saine - lifestyle change : changement de style de vie ; 2/ the lifestyle! : la belle vie !
* life style / lifestyle-oriented (ac) : de loisir - lifestyle-oriented bicycle : bicyclette de loisir
* life-threatening (ac) : [illness, maladie] qui peut entraîner la mort (anton. non life-threatening)
* lift (n) : 1/ (Av.) portance (f) ; 2/ intonation aigüe (f) - the lift in his voice ; 3/ ascenseur - goods lift (brit.) : monte-charge (masc.) (syn. amér. goods elevator ou freight elevator) - lift shaft : cage d’ascenseur ; 3/ (brit.) - to thumb a lift : faire de l’auto-stop, faire du stop (fam.), faire du pouce (Q)
* lift (v) (tr.) : 1/ élever ; 2/ se saisir de, soulever ; 3/ (Av.) porter ; 4/ voler (an idea, etc., une idée) (from, à)
* lifter (n) : 1/ appareil de levage, cric de levage ; 2/ (abr. de shoplifter) voleur à l’étalage ; 3/ (abr. de power lifter) haltérophile
* lifting (n) : levage - power lifting : dynamophilie (f) - weight lifting : haltérophilie (f) - lifting bag : coussin de levage
* lift off (v) (tr.) : soulever
* lifton-liftoff (n double) : chargement-déchargement - lifton-liftoff machine : engin de chargement-déchargement
* lift up (v) : (tr.) élever - to lift up one’s voice : élever la voix ; (intr.) s’élever
* lig (v) (intr.) : entrer sans payer
* light (a) : clair(e)
* light (a) : 1/ léger/-ère - light aircraft : petits avions (pl.) ; 2/ allégé(e)
* light (adv.) : 1/ avec peu de bagages - to travel light : voyager avec peu de bagages
* light (n) : 1/ lumière (f) - dark light : lumière sombre - dim light : lumière diffuse - natural light : lumière du jour, lumière naturelle - pale light : lumière pale - white light : lumière blanche - the speed of light : la vitesse de la lumière - It doesn’t hold up to the light of day : Ça ne tient pas la route - light pen : (Inf.) crayon optique, crayon lumineux, photostyle ; 2/ feu - reversing lights : feux de marche arrière, feux de recul ; 3/ lampe, luminaire - arc light : lampe à arc - ceiling light : plafonnier - street light : lampadaire
* light (v) (lit, lit) (tr.) : allumer, éclairer
* lighten (v) : 1/ (tr.) éclaire, illuminer ; (intr.) s’éclairer, s’illuminer ; 2/ (tr.) éclaircir ; (intr.) s’éclaircir
* lighten (v) : (tr.) alléger ; (intr.) s’alléger
* lighten up (v) (tr.) : éclairer, illuminer, égayer - to lighten up sb’s day : égayer la journée de qn
* lighten up (v) : (tr.) relativiser ; (intr.) se détendre
* lighter (n) : briquet - cigarette lighter : allume-cigarette (masc.), allume-cigare (masc.)
* light-hearted (a) : 1/ enjoué(e) ; 2/ léger/-ère, badin(e)
* lighting (n) : éclairage - gas lighting : éclairage au gaz - lighting director (Cin.) : chef de l'éclairage
* lightly (adv.) : 1/ légèrement, faiblement - lightly laden horses : chevaux faiblement chargés ; 2/ d’un ton léger, à la légère - to take sth lightly : prendre qch à la légère
* lightning (n) : foudre (f) - ball lightning : (la) foudre en boule - lightning rod : paratonnerre
* lightpen (n) : (Inf.) crayon optique, photostyle
* light-transducing (a) : qui convertit la lumière - light-transducing abilities : aptitude à convertir la lumière
* lightweight (a) : ultraléger/-ère
* like (prép.) : comme, à l'instar de
* like (interj.) : 1/ (= as if) comme si - Like that thought never entered my mind! : Comme si cette pensée ne m’avait jamais effleuré l’esprit ! ; 2/ (arg. amér.) environ, à peu près - It is like five miles from here : C’est à environ 8 km d’ici ; 3/ (arg. amér.) du genre - He was, like, "I don’t want to do that" : Il était du genre « Je ne veux pas faire ça »
* like (v) (tr.) : aimer, aimer bien - I like the swing in the chorus : J’aime bien l’air entraînant du refrain - I don’t like cats : Je n’aime pas les chats - I like having bangs : J’aime avoir une frange - I'd like to see them in concert : J’aimerais bien les voir en concert - How would you like to be in charge of the Export Department ? : Ça te/vous dirait d’être à la tête du département Exportations ?
* like (n) (pl. likes) : (Toile) « j’aime », « aime » (anton. dislike, pl. dislikes : « je n’aime pas, « aime pas ») - a high number of likes : un grand nombre de « aime » - the like-dislike ratio : la proportion entre « aime » et « aime pas »
* like (a) : semblable, pareil(le)
* likeable (a) : aimable, agréable, sympathique - to be likeable : inspirer de la sympathie
* like button (the) (n) : (le) bouton « j’aime » (anton. (the) dislike button : (le) bouton « je n’aime pas »)
* liken (v) (tr.) : comparer (to, à), assimiler (to, à)
* likelihood (n) : probabilité (f) - in all likelihood : en toute probabilité
* likely (a) : susceptible - to be likely to + inf. (forme verbale à sens modal) : être susceptible de + inf., risquer de + inf., avoir des chances de + inf. - to look likely to + inf. : paraître susceptible de + inf., paraître avoir des chances de + inf. - It’s not likely to happen : ÇCa ne risque pas de se produire
* likely (adv.) (amér.) : probablement
* likewise (adv.) (m d l) : également, pareillement
* lilt (n) : 1/ chant court et bien rythmé ; 2/ cadence (f), rythme (in song, dans une chanson, of voice, de la voix)
* lilt (v) (intr.) : chanter harmonieusement, chanter gaiement, chanter en accentuant le rythme
* lily (n) (pl. lilies) : lys, lis - lily pad : feuille de nénuphar (f), feuille de nymphéa (f)
* limb (n) : membre (bras, jambe)
* limbo (n) : limbes (m pl.) - to retrieve sth from limbo : arracher qch aux limbes / à l’oubli - in limbo : dans l’expectative
* lime (n) (fa) : 1/ citron vert ; 2/ chaux (f) - quick lime : chaux vive - lime quarry : carrière à chaux, carrière de pierre à chaux
* limelight (n) : lumière oxhydrique (f) - in the limelight : sous les feux de la rampe
* limestone (n) : calcaire (n) - the limestone pavement : (Géol.) le socle calcaire
* limey (a) : angliche (péj.)
* limey (n) (amér.) (arg.) : 1/ marin anglais, matelot anglais ; 2/ Angliche (péj.), Rosbif (péj.)
* limit (n) : limite (f)
* limit (v) (tr.) : 1/ limiter ; 2/ réduire, restreindre
* limitation (n) : 1/ limitation (f) - damage limitation : limitation des dégâts ; 2/ restriction (f) - burdensome limitation : restriction pesante
* limited (ppa) : 1/ limité(e) - a limited run (of cars) : une série limitée (de voitures) ; 2/ réduit(e) - limited availability : disponibilité réduite (f) - limited partner : commanditaire (n)
* limo (n) (abr. de limousine) : limousine (f) - limo driver : chauffeur de limousine
* limp (a) : flasque
* limp (n) : claudication (f)
* limp (v) (intr.) : boîter, claudiquer
* limpet (n) : 1/ patelle (f), chapeau chinois ; 2/ (fig.) personne collante (f), sangsue (f)
* line (n) : 1/ ligne (f), trait - line shadings : ombrages au trait ; 2/ (Mus.) ligne - the bass line : la ligne de basse - the organ line : la ligne d'orgue ; 3/ alignement ; 4/ ligne (de téléphone) - Hold the line! : Ne quittez pas ! - telephone line : ligne téléphonique ; 5/ ligne, chaîne (f) (de fabrication, d'assemblage) - assembly line : ligne de montage, chaîne de montage - manufacturing line : ligne de fabrication, chaîne de production ; 6/ corde (f) (à linge) - washing line : corde à linge (syn. clothes line) ; 7/ conduite (f) - fuel lines (Aéro.) : conduites de carburant ; 8/ (amér.) file d’attente, queue (f) - to get in line : faire la queue - to cut in line : passer devant les autres (dans une queue), resquiller (dans une queue) (syn. brit. to jump the queue) - picket line : piquet de grève ; 9/ (Poésie) vers ; 10/ (Théât.) réplique (f) ; 11/ limite (f), démarcation (f) - We must draw the line somewhere : Il y a une limite à tout - I draw the line at that : Je n’admets pas qu’on aille jusque là - to draw the line at + gér. : refuser de + inf. ; 12/ seuil - the poverty line : le seuil de pauvreté
* lineal (a) : en ligne directe - lineal descendant : descendant en ligne directe
* linear (a) : linéaire - linear equation : (Math.) équation linéaire (f)
* linen (n) : 1/ linge - bathroom linen : linge de toilette - household linen : linge de maison ; 2/ (en mod.) lin - linen jacket : veste en lin
* line-in (nc) : canal d’entrée
* line-out (nc) : canal de sortie - line-out port : prise du canal de sortie
* liner (n) : revêtement intérieur, doublure (f) - bin liner (brit.) : sac poubelle (masc.)
* liner (n) : 1/ paquebot de ligne - costal liner : paquebot côtier - cruise liner : navire de croisière - ocean liner : paquebot - transatlantic liner : paquebot transatlantique - transpacific liner : paquebot transpacifique ; 2/ avion de ligne - air liner : avion de ligne
* line-replaceable (ac) : (Av.) [pièce] remplaçable en escale
* line-up / lineup (n) : 1/ alignement, rangée (f), rang ; 2/ queue (f) ; 3/ liste d’attente ; 4/ ordre de passage ; 5/ (Police) séance d’identification, tapissage (fam.) ; 6/ (Mus.) programmation (f) ; 7/ (Sport) a/ composition d’une équipe ; b/ liste de joueurs sélectionnés
* line up (v) : 1/ (tr.) mettre en rang (des élèves) ; 2/ (tr.) aligner (with sth, avec qch) ; (intr.) s’aligner, se mettre en ligne ; 3/ (intr.) faire la queue ; 4/ (tr.) prévoir, organiser - I’ve lined up a lot of activities for us this week : J’ai prévu un tas d’activités pour nous cette semaine
* linger (v) (intr.) : s’attarder, traîner
* lingering (a) : qui traîne, attardé(e)
* lingo (n) : 1/ (fam.) langue (f) (d’un pays, d’une époque) - the linguo of the time : la langue de l’époque - I don’t speak the local linguo : Je ne parle pas la langue du pays ; 2/ jargon (d’un métier) - That’s linguo : C’est du jargon - in legal lingo : en langage juridique - in military linguo : en jargon militaire - our modern tech lingo : notre jargon technique moderne
* lingua franca (n) (Lat .) : lingua franca, langue véhiculaire (f) - English as a lingua franca : (l’)anglais comme langue véhiculaire
* linguicide (n) : linguicide
* linguist (n) : linguiste (m/f)
* linguistic (a) : linguistique - linguistic diversity : diversité linguistique - linguistic theory : théorie linguistique
* linguistics (n) (sing.) : (la) linguistique - applied linguistics : linguistique appliquée - theoretical linguistics : linguistique théorique
* lining (n) : revêtement, doublure (f)
* link (n) : 1/ lien ; 2/ (Toile) - back link : lien retour - broken link : lien brisé - inbound link : lien entrant - shareable link : lien partageable - link rot : pourrissement des liens ; 3/ liaison (f)
* link (v) (tr.) : (tr.) lier (to, à) ; (intr.) se connecter (to, à), se brancher (on, sur)
* linkable (a) : reliable
* linkage (n) : liaisonnement, liens (pl.)
* linker (n) : (Inf.) éditeur de liens, lieur
* linseed (n) : 1/ graine de lin - linseed cake : tourteau de graines de lin ; 2/ lin - linseed oil : huile de lin
* lint (n) : 1/ coton égrainé ; 2/ peluches (f pl.) ; 3/ charpie (f)
* lint (v) (tr.) : déplucher - to lint one's dress : déplucher sa robe
* lintel (n) : (Bât.) linteau
* lint-free (ac) : non pelucheux/-euse
* lion (n) : lion - cave lion : lion des cavernes - mountain lion : lion des montagnes, puma - lion cub : lionceau
* lioness (n) : lionne (f)
* lionfish (n) : poisson-lion
* lionisation (brit.) / lionization (amér.) (n) : idolâtrie (f), adulation (f), célébration (f) (d’une personne célèbre)
* lionise (brit.) / lionize (amé.) (v) (tr.) : idolâtrer, aduler, célébrer, encenser, porter aux nues (qn de célèbre)
* lip (n) : 1/ lèvre (f) - lip service : belles paroles, beaux dicours - to be just lip service : n’être que des discours lénifiants ; 2/ bord (of a cup, etc., d'une tasse, etc.)
* lipoma (n) : lipome
* lip sing (vc) (intr.) : chanter en différé
* lipstick (n) : rouge à lèvres - lipstick camera : caméra-crayon (f), mini-caméra (f)
* lip sync (n) : synchronisation des lèvres - lip sync delay : non synchronisation lors du doublage
* lip sync (vc) : (intr.) mimer les paroles, chanter en différé - to lip sync to a song : mimer les paroles d'une chanson, chanter une chanson en différé
* liquefied (ppa) : liquéfié(e) - liquefied natural gas : gaz naturel liquéfié
* liquefy (v) (tr.) : liquéfier
* liqueur (n) : liqueur (f)
* liquid (a) : liquide - liquid oxygen : oxygène liquide
* liquidity (n) : liquidité (f), convertibilité en espèces - liquidity crisis : crise de trésorerie
* liquor (n) (fa) : boisson alcoolisée (f), alcool - intoxicating liquor : boisson très alcoolisée - liquor cabinet : bar domestique - liquor mart (amér.) : magasin d’alcools
* lisp (n) : zézaiement, zozotement (fam.) - to have a lisp : zézayer, zozoter (fam.)
* lisp (v) (intr.) : zézayer, zozoter (fam.)
* list (n) : 1/ liste (f) - The next up on the list is… : Le suivant sur la liste est… - bucket list : liste de choses à faire avant de mourir - illustrated parts list : liste de composants illustrée - laundry list : a/ liste de blanchisserie ; b/ (fig.) longue liste, liste interminable - mailing list : (Inf.) liste de publipostage, liste de diffusion - shopping list : liste d’emplettes - sortable list : liste permettant le tri - waiting list : liste d’attente - word list : a/ liste de mots ; b/ vocabulaire - list prices : prix du catalogue, prix de base (susceptibles d’être diminués selon la quantité, les délais de paiement, etc.) ; 2/ bande (Naut.)
* list (v) : 1/ (tr.) faire la liste de - to list sth as one’s top priority : mettre qch en tête de ses préoccupations - to be listed in the electronic directory : figurer dans l’annuaire électronique ; 2/ (tr.) coter en bourse - to be listed on the stock exchange : être coté en Bourse ; 3/ (intr.) (Naut.) donner de la bande
* listed (ppa) : 1/ coté (en Bourse) - listed securities : valeurs cotées (f pl.) ; 2/ (brit.) inscrit(e) - listed site : site inscrit
* listen (v) : (tr.) écouter ; (intr.) to listen for sth : repérer qch à l’ouïe
* listener (n) : auditeur/-trice - radio listener : auditeur/-trice (de radio) - poor listener : élève qui n’écoute pas
* listenership (n) : auditeurs (pl.) d’une station de radio)
* listening (n) : (l’)écoute (f) - listening post : poste d’écoute - listening device : dispositif d'écoute, appareil d'écoute
* listing (n) : 1/ admission à la cote officielle; 2/ (a listing) une cote
* listless (a) : apathique, indolent(e), amorphe
* listlessly (adv.) : avec apathie, mollement
* listlessness (n) : apathie (f), manque d’énergie
* lit (prét. de to light)
* lit (pp de to light)
* lit (n) (tronc. de literature) : littérature (f), écrits (pl.) - alt lit (= alternative literature) : littérature publiée à compte d’auteur, littérature mise en ligne sur les réseaux sociaux
* literacy (n) : aptitude à écrire et à lire, degré d’instruction - literacy classes : cours d’alphabétsation - literacy rate : taux d’alphabétisation
* literal (a) : littéral(e) - literal translation : traduction littérale
* literary (a) : littéraire - female literary writer : femme de lettres
* literature (n) : 1/ littérature (f) ; 2/ écrits (pl.) - hate literature : écrits haineux (pl.), écrits incitant à la haine, propagande haineuse (f) ; 3/ (Indust.) documentation (f) - the manufacturer’s literature : la documentation du fabricant - literature search : recherche documentaire
* liter (amér.) / litre (brit.) (n) : litre
* lithe (a) : agile, souple
* Lithuania (n pr.) : (la) Lituanie (noter la diff. ortho.)
* Lithuanian (a) : lituanien(ne)
* Lithuanian (n pr.) : Lituanien (le ressortissant), Lithuanienne (la ressortissante)
* litigious (a) (fa) : [individu] procédurier/-ière, qui aime faire des procès, quérulent(e) (Q)
* litter (n) (fa p) : 1/ litière (f) (pour animaux domestiques) ; 2/ détritus (pl.), déchets (pl.) ; 3/ portée (f) (d’un animal)
* litter (v) (tr.) : joncher (with, de)
* live (a) : 1/ vivant(e) ; 2/ réel(le) - live ammo : munitions réelles (f pl.), balles réelles (f pl.), vraies balles (f pl.) - live exercise : exercice réel - live fire : tir à balles réelles, balles réelles (f pl.) ; 3/ [arme à feu] chargé(e) - live gun : arme chargée (f) ; 4/ (Élect.) sous tension, électrisé(e) - live wire : a/ fil (électrique) sous tension, fil électrisé ; b/ (fig.) personne qui déborde d’énergie, boule d’énergie ; 5/ [concert] transmis en direct, [chanteur] chantant en direct, [album] enregistré sur scène - live broadcast : émission en direct - live music : musique non enregistrée
* live (adv.) : en direct, sur scène - to play live : jouer en direct
* live (v) : 1/ (tr. et intr.) vivre - to live below the poverty line : vivre en dessous du seuil de pauvreté - to live grandly : mener grand train, vivre sur un grand pied - to live on the fringes of society : vivre en marge de la société ; 2/ (tr. et intr.) habiter - to live on campus : habiter sur le campus - to live off campus : habiter en ville
* livecam (n) (contr. de live camera, litt. « caméra filmant en direct ») : caméra en direct, camirette (Q)
* live down (v) (tr.) : laisser au temps le soin d’effacer (un chagrin) / de faire oublier (un scandale)
* live-in (ac) : à domicile, résident(e) - live-in maid : domestique (fém.) - live-in nurse : garde-malade, infirmière à demeure (f)
* livelihood (n) : gagne-pain, moyens de subsistance (pl.)
* liven (v) : (tr.) animer (une soirée), activer - to liven one’s text with clip art : égayer son texte avec des images prêtes à l’emploi ; (intr.) s’animer, s’activer
* liven up (v) : (tr.) animer, activer - to live it up : faire la fête, s’éclater (fig.) ; (intr.) s’animer, s’activer
* live off (v) (tr.) (non sécable) : - to live off sb : vivre aux crochets de qn - I have lived off several men : J’ai été entretenue par plusieurs hommes
* liver (n) : foie - liver failure : insuffisance hépatique (f)
* Liverpudlian (a) : liverpudlien(ne), de Liverpool
* Liverpudlian (n pr.) : Liverpudlien, Liverpudlienne, habitant de Liverpool, habitante de Liverpool
* livestock (n) : bétail
* livestream / live stream (v) (tr.) : diffuser (une vidéo) en direct
* live up (v) (tr.) : - to live it up : s’amuser follemnt, s’éclater
* liveware (n ind. sing.) : ressources humaines (f pl.), ressources vives (f pl.), personnel informatique (sing.)
* livid (a) (fa p) : 1/ livide ; 2/ furieux/-euse
* living (a) : vivant(e) - living language : langue vivante (f)
* living (n) : mode de vie - desert-wise living : mode de vie adapté au désert
* lizard (n) : lézard
* LMAO (jarg. Web) (init. de laughing my ass off, suis tordu de rire, suis mort de rire, c’est à se taper le cul par terre (vulg.))
* lo (interj.) (littéraire) : regardez ! - lo and behold : a/ ô surprise, surprise , b/ et voilà que… - And lo and behold, her wish was granted : et ô surprise, voilà que son vœu est exaucé
* lo! (interj.) (jarg. Web) (tronc. de hello! : Salut !)
* loach (n) : loche (f)
* load (n) : charge (f) - a load off my shoulders : une charge en moins, une affaire réglée - a load on my shouders : une charge en plus, une affaire sur les bras
* load (v) : (tr.) charger ; (intr.) se charger
* load-absorbing (ac) : encaissant une charge
* loader (n) : chargeur - bucket loader : chargeur à godets - front loader : chargeur frontal (syn. front-end loader) - wheel loader : chargeur sur roues, chargeur sur pneus
* loading (n) : chargement (l’action)
* load/unload (v double) (tr.) : charger-décharger - load/unload station : poste de chargement-déchargement
* loaf (n) : 1/ miche de pain (f), pain ; 2/ - Use your loaf (brit.) : Utilise ta cervelle, Réfléchis un peu (syn. arg. brit. Use your bonce, Use your noodle)
* loam (n) : terreau
* loan (n) : emprunt, prêt - to take out a loan : faire un emprunt - to get a loan : obtenir un prêt
* loan word / loanword (n) : (Ling.) emprunt (au sens de terme emprunté)
* loath (a) (lit.) : peu disposé(e) (to do sth, à faire qch)
* loathe (v) (tr.) : détester
* loathly (a) : détestable
* loathsome (a) : détestable
* lob (v) (tr.) : lancer lentement, balancer (fam.) - to lob a few shells into a country : balancer quelques obus sur un pays
* lobby (n) (pl. lobbies) : 1/ vestibule - lobby card (amér.) : photo d’exploitation, photo de film ; 2/ groupe de pression, groupe d’intérêt particulier, groupe d’intérêt - the Green lobby : le groupe de pression des Verts
* lobotomise (brit.) / lobotomize (amér.) (v) (tr.) : lobotomiser
* local (a) : du lieu, des lieux, local, proche - local dustup : querelle de clocher - the local language : la langue du cru - local lore : (la) tradition locale - local news : (les) nouvelles locales (f pl.), (l’)actualité locale (f) - local newscast : bulletin d'informations locales
* local (n) (fa) : 1/ personne du pays, indigène - locals : gens du cru ; 2/ (the local) pub du coin (en G.-B.) ; 3/ (the local) cinéma de quartier
* localise (brit.) / localize (amér.) (v) (tr.) : adapter (un logiciel) aux exigences particulières d’un pays
* locally (adv.) : localement
* locally developed (ac) : mis(e) au point sur place, mis(e) au point dans le pays
* locally grown (ac) : cultivé(e) dans la région, produit(e) sur place - locally grown food : produits alimentaires locaux
* locally produced (ac) : produit(e) sur place, de production locale - locally produced electricity : électricité de production locale
* locate (v) (tr.) : 1/ placer, positionner ; 2/ implanter ; 3/ situer, localiser - to be located : être situé(e), se situer
* location (n) (fa) : 1/ emplacement, endroit, point, site - bug-out location : retraite de survie - damp location : endroit humide - screw locations : emplacement des vis - location code : code géographique ; 2/ décor naturel, extérieurs (pl.) - shot on location : tourné en extérieurs - This scene was shot on location : Cette scène a été tournée en extérieurs (anton. in the studio : en studio)
* location-aware (ac) : (Inf.) réagissant en fonction de l’emplacement, sensible à l’emplacement
* lock (n) : 1/ boucle (f) ; 2/ serrure (f) - door lock : serrure de porte ; 3/ écluse (f) ; 4/ blocage - wheel lock : blocage des roues
* lock (v) : 1/ (tr.) fermer à clé ; 2/ (tr.) verrouiller ; (intr.) se verrouiller ; 3/ (tr.) bloquer - This forum is locked : Ce forum est verrouillé ; (intr.) se bloquer
* lock away (v) (tr.) : 1/ enfermer (qch), cacher (qch), planquer (qch) (fam.) ; 2/ envoyer (qn) en prison, mettre (qn) sous les vevrous, coffrer (qn) (fam.) ; 3/ faire enfermer (qn) - I don’t want to be locked away, I’m not mental : Je ne veux pas qu’on m’enferme, je ne suis pas maboul
* lockdown (n) : 1/ bouclage, blocage ; 2/ isolement cellulaire ; 3/ confinement - [area] to be under lockdown : [zone] être en confinement - lockdown dodger : réfractaire au confinement - strict lockdown rules : règles de confinement strictes (f. pl.); 4/ (Inf.) verrouillage (de données, de terminaux)
* locker (n) : casier (d’un élève)
* lockjaw (n) (fam.) : trisme, tétanos
* lock out (v) (tr.) : interdire d’accès, verrouiller
* lock-out (n) : grève patronale (f)
* lock up (v) : (tr.) enfermer à clé ; (intr.) se verrouiller
* locust (n) : criquet, sauterelle (f)
* lodger (n) (fa) : locataire (d'une chambre), pensionnaire (syn. amér. roomer)
* lofty (a) : hautain(e)
* log (n) : rondin, bûche (f) - log burner : poêle à bois - log cabin : cabane en rondins - log splitter : (la machine) fendeuse de bûches
* log (n) : journal de bord, registre
* log (v) (logged2) (tr.) : 1/ consigner, noter (dans un livre de bord, un journal de voyage) ; 2/ enregistrer, avoir à son actif - to log a total of 200,000 flying hours : avoir à son actif un total de 200 000 heures de vol, totaliser 200 000 heures de vol
* logbook (n) : livre de bord
* logger (n) (amér.) : bûcheron, exploitant forestier - illegal logger : exploitant forestier clandestin
* logging (n) : abattage (d'arbres), exploitation de la forêt (f) - illegal logging : abattage illégal, abattage interdit
* logic (n) : 1/ (Inf. et Électron.) logique (n) (f) (a/ =ensemble des opérations de calcul logique effectuées par un ordinateur ; b/ = ensemble des circuits électroniques capables de réaliser des opérations de calcul logique) - hardwired logic : logique câblée - software logic : logique programmée ; 2/ logique, raisonnements (pl.) - to apply logic : faire appel à la logique, être logique - according to his/her tortured logic : selon ses raisonnements aberrants
* logically (adv.) : logiquement - Logically enough, … (a m p) (t d p) : En toute logique, …
* logistics (n) : (sing.) (la) logistique - reverse logistics : (la) logistique à rebours, (la) logistique des retours (de produits), (la) gestion des retours (de produits) (syn. recovery logistics)
* logjam (n) : 1/ embâcle (masc.) ; 2/ (amér.) (fig.) impasse (f)
* logo (n) (tronc. de logotype) : logo
* log on (v) (intr.) : se connecter - to log on as an administrator : se connecter en tant qu’administrateur
* logotype (n) : logotype (abré. logo)
* loin (n) : 1/ longe, filet - pork loin : filet de porc ; 2/ reins (pl.)
* loincloth (n) : pagne, cache-sexe (masc.)
* loiter (v) (intr.) : 1/ traîner, traînasser (péj.) (syn. to hang around) ; 2/ rôder ; 3/ flâner, musarder
* loitering (a) : - loitering munitions : munitions flottantes (f pl.)
* loitering (n) : flânerie (f), flânage (Q) - No loitering : Réservé à la clientèle, Interdiction de flâner (Q) - no-loitering sign : panneau « Réservé à la clientèle »
* loll (v) (intr.) : se prélasser
* lollop (v) (lolloped) (intr.) : traîner
* lolly (n) (brit.) : 1/ (ice lolly) glace à l’eau ; 2/ sucette (f) ; 3/ (arg.) fric, pognon - to be in the lolly : avoir plein de fric
* lo-lo (n double) (abr. de lifton-liftoff : chargement-déchargement)
* London (n pr.) : Londres - south London : Londres sud
* Londoner (n) : Londonien (l’habitant), Londonienne (l’habitante)
* lone (a) : solitaire, individuel(le) - lone wolf : loup solitaire
* loneliness (n) : solitude (f)
* lonely (a) : seul(e)
* lonesome (a) : solitaire
* lonesomeness (n) : solitude (f)
* long (a) : long(ue) - long dash : tiret long, tiret cadratin (syn. em dash)
* long (adv.) : 1/ longtemps ; 2/ depuis longtemps
* long (v) (intr.) : - to long to + inf. : rêver de + inf., brûler de + inf., brûler d’envie de + inf., être impatient de + inf.
* long-awaited (ac) : tant attendu(e) - long-awaited reform : réforme tant attendue (f)
* longboard (n) : (Glisse) (l’objet) planche longue (f)
* longboarding (n) : (Glisse) pratique de la planche longue
* long-defunct (ac) : 1/ mort depuis longtemps, disparu depuis longtemps ; 2/ (fig.) [projet] abandonné depuis longtemps, enterré depuis longtemps, mort et enterré depuis longtemps
* long-delayed (ac) : tant attendu(e), longtemps différé(e), qui accumule les retards - long-delayed agreement : accord tant attendu
* long-distance (ac) : à longue distance
* long-drawn out (ac) : prolongé(e)
* longer (a) : plus long/longue (en parlant de la taille ou du temps)
* longer (adv.) : plus longtemps - How much longer before he comes ? : Encore combien de temps avant qu’il vienne ?
* long-established (ac) : établi(e) de longue date - long-established tradition : tradition établie de longue date
* long-finned (ac) : à longues nageoires (anton. short-finned)
* long-forgotten (ac) : oublié(e) depuis longtemps
* longhand (n) : écriture normale (f), écriture courante - to write in longhand : écrire à la main (anton. shorthand : sténographie (f))
* longing (n) : envie (f), désir (syn. desire)
* long johns (n pl.) : caleçon long (sing.)
* long-known (ac) : connu(e) depuis longtemps, connu de longue date - long-known danger : danger connu de longue date
* long-life (ac) : à longue durée de vie, (de) longue durée, à vie, fiable - long-life O-ring seal : bague d’étanchéité de longue durée
* long-lived (n) : à longue durée de vie, (de)longue durée (anton. short-lived)
* long-overdue (ac) : qui se fait attendre depuis longtemps
* long-range (ac) : 1/ à long terme - long-range planning : planification à long terme ; 2/ (Aéro.) à long rayon d’action, long courrier - long-range bomber : bombardier à long rayon d’action
* long-running (ac) : long(ue), de longue date - long-running affair : liaison qui remonte à loin
* longship (n) : drakkar, bateau long viking - Viking longship : drakkar viking
* longshoreman (n) (amér.) : débardeur
* long-sighted (ac) : 1/ hypermétrope ; 2/ presbyte)
* long since (loc. adv.) : depuis longtemps - They are all long since dead : Ils sont tous morts depuis longtemps
* long-standing / longstanding (ac) : de longue date - long-standing problems : problems qui ne datent pas d’hier
* long-suffering (ac) : qui souffre depuis longtemps, qui a beaucoup souffert, qui souffre le calvaire, si durement éprouvé(e) - the long-suffering nation of Syria : la nation syrienne si durement éprouvée
* long-term (ac) : à long terme (anton. short-term) - long-term planning : planification à long terme
* long-track (ac) : sur piste longue - long-track speed skating : patinage de vitesse sur piste longue
* long-troubled (ac) : à l’histoire mouvementée, à l’histoire agitée, qui a connu des déboires - long-troubled project : projet à l’histoire mouvementée
* look (n) : 1/ regard, coup d’œil - a pointed look : un regard éloquent - Just take a look at that! : Regarde-moi / Regardez-moi ça ! - to take a closer look : y regarder de plus près ; 2/ aspect, apparence (f)
* look (v) (intr.) : 1/ - to look after sth : s'occuper de qch ; 2/ - to look for sth : chercher qch (qu’on a perdu), rechercher qch (qu’on n’a pas), attendre (from sb, de qn) - I’ve been looking for my pencil case all day : J’ai cherché ma trousse toute la journée - He has everything a woman can look for in a man : Il a tout ce qu’une femme recherche chez un homme - What I’m looking for from you is a guarantee : Ce que j’attends de vous, c’est une garantie ; 3/ - to look (intr.) to + inf. : chercher à + inf.
* look-alike / lookalike (n) (pl. look-alikes / lookalikes) : 1/ mot-sosie ; 2/ (Cin.) sosie
* look back (v) (intr.) : regarder en arrière - to look back to sth : jeter un regard rétrospectif sur qch
* look down (v) (intr.) : 1/ baisser les yeux ; 2/ - to look down on sth : dédaigner qch - to look down on sb : regarder qn de haut
* looker (n) (arg.) : (en parlant d’un femme) (un) canon - She was the best-looker around here : C’était la fille la plus canon du quartier
* look forward (v) (intr.) : attendre avec impatience (to + subst. ou gér.)
* look out (v) (intr.) : - Look out! : Attention !
* lookout (n) : vigie (f)
* look over (v) (tr.) : étudier en détail
* look up (v) : 1/ (tr.) chercher (un mot, une adresse, dans une liste) ; (intr.) - to look up into a face : scruter un visage ; 2/ (intr.) aller mieux, s’améliorer - Things are looking up! : Les choses s’arrangent !
* loom (n) : métier à tisser
* loom (v) (intr.) : se dessiner, apparaître dans le lointain, surgir - to loom large : occuper une place prépondérante
* loom (up) (v) (intr.) : apparaître indistinctement, surgir
* loon (n) : barjot, dingue, fada
* loony (a) : dingue, foldingue, cinglé(e), maboul(e), toqué(e), siphonné(e), fada
* loony (n) (pl. loonies) : dingue (n), cinglé (n), fada (n)
* loop (n) (fa) : 1/ boucle (décrite) (f) - to be in the loop : être au courant, être informé - Keep me in the loop : Tiens-moi au courant / Tenez-moi au courant; 2/ (Inf.) boucle (d’itération)
* loophole (n) : point faible (dans un règlement), faille (f) (dans une réglementation)
* loose (a) : 1/ mal assujetti(e), non assujetti(e), détaché(e), délié(e), lâche, détendu(e), déserré(e) - loose end : a/ bout non attaché ; b/ (fig.) détail à régler, question en suspens ; 2/ [vêtement] flottant(e), ample - loose clothing : des vêtements amples ; 3/ (locutions) - to be at a loose end / at loose ends : ne pas trop savoir quoi faire, être un peu perdu, être un peu paumé
* loosely (adv.) : 1/ sans serrer, sans être trop moulant ; 2/ approximativement, plus ou moins, vaguement ; 3/ de façon très libre
* loosen (v) : 1/ (tr.) délier, donner du jeu à, desserrer - to loosen the purse strings : désserrer les cordons de la bourse ; (intr.) se délier, prendre du jeu, se desserrer ; 2/ (tr.) dérider, détendre ; (intr.) se dérider, se détendre
* loosen up (v) (intr.) : se dérider, se détendre
* loot (n) : 1/ butin ; 2/ fric, pognon
* loot (v) (tr.) : piller - to loot shops : piller des magasins
* looting (n) : pillage
* lop (off) (v) (tr.) : couper
* lop-sided (a) : de travers
* loquacious (a) : loquace, volubile
* lord (n) : seigneur - our Lord : notre Seigneur
* lordship (n) : 1/ seigneurie ; 2/ Your/His Lorship : (à un noble) Monsieur le Marquis, Monsieur le Baron ; (à un juge) Monsieur le juge ; (à un évêque) (Son) Excellence
* lore (n) : tradition (f) - local lore : (la) tradition locale
* lorgnette (n) (fa) : face-à-main
* lorry (n) (pl. lorries) : camion - articulated lorry : semi-remorque
* lose (v) (lost, lost) : 1/ (tr.) perdre - to lose a battle : perdre une bataille - to lose confidence in sb : ne plus avoir confiance en qn (syn. to lose faith in sb) - to lose money : perdre de l’argent - to lose one's appeal : perdre de son attrait - to lose one’s citizenship : perdre sa citoyenneté ; (intr.) perdre - What have I got to lose? : Qu’est-ce que j’ai à perdre ? ; 2/ (expressions) - to lose one’s footing : perdre pied - to lose one’s temper : se mettre en colère - to lose the day : perdre la bataille - to lose touch with… : perdre le contact avec… - to lose track of… : perdre la notion de…
* lose-lose (ac) : où tout le monde est perdant, désavantageux/-euse pour toutes les parties concernées, perdant-perdant - lose-lose situation : situation où il n’y a que des perdants, état de choses qui ne profite à personnes (anton. win-win : où il n’y a que des gagnants, qui profite à tout le monde, gagnant-gagnant)
* lose-lose (n) : situation où il n’y a que des perdants - It’s a lose-lose : Tout le monde y perd
* loser (n) : perdant (n) - sore loser : mauvais perdant
* loser-friendly (ac) : (jeu de mots avec user-friendly) pour les nuls
* loss (n) (pl. losses) : perte - It’s your loss! : C’est vous qui y perdez - to be at a loss for words : être à court de mots - to make up for a loss : compenser une perte - to run at an operating loss of… : essuyer des pertes d’exploitation de l’ordre de…- loss of face : (fait de) perdre la face, humiliation - data loss (Inf.) : perte de données - hearing loss : perte auditive - power loss : perte de puissance (d’un moteur) - pressure loss : perte de pression ; 2/ disparition - job losses : emplois perdus, disparitions d’emplois
* lost (prét. de to lose)
* lost (pp de to lose) : - to be lost for words : ne plus trouver ses mots, ne savoir que dire, être à court de mots - I’m lost for words : les mots me manquent
* (the) lost and found (adj. subst. pl.) : les) objets trouvés - to check with the lost and found : demander aux objets trouvés - to take sth to the lost and found : porter qch aux objets trouvés
* lot (n) (fa p) : 1/ condition (f), sort - to be satisfied with one’s lot : être satisfait de son sort (on dit aussi « son lot » dans ce sens) - grim lot : triste condition ; 2/ s'emploie pour « beaucoup de » (a lot of ) et « des tas de » (lots of) ; 3/ (a lot) (fam.) groupe (de gens) - a tech-centric lot : un groupe féru de technologie ; 4/ (a lot) (péj.) personne de peu de valeur - He is a bad lot : Il ne vaut pas cher - They are a bad lot : Ils ne valent pas cher
* lotta (amér.) (contr. de lot of) : a lotta people : un tas de gens, une floppée de gens
* loud (a) : bruyant(e)
* loud (adv.) : bruyamment
* loud hailer / loudhailer (n) (brit.) : porte-voix, mégaphone
* loudly (adv.) : bruyamment - to loudly proclaim : clamer haut et fort
* loud-mouthed (ac) : fort(e) en gueule, qui a le verbe haut, braillard(e)
* loudness (n) : bruit fort, caractère bruyant
* loudspeaker (n) : haut-parleur
* lough (n) : bras de mer
* lounge (n) : salon - onboard lounge : salon de bord (dans un avion de ligne) - lounge music : musique de salon (jouée dans les hôtels et les casinos) - lounge singer : chanteur/chanteuse de cabaret - lounge suit : complet-veston
* lounge (v) (intr.) : paresser (syn. idle)
* louse (n) (pl. lice) : pou (pl. poux)
* lousy (fam.) (a) : 1/ pouilleux/-euse, qui a des poux - to be lousy with sth : grouiller de qch - The place was lousy with people : L’endroit grouillait d’Anglais - to be lousy with money : être pourri d’argent ; 2/ infect(e), pourri(e) ; 3/ minable, nul(le)
* lout (n) : rustre
* louver (amér.) / louvre (brit.) (n) (fa) : jalousie (f), persienne (f)
* love (n) : 1/ amour (le sentiment) - to be madly in love : être follement amoureux (with sb, de qn), être fou amoureux (with sb, de qn) - to fall in love : s’éprendre (with sb, de qn) - to make love : faire l’amour - love at first sight : coup de foudre - puppy love : premier amour - love handles : poignées d’amour, petits bourrelets - love seat : causeuse (f), canapé biplace - love story : histoire d'amour, idylle (f), romance (f) ; 2/ amour (la personne) - Oh, there’s a little love! : Ah, en voilà un amour de petit garçon / petite fille ! (selon le cas)
* lovebird (n) : 1/ (Ornith.) inséparable (n) ; 2/ (fig.) tourtereau - They are like a pair of lovebirds : On dirait des tourtereaux
* lovelock (n) : accroche-cœur (syn. brit. kiss curl)
* love-lucky (ac) : qui porte chance en amour
* lovely (a) : 1/ joli(e), charmant(e), adorable ; 2/ agréable
* lovely (n) : dans l’expression my lovely : ma chérie, mon amour, ma belle, mon chou
* lover (n) : 1/ amant(e) - Latin lover : roméo, bourreau des cœurs latin, séducteur latin, séducteur méditerranéen, tombeur de ces dames (fam.) - true lover’s knot : bijou en forme d’entrelacs, lacs d'amour - a lovers lane : le coin des amoureux ; 2/ ami(e) - nature lover : ami de la nature ; 3/ amateur/-trice (de musique, de vin, etc.) - book lover : bibliophile - cinema lover : cinéphile
* love-struck (ac) : qui a eu le coup de foudre - We were love-struck : Nous eûmes le coup de foudre (syn. It was love at first sight)
* loving (a) : aimant(e), affectueux/-euse
* low (a) : 1/ bas(se) ; 2/ min (indication sur une jauge) ; 3/ grave (dans l’échelle des sons) ; 4/ déprimé(e) - to feel low : se sentir déprimé
* low (adv.) : bas, à basse altitude - to fly low : voler à basse altitude - to lie low : (au propre) se coucher ; (au fig.) faire profil bas
* low (n) : 1/ niveau bas - Shares are at an all-time low : Les actions sont à leur plus bas niveau ; 2/ prix plancher
* low-altitude (ac) : de faible altitude
* low-budget (ac) : à petit budget - low-budget movie : film à petit budget
* lowdown (a) : vil(e), méprisable, abject(e)
* low-cost (ac) : à faible coût, à petit prix - low-cost online resources : ressources en ligne à faible coût - low-cost producer : producteur à faible coût de revient, fabricant à faible coût de revient
* low-end (ac) : de bas de gamme (anton. high-end : de haut de gamme)
* lower (a) : inférieur(e) - the lower orders : les ordres inférieurs (de la société) - in the lower sixties : de 60 à 63 degrés
* lower (v) (tr.) : baisser, abaisser, diminuer - to lower the credit rating of DB from A3 to Baa1 : baisser la cote de crédit de la DB de A3 à Baa1
* low-fat (ac) : à faible teneur en gras / en graisse - low-fat foods : aliments à faible teneur en gras / en graisse
* low-fi (ac) (abr. de low-fidelity) : de basse fidélité
* low-fired (ac) : à cuisson réduite, à faible cuisson, à petit feu - low-fired bricks : briques à cuisson réduite (f pl.) - low-fired earthenware : faïence à petit feu (f)
* low-flying (ac) : qui vole à basse altitude, volant à basse altitude - low-flying missile : missile volant à basse altitude (anton. high-flying)
* low-hanging (ac) : [branche] basse, [fruits] les plus bas, facile(s) à cueillir (anton. high-hanging) - low-hanging branches : branches les plus basses - to pick the low-hanging fruit : a/ (au propre) cueillir les fruits les plus bas ; b/ (au fig.) choisir la solution de facilité
* low-income (ac) : à faible(s) revenu(s), aux revenus modestes
* low-intellect (ac) : à l’esprit limité, au front bas, bas de front
* lowlands (n pl.) : plaines (f pl.)
* lowly (adv.) : peu, au plus bas
* low-lying (ac) : bas(se), de basse altitude, peu élévé(e) - low-lying coastal road : route côtière basse (f) - low-lying lands : terres basses (f pl.), basses terres (f pl.)
* low-paid (ac) : mal payé(e), peu rémunéré(e) - low-paid job : boulot sous-payé (anton. highly-paid ; high-paid est incorrect)
* low-paying (ac) : mal payé(e), sous-payé(e), peu rémunéré(e) (anton. high-paying) - low-paying job : boulot mal payé
* low-price (ac) : à faible prix
* low-priced (ac) : à faible prix - low-priced works of art : œuvres d’art à petit prix
* low-rise (ac) : [immeuble] peu élevé(e) (anton. high-rise : très élevé(e))
* low-skilled (ac) : peu qualifié(e), à faible niveau de compétence - low-skilled labour : main-d’œuvre peu qualifiée (f)
* low-speed (ac) : à faible vitesse
* low-tech (ac) : à faible degré de technicité (anton. high-tech : à haut degré de technicité) - low-tech system : système à faible degré de technicité
* low-yield (ac) : à faible rendement (anton. high-yield : à haut rendement)
* lozenge (n) (fa p) : 1/ losange ; 2/ pastille (f)
* LP (n) (init. de long player) : (Mus.) 1/ (vinyle) 75 tours ; 2/ album
* Ltd : abr. de Limited
* lubber (n) : marin d’eau douce
* lubricate (v) (tr.) : lubrifier, graisser
* lubrication (n) : lubrification (f)
* lubricity (n) (fa) : 1/ lubricité (f) ; 2/ onctuosité (f) ; 3/ pouvoir lubrifiant
* lucid (a) : lucide - lucid dreaming : (le) rêve éveillé - lucid thought : (la) lucidé des idées
* luck (n) : chance (f) - Her luck ran out : La chance l’a abandonnée - Luck smiled on him : La chance lui sourit - bad luck : malchance (f), guigne (f) - to bring bad luck : porter malchance - Good luck! : Bonne chance !
* luckily (adv.) : heureusement, par chance
* lucky (a) : chanceux/-euse, qui a de la chance - Think yourself lucky! : Estime-toi / Estimez-vous heureux ! (heureuse, au fém.) - to be a lucky devil : être un sacré veinard (une sacrée veinarde, au fém.) - lucky mojo : pendentif porte-bonheur
* lucrative (a) : rentable
* lucre (n) : lucre - filthy lucre : argent sale
* ludicrous (a) : dérisoire
* luff (n) (naut.) : guindant, lof
* lug around (v) (intr.) : trimbaler (qch) (fam.)
* luggage (n ind. sing.) : bagages (pl.) - a piece of luggage : un bagage - luggage rack : porte-bagage (de voiture)
* lull (n) : accalmie (f)
* lumber (n) : 1/ bois de construction - lumber mill : scierie (f) - lumber room : débarras ; 2/ (fig.) - to be a lumber : être un boulet, être un objet encombrant, être un poids à traîner
* lumber (v) : 1/ (intr.) avancer d’un pas lourd ; 2/ (tr.) coller (sth with sth, qch à qch)
* lumberjack (n) (amér.) : bûcheron
* luminary (n) (pl. luminaries) (fa) : personnage de premier plan, sommité (f) - He is a luminary in the field : C’est une sommité dans ce domaine
* luminous (a) : lumineux/-euse - luminous object : objet lumineux
* lump (n) : 1/ morceau (de sucre) ; 2/ grumeau ; 3/ bosse (f), protubérance (f)
* lumpy (a) : 1/ grumeleux/-euse, plein(e) de grumeaux ; 2/ plein(e) de bosses, plein(e) de protubérances
* Lunar / lunar (n) : lunaire - lunar lander : atterrisseur lunaire - lunar base : base lunaite - lunar colony : colonie lunaire - lunar colonist : colon lunaire
* lunatic (a) (fa) : fou/folle, aliéné(e), dément(e) - lunatic asylum : asile d’aliénés, asile de fous
* lunch (n) : repas de midi (France), déjeuner (France), dîner (Belgique, Suisse, Canada)
* lunch (v) (tr.) : déjeuner (France), dîner (Belgique, Suisse, Canada)
* lunchable (n) (pl. lunchables) : plat tout prêt
* luncheon (n) : déjeuner (France), dîner (Belgique, Suisse, Canada) - luncheon meat (brit.) : viande à sandwich
* lung (n) : poumon - lung cancer : cancer du poumon, cancer des poumons
* lunge (n) : 1/ [Escr.] coup en avant, fente (f) ; 2/ [Gym.] fente (f) ; 3/ mouvement brusque en avant - to make a lunge at sb : se jeter sur qn
* lunge (v) (intr.) : se jeter en avant, s’avancer brusquement - to lunge at sb : se ruer sur qn
* lurch (n) (pl. lurches) : embardée (f) - to leave sb in the lurch : laisser qn en plan, laisser qn dans le pétrin, laisser tomber qn
* lurch (v) (intr.) : faire une embardée, tituber
* lure (n) : 1/ (Pêche) leurre, appât - fishing lure : appât à poissons ; 2/ (fig.) attrait
* lure (v) (tr.) : attirer, séduire, tromper - lure sb into a trap : attirer qn dans un piège - to lure sb into doing sth : inciter qn à faire qch
* lurid (a) : horrible, affreux/-euse, effrayant(e)
* lurk (v) (intr.) : rôder (syn. prowl) - to be lurking : se cacher, se tapir
* lurker (n) : 1/ rôdeur/-euse ; 2/ (Internet) observateur passif, observatrice passive (d’un forum)
* luscious (a) : 1/ succulent(e) ; 2/ voluptueux/-euse
* lust (n) : 1/ désir (for, pour) ; 2/ luxure (f)
* lust (v) (intr.) : convoiter, désirer (for sth, qch)
* luster (amér.) / lustre (brit.) (n) : éclat, lustre
* lustful (a) : 1/ plein de désir ; 2/ lubrique, libidineux/-euse
* lustfully (adv.) : 1/ avidement, avec avidité ; 2/ de façon lubrique, de façon libidineuse
* lusty (a) : vigoureux/-euse, robuste
* Lutheran (a) : luthérien(ne) (sans maj.)
* Lutheran (n pr. ) : luthérien, luthérienne
* luxury (n) (pl. luxuries) (fa) : luxe - luxury brand : marque de luxe - luxury run (Av.) : traversée de luxe
* Lybia (n pr.) : (la) Lybie
* Lybian (a) : lybien(ne) (sans maj.)
* Lybian (n pr.) : Lybien (le ressortissant)
* lye (n) : soude (f), soude caustique
* lye-based (ac) : à bas de soude - lye-based soap : savon à base de soude
* lynch (v) (tr.) : lyncher
* lynchet (n) : rideau (de culture), royon - cultivation lynchet : rideau de culture
* lynching (n) : lynchage
* lyrical (a) : lyrique
* lyrics (n pl.) : paroles (d'une chanson) (f pl.)
s0beu3ve6dbvvew2xl1eptaq7coprc7
Philosophie/Thalès de Milet/Textes et traductions période Principat Empire Romain
0
78966
768396
768177
2026-06-23T06:33:58Z
Alex Mtlr
103840
/* */ Correction tournure de phrase
768396
wikitext
text/x-wiki
{| border="0" cellpadding="0" width="100%" style="background: #f9f9f9"
| colspan="3" height="25"|<div style="text-align: center;">[[Philosophie/Thalès de Milet|'''Thalès de Milet''']]</div>
|-
| width="33%"|'''[[Philosophie/Thalès de Milet/Textes_et_traductions_période_République_Romaine|Période République Romaine]]'''
|-
| width="33%"|'''[[Philosophie/Thalès de Milet/Textes_et_traductions_période_Grèce_Hellénistique|Période de la Grèce Hellénistique]]'''
|-
| width="33%"|'''[[Philosophie/Thalès de Milet/Textes_et_traductions_Ier_millénaire_AEC|Période de la Grèce Classique]]'''
|}
{{EnTravaux}}
<span style="font-size:18pt;">Période du Principat de l’[[w:Empire_romain|''Empire'']] [[#Empire|<span id="Empire_back"><sup>'''I'''</sup></span>]] [[w:Rome_antique|''Romain'']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Rome_back|<sup>🔄</sup>]]</span>
<p style="text-align: right;">(16 janvier [[w:27_av._J.-C.|-27]] <sup>[[w:Ier_siècle_av._J.-C.|⏳]]</sup>, nomination de [[w:Auguste|'''Caius Iulius Caesar Octavianus''']] aux titres d’[[w:Auguste_(titre)|''Augustus'']] et de [[w:Princeps_senatus|''Princeps'']] par le [[w:Sénat_romain|''Sénat romain'']] — fin du [[w:IIIe_siècle|III<sup>ème</sup> siècle {{Info|EC|de l’Ère Commune}}]], création du système [[w:Tétrarchie|''tétrarchique'']] [[#tétrarchie|<span id="tétrarchie_back"><sup>'''II'''</sup></span>]] par [[w:Dioclétien|'''Dioclétien''']] [[#Dioclétien|<span id="Dioclétien_back"><sup>'''III'''</sup></span>]] pour faire face aux [[w:Invasions_barbares#Première_période_:_les_mouvements_migratoires_germaniques_du_IIIe_siècle|''incursions barbares'']])
{{Boîte déroulante début|titre=NdA Empire|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Empire_back|<span id="Empire"><sup>I</sup></span>]] Du nom commun latin imperium [[wikt:en:imperium#Latin|(en)]], « 1. L’empire, l’État, le gouvernement impérial, le royaume, la domination. 2. Le droit ou le pouvoir de commander ou d’avoir le contrôle ; domination. 3. Commandement ou autorité absolue sur l’empire (ou un autre régime politique) ; souveraineté ; domination. 4. (militaire) Autorité militaire, commandement (d’une armée). 5. L’exercice de l’autorité, de la règle, de la loi, du contrôle, de la souveraineté. 6. Un commandement, un ordre, une direction, une injonction.) »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ du verbe imperō, « 1. (avec datif) Commander, donner des ordres à, imposer, exiger. 2. Gouverner. »;<br /><p style="margin: 0 2em; text-indent: 30px;">➥ du préfixe prépositionnal in-, « 1. Dans, à l’intérieur. 2. Contre; dans; sur; vers. 3. (utiliser comme un intensifieur). 4. Attaché à des [[w:Aspect_inchoatif|''verbes inchoatifs'']], il peut exprimer le sens d’un changement en cours ou d’un achèvement partiel. »;<br /><p style="margin: 0 2em; text-indent: 30px;">➥ + du verbe parō [[wikt:en:paro#Latin|(en)]], « 1. Arranger, ordonner, concevoir. 2. Fournir, meubler, préparer. 3. Résoudre, viser, décider. 4. Obtenir, acquérir, se procurer, se faire. »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ + du suffixe nominal abstractif -ium [[wikt:en:-ium#Latin|(en)]], désignant parfois des offices et des groupes. »;<br /><p style="margin: 0 2em; text-indent: 15px;">L’historien spécialiste de l’[[w:Grèce_antique|''antiquité grecque'']] [[w:Moses_Finley|Moses Finley]] définit un empire par tout {{Info|''« exercice durable par un État d’une autorité, d’un pouvoir, ou d’un contrôle sur un ou plusieurs États, communautés ou peuples »''|Moses Finley, Économie et société en Grèce antique, La Découverte, 2007.}}. L’historien [[w:Jean_Tulard|Jean Tulard]], précise cette définition par {{Info|''cinq traits suivants''|Jean Tulard, Les Empires occidentaux de Rome à Berlin, PUF, 1997.}} :<br /><p style="margin: 0 2em; text-indent: 15px;"> • Une volonté expansionniste ;<br /><p style="margin: 0 2em; text-indent: 15px;">• Une organisation centralisée ;<br /><p style="margin: 0 2em; text-indent: 15px;">• Des peuples encadrés par une armature politique et fiscale commune ;<br /><p style="margin: 0 2em; text-indent: 15px;">• La croyance en une supériorité d’essence ;<br /><p style="margin: 0 2em; text-indent: 15px;">• Un début et une fin clairement identifiés.
<br /><br /><p style="margin: 0 2em; text-indent: 15px;">'''[[#tétrarchie_back|<span id="tétrarchie"><sup>II</sup></span>]] Du nom commun grec ancien τετραρχία / tetrarkhía;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ du préfixe τετρα- / tétra- [[wikt:en:τετρα-#Ancient_Greek|(en)]], « quatre »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ + du suffixe -αρχία / -arkhía [[wikt:en:-αρχία#Ancient_Greek|(en)]], « -archie (forme de gouvernement ou de règle) »;<br /><p style="margin: 0 2em; text-indent: 15px;"> Système de gouvernement de l’Empire ''romain'' mis en place par Dioclétien à la fin du [[w:IIIe_siècle|III<sup>ème</sup> siècle {{Info|EC|de l’Ère Commune}}]], pour faire face aux invasions barbares. Il consiste en la division de la direction de l’empire entre, d’une part deux [[w:Empereur_romain|''empereurs'']] — les [[w:Auguste_(titre)|''augustes'']] —, d’autre part deux ''lieutenants'' (successeurs désignés des ''augustes'') — les [[w:C%C3%A9sar_(titre)|''césars'']].
<br /><br /><p style="margin: 0 2em; text-indent: 15px;">'''[[#Dioclétien_back|<span id="Dioclétien"><sup>III</sup></span>]] [[w:Nom_romain|Tria Nomina]] en latin {{Info|Gaius|praenomen, nom individuel du citoyen romain}} {{Info|Aurelius|nomen, nom de famille}} {{Info|Valerius|cognomen, surnom héréditaire, servant à distinguer les diverses branches d’une même gens}}, surnommé Dioclētiānus [[wikt:en:Diocletian#English|(en)]] lorsqu’il a été proclamé empereur par ses troupes;<br /><p style="margin: 0 2em; text-indent: 15px;"> Militaire et empereur, connu pour avoir séparé et élargi les services civils et militaires de l’empire, et réorganisé les divisions provinciales de l’empire, établissant le gouvernement le plus vaste et le plus bureaucratique de l’histoire de l’empire. En [[w:286|286]], il nomme son ''césar'', ou adjoint et successeur, [[w:Maximien_Hercule|Maximien]] ''Auguste'', co-empereur, et partage l’Empire entre l’Orient et l’Occident, puis en 293, y nomme respectivement [[w:Galère_(empereur_romain)|Maximien Galère]] et [[w:Constance_Chlore|Constance Chlore]] comme ''césar''.<br/><br/></div>
'''
{{Boîte déroulante fin}}
== [[w:Sénèque|'''Sénèque''']] [[#Sénèque|<span id="Sénèque_back"><sup>'''I'''</sup></span>]] ==
<p style="text-align: right;">([[w:5_av._J.-C.|-5]] <sup>[[w:Ier_siècle_av._J.-C.|⏳]]</sup> / [[w:1|1]] <sup>[[w:Ier_siècle|⏳]]</sup>, à [[w:Corduba|Corduba]] — 12 avril [[w:65|65]], à [[w:Rome_antique|''Rome'']], dans une maison de plaisance, la « quatrième pierre milliaire », contraint au [[w:Suicide_forcé|''suicide forcé'']] par l’empereur [[w:Néron|'''Néron''']] après avoir été dénoncé dans la [[w:Conjuration_de_Pison|''Conjuration de Pison'']], sans preuve selon [[w:Tacite|'''Tacite''']] [https://remacle.org/bloodwolf/historiens/tacite/annales15.htm <sup>Annales, l.V, §§LX-LXVI.</sup>]) [[s:Auteur:Sénèque_le_Jeune|<sup>📚</sup>]] [https://books.google.fr/books?id=_HZTvAxN7CIC&newbks=1&newbks_redir=0&lpg=PA3&dq=bibliogroup%3A%22Dictionnaire%20des%20philosophes%20antiques%22&hl=fr&pg=PA177#v=onepage&q&f=true {{Info|<sup>🔍</sup>|Dictionnaire des Philosophes Antiques, publié sous la direction de Richard Goulet, Volume VI, §43 - Seneca (Lucius Annaeus –)}}]
[[Fichier:Duble_herma_of_Socrates_and_Seneca_Antikensammlung_Berlin_03_.jpg|vignette|<p style="text-align: justify; text-indent: 15px;">Double-hermès du [[w:IIIe_siècle|III<sup>ème</sup> siècle {{Info|EC|de l’Ère Commune}}]], unique portrait de '''Sénèque''' nommé et authentifié, et associé à celui de '''Socrate''', dont le point commun est celui d’avoir été contraint de se donner la mort. Copie ''romaine'' d’un modèle fait du vivant même du philosophe [https://books.google.fr/books?id=_HZTvAxN7CIC&newbks=1&newbks_redir=0&lpg=PA3&dq=bibliogroup%3A%22Dictionnaire%20des%20philosophes%20antiques%22&hl=fr&pg=PA180#v=onepage&q&f=true {{Info|<sup>➕</sup>|Dictionnaire des Philosophes Antiques, publié sous la direction de Richard Goulet, Volume VI, §43 - Seneca (Lucius Annaeus –), Iconographie}}] [https://books.google.fr/books?id=_HZTvAxN7CIC&newbks=1&newbks_redir=0&lpg=PA3&dq=bibliogroup%3A%22Dictionnaire%20des%20philosophes%20antiques%22&hl=fr&pg=PA201#v=onepage&q&f=true {{Info|<sup>➕➕</sup>|Dictionnaire des Philosophes Antiques, publié sous la direction de Richard Goulet, Volume VI, §43 - Seneca (Lucius Annaeus –), Iconographie - contribution de J. Lang}}].<br /><p style="text-align: justify; text-indent: 15px;">Matériau : Marbre blanc-brunâtre, légèrement veiné, finement cristallin.<br /><p style="text-indent: 15px;">Provenance : ''Rome'', 1813.<br /><p style="text-align: justify; text-indent: 15px;">Exposition : Staatliche Museen zu Berlin, Antikensammlung, SK. 391 [https://recherche.smb.museum/detail/698814/doppelherme-des-sokrates-und-seneca-mit-namensbeischriften-der-dargestellten <sup>🔍</sup>].]]
<div style="text-align: justify; margin: 0 1em; text-indent: 15px">Homme politique romain, philosophe stoïcien et dramaturge, il devient tour à tour conseiller à la cour impériale sous '''Caligula''' puis '''Claude''', est exilé en 41 en ''Corse'', où il écrit ses premiers traités philosophiques avant d’être rappelé comme tuteur du jeune '''Néron''' en 49, et enfin, lorsque ce dernier accède au pouvoir, en devient le conseiller et l’un des personnages les plus influents de l’Empire.</div>
{{Boîte déroulante début|titre=NdA Sénèque|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Sénèque_back|<span id="Sénèque"><sup>I</sup></span>]] [[w:Nom_romain|Tria Nomina]] en latin {{Info|Lucius|praenomen, nom individuel du citoyen romain}} {{Info|Annaeus|nomen, nom de famille}} {{Info|Seneca|cognomen, surnom héréditaire, servant à distinguer les diverses branches d’une même gens}}'''<br/><br/></div>
{{Boîte déroulante fin}}
=== [[w:Sénèque#Physique|Questions naturelles]] ===
<p style="text-align: right;">[[s:Questions_naturelles|📚]]
<div style="text-align: justify; margin: 0 1em; text-indent: 15px">Ouvrage de philosophie naturelle écrit vers 65. Il ne s’agit pas d’une [[w:Encyclopédie|encyclopédie]] [[#encyclopédie|<span id="encyclopédie_back"><sup>'''I'''</sup></span>]] systématique comme l’[[w:Histoire_naturelle_(Pline_l'Ancien)|''Histoire naturelle'']] [[#Histoire_naturelle|<sup>⤵️</sup>]] de [[w:Pline_l'Ancien|'''Pline l’Ancien''']] [[#Pline_l’Ancien_I|<sup>⤵️</sup>]], bien que ces 2 œuvres représentent les rares ouvrages romains consacrés à l’étude du monde naturel. L’investigation de '''Sénèque''' se déroule principalement à travers la prise en compte des points de vue d’autres penseurs, ''grecs'' et ''romains'', bien qu’elle ne soit pas dénuée de pensées originales, dont éthiques conforment à la pensée ''stoïcienne''.</div>
{{Boîte déroulante début|titre=NdA Questions naturelles|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#encyclopédie_back|<span id="encyclopédie"><sup>I</sup></span>]] Du nom commun [[w:Latin#Latin_humaniste|latin Renaissance]] encyclopaedīa [[wikt:en:encyclopaedia#Latin|(en)]]; de l’expression grec ancien ἐγκύκλῐος παιδείᾱ / enkúklios paideíā [https://dumas.ccsd.cnrs.fr/dumas-03927443/file/DONNADILLE-MR2-Pline-VERS-FINALE.pdf {{Info|<sup>🔍</sup>|Lisa Donnadille. Merveilles animalières dans les livres VIII à XI de l’Histoire naturelle de Pline l’Ancien. Littératures. 2020. ffdumas-03927443, p.21}}], « cercle de l’éducation ou des sciences, l’ensemble des sciences qui constituent une éducation complète »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ de l’adjectif ἐγκύκλιος / enkúklios, littéralement « qui est rond ou tourne en rond, circulaire », ou au sens figuré « qui revient en cercle sur soi-même, périodique », « qui embrasse un cercle entier »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ du nom commun παιδεία / paideía, « l’éducation »;'''<br /><p style="margin: 0 2em; text-align: center;">« ''Si à première vue la signification de cette expression semble être sans ambiguïté, sa portée réelle et la compréhension qu’en avaient les auteurs grecs puis latins font l’objet de débats parmi les spécialistes. En effet, deux interprétations sont possibles lorsqu’un auteur de l’Antiquité a recours à cette expression dans l’un de ses textes. Dans le premier cas, cela équivaudrait à parler d’une éducation ordinaire, commune à tous ; et dans le second cas, cela ferait référence à la quantité de connaissances et de sciences qu’il faudrait maîtriser au préalable avant de commencer l’étude d’un sujet précis, qui serait dans ce cas placé en haut d’une hiérarchie dans les savoirs.'' »<br /><p style="margin: 0 2em; text-align: right;">''' Lisa Donnadille. [https://dumas.ccsd.cnrs.fr/dumas-03927443/file/DONNADILLE-MR2-Pline-VERS-FINALE.pdf Merveilles animalières dans les livres VIII à XI de l’Histoire naturelle de Pline l’Ancien. Littératures. 2020. ffdumas-03927443], p.21'''<br/><br/></div>
{{Boîte déroulante fin}}
==== Livre III — De l’eau ====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">En prologue, Sénèque explique pourquoi il est plus important de s’intéresser à l’observation du monde, à sa connaissance et à sa compréhension plutôt qu’à sa conquête. Puis, il développe diverses théories sur la formation des rivières, les eaux souterraines et les propriétés de l’eau. Dans une critique morale aux chapitres XVII à XIX, il fustige la mauvaise pratique consistant à amener à table des poissons, notamment des rougets, vivants et à se délecter de leurs couleurs changeantes à l’agonie avant de les préparer devant les convives. En épilogue, il énonce son [[w:Eschatologie|''eschatologie'']], sa vision de la fin du monde où les êtres vivants seront anéantis par des raz-de-marée, marquant la fin d’un cycle du vivant et le début d’un autre.</div>
===== <div style="text-align: center;">Chapitre XIII.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage de la doctrine de '''Thalès''' faisant de l’eau l’élément à l’origine de la vie et critique d’une autre de la terre flottant dessus.</div>
:'''Texte latin'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''13.''' Adiciam, ut '''Thales''' ait, «ualentissimum elementum est». Hoc fuisse primum putat, ex hoc surrexisse omnia. Sed nos quoque aut in eadem sententia, aut in uicinia eius sumus. Dicimus enim ignem esse qui occupet mundum et in se cuncta conuertat; hunc euanidum languentemque considere et nihil relinqui aliud in rerum natura igne restincto quam umoren; in hoc futuri mundi spem latere. Ita ignis exitus mundi est, umor primordium. Miraris ex hoc posse amnes semper exire qui pro omnibus fuit et ex quo sunt omnia? Hic umor in diductione rerum ad quartas redactus est, sic positus ut sufficere fluminibus edendis, ut riuis, ut fontibus posset.<br /><p style="text-indent: 15px;">'''14.''' Quae sequitur '''Thaletis''' inepta sententia est. Ait enim terrarum orbem aqua sustineri et uehi more nauigii mobilitateque eius fluctuare tunc cum dicitur tremere; non est ergo mirum si abundat umor ad flumina profundenda, cum in umore sit totus. Hanc ueterem et rudem sententiam explode. Nec est quod credas in hunc orbem aquam subire per rimas et facere sentinam.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/seneca.-cuestiones-naturales.-naturales-quaestiones.-vol.-i-1979/page/n1/mode/2up <u>L. Annaei Senecae, Natvrales Qvaestiones</u>], [https://archive.org/details/seneca.-cuestiones-naturales.-naturales-quaestiones.-vol.-i-1979/page/n261/mode/2up ''Liber Tertivs.''], [https://archive.org/details/seneca.-cuestiones-naturales.-naturales-quaestiones.-vol.-i-1979/page/n293/mode/2up ''chap. 13.-14.''], texte établi par Carmen Codoñer Merino [[w:es:Carmen_Codoñer_Merino|(es)]], Consejo Superior de Investigaciones Científicas, Madrid, 1979</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">'''XIII.''' Aqua, ait '''Thales''', valentissimum elementum est : hoc fuisse primum putat, et hoc surrexisse omnia. Sed et nos quoque aut in eadem sententia, aut in ultima sumus. Dicimus enim ignem esse, qui occupet mundum, et in se cuncta convertat ; hunc evanidum considere, et nihil relinqui aliud in rerum natura, igne restincto, quam humorem : in hoc futuri mundi spem latere. Ita ignis exitus mundi est, humor primordium. Miraris amnes ex hoc posse exire semper, qui pro omnibus fuit, et ex quo sunt omnia? Hic humor in diductione rerum ad quartas redactus est, sic positus, ut fluminibus edendis sufficere, ut rivis, ut fontibus posset. Quæ sequitur, '''Thaletis''' inepta sententia est : ait enim , terrarum orbem aqua sustineri, et vehi more navigii, mobilitateque ejus fluctuare, tum quum dicitur tremere. Non est ergo mirum, si abundat humor ad flumina fundenda, quum mundus in humore sit totus. Hanc veterem et rudem sententiam explode : nec est quod credas, in hunc orbem aquam subire per rimas et facere sentiuam.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PP9#v=onepage&q&f=true <u>Œuvres Complètes de Sénèque, Tome Quatrième</u>], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA327#v=onepage&q&f=true ''Questions Naturelles, De Sénèque à Lucilius - Livre Troisième.''], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA342#v=onepage&q&f=true ''chap. XIII.''], traduction française de la collection Panckoucke, nouvelle édition très soigneusement revue par M. Charpentier et M. Félix Lemaistre, 1860</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''XIII.''' L’eau, dit '''Thalès''', est le plus puissant des éléments, le premier en date, celui par qui tout a pris vie. Nous pensons comme '''Thalès''', au moins sur le dernier point. En effet, nous prétendons que le feu doit s’emparer du monde entier et convertir tout en sa propre substance, puis s’évaporer, s’affaisser, s’éteindre et ne rien laisser autre chose dans la nature que l’eau ; qu’enfin l’eau recèle l’espoir du monde futur. Ainsi périra par le feu cette création dont l’eau fut le principe. Es-tu surpris que des fleuves sortent incessamment d’un élément qui a tenu lieu de tout, et duquel tout est sorti ? Quand les éléments furent séparés les uns des autres, l’eau fut réduite au quart de l’univers, et placée de manière à suffire à l’écoulement des fleuves, des ruisseaux, des fontaines. Mais voici une idée absurde de ce même '''Thalès'''. Il dit que la terre est soutenue par l’eau sur laquelle elle vogue comme un navire ; qu’à la mobilité d’un tel support sont dues les fluctuations qu’on appelle tremblements de terre. Ce ne sera donc pas merveille qu’il y ait assez d’eau pour entretenir les fleuves, si tout le globe est dans l’eau. Ce système grossier et suranné n’est que risible ; tu ne saurais admettre que l’eau pénètre notre globe par ses interstices, et que la cale est entr’ouverte.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[[s:Questions_naturelles_(trad._Baillard)|<u>Sénèque le Jeune</u>]], [[s:Questions_naturelles_(trad._Baillard)/Livre_3|''Livre III. chap. 13.'']], traduction par [[s:Auteur:Joseph_Baillard|Joseph Baillard]], Hachette, 1914<br />(également disponible [https://remacle.org/bloodwolf/philosophes/seneque/questionsnaturelles3.htm ici])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">'''XIII.''' L’eau, dit '''Thalès''', est le plus puissant des éléments : elle existait avant tout, elle est le principe de tout. Nous pensons comme '''Thalès''', au moins sur le dernier point. En effet, nous croyons que le feu, s’emparant du monde entier, convertira tout en sa propre substance : mais il finira par cesser ses ravages, et quand il sera éteint, dans toute la nature il ne restera que l’eau, et cette eau renfermera le germe et l’espérance d’un monde futur. Ainsi par le feu s’accomplira la destruction de l’univers, et par l’eau sa réorganisation. Êtes-vous
surpris, maintenant, qu’après avoir tenu lieu de tous les éléments, et les avoir produits tous, l’eau suffise à l’entretien perpétuel des fleuves ? Quand les éléments furent séparés les uns des autres, l’eau fut réduite au quart de l’univers, et dans une proportion convenable pour suffire à l’alimentation des fontaines, des ruisseaux et des rivières. Mais voici une idée absurde du même '''Thalès''' : il dit que la terre est soutenue par l’eau, et qu’elle flotte sur elle comme un navire ; que les tremblements de terre sont causés par les oscillations et les mouvements du fluide qui la soutient. Il n’est donc pas étonnant qu’il y ait assez d’eau pour alimenter les fleuves, puisque tout le globe est dans l’eau. Mais rejetons cette vieille et informe hypothèse, qui assimile les sources aux flots que la cale entr’ouverte laisse pénétrer dans le vaisseau.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PP9#v=onepage&q&f=true <u>Œuvres Complètes de Sénèque, Tome Quatrième</u>], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA327#v=onepage&q&f=true ''Questions Naturelles, De Sénèque à Lucilius - Livre Troisième.''], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA342#v=onepage&q&f=true ''chap. XIII.''], traduction française de la collection Panckoucke, nouvelle édition très soigneusement revue par M. Charpentier et M. Félix Lemaistre, 1860</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">'''Chap. III.'''<br />''Opiniõ de Thales touchant l’eau.''<br /><p style="text-align: justify; text-indent: 15px;">L’eau , comme dit '''Thales''' , e[[w:S_long|{{Info|ſ|forme ancienne longue de la lettre s minuscule}}]]<nowiki>t</nowiki> le plus fort des Elemens. Il croit me{{Info|ſ|forme ancienne longue de la lettre s minuscule}}me qu’elle e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t le premier , & que toutes cho{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es en ont pris nai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ance. Pour moy ie {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uis de cette opinion , ou du moins de la derniere partie de cette opinion. Car nous [[#nous_stoiciens_NdT_dR|<span id="nous_stoiciens_NdT_dR_back"><sup>1</sup></span>]] di{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ons que c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t le feu qui enueloppera tout le monde , & qui conuertira en {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oy toutes cho{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es; qu’il deuiendra {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ans force quand il n’aura plus de nourriture , qu’apres que le feu {{Info|ſ|forme ancienne longue de la lettre s minuscule}}era e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}teint il ne demeurera rien de re{{Info|ſ|forme ancienne longue de la lettre s minuscule}}te à la nature que l’eau {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eulement , & que c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t en elle {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eule que con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i{{Info|ſ|forme ancienne longue de la lettre s minuscule}}te l’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}perance d’vn monde futur. Ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i le feu e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t la fin du monde , & l’eau en e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t le commencement. Vous e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tonnez-vous donc que les fleuues pui{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ent tou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iours {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ortir d’vn Element , qui e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t fait pour toutes cho{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es & dont toutes cho{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e font ? Lors que la nature fit le departement des Elemens , l’eau fut placée de telle {{Info|ſ|forme ancienne longue de la lettre s minuscule}}orte , qu’elle peut {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uffire pour les fleuues , pour les rui{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eaux , pour les fontaines. Mais ce que '''Thales''' dit en {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uitte e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t ridicule , car il dit que le Globe de la terre e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tenu par les eaux ; qu’elles le portent comme vn vai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eau , & qu’elles l’agitent de la me{{Info|ſ|forme ancienne longue de la lettre s minuscule}}me {{Info|ſ|forme ancienne longue de la lettre s minuscule}}orte , lors que nous croyons qu’il tremble. Il ne faut donc pas s’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tonner , s’il ya tou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iours a{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ez d’eau pour former de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i grands fleuues , puis que tout le monde nage fur l’eau. Mais me{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pri{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ez cette vieille , & cette gro{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}iere opinion , & ne croyez pas que l’eau vienne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur la terre , comme par des fentes & par des creua{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}es , & qu’elle y {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oit {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eulement comme dans le fond d’vn vai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eau.</div>
<table cellspacing=15 style="margin: 0 4em; font-size:85%;">
<tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#nous_stoiciens_NdT_dR_back|<span id="nous_stoiciens_NdT_dR"><sup>1.</sup></span>]] Les Stoïciens.'''
</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=ktOcOg9lr54C&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles%20iii&hl=fr&pg=PA1#v=onepage&q&f=true <u>Seneque Des Qvestions Natvrelles</u>], [https://books.google.fr/books?id=ktOcOg9lr54C&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles%20iii&hl=fr&pg=PA202#v=onepage&q&f=true ''Livre Troisiesme. Des eaux.''], [https://books.google.fr/books?id=ktOcOg9lr54C&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles%20iii&hl=fr&pg=PA234#v=onepage&q&f=true ''chap. XIII.''], traduction par [[w:Pierre_Du_Ryer|Pierre Du Ryer]], A Lyon, Chez Christofle Fovrmy, 1663</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div>
</div>
<div style="text-align: center; margin: 0 auto;">― ● ―</div>
==== Livre IV — Du Nil ====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">En prologue, '''Sénèque''' fait l’éloge de [[w:Lucilius_le_Jeune|'''Lucilius''']] [[#Lucilius|<span id="Lucilius_back"><sup>'''I'''</sup></span>]] avant de lui expliquer les dangers de la flatterie. Puis, il décrit la crue du [[w:Nil|''Nil'']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Nil_back|<sup>🔄</sup>]], expose les théories tentant de l’expliquer et les réfute. En épilogue, il fait le procès du luxe, et plus particulièrement celui d’acheter de la neige, et donc de marchandiser l’eau, regrettant qu’on ne puisse faire de même avec l’air et le soleil.</div>
{{Boîte déroulante début|titre=NdA Lucilius|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Lucilius_back|<span id="Lucilius"><sup>I</sup></span>]] Du nom propre latin Lucilius [[wikt:en:Lucilius#Latin|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;">Gouverneur ''romain'' de Sicile durant le règne de [[w:Néron|Néron]], ainsi qu’un ami et un correspondant de Sénèque.<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] [[w:Ier_siècle_av._J.-C.|I<sup>er</sup> siècle {{Info|EC|de l’Ère Commune}}]], [[w:Campanie#Histoire|''Campanie'']], [[w:Quatorze_régions_de_la_Rome_augustéenne#Regio_I_:_Porte_Capène|''Regio I'']])'''<br/><br/></div>
{{Boîte déroulante fin}}
===== <div style="text-align: center;">Chapitre II.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Réfutation par '''Sénèque''' d’une théorie explicite de '''Thalès''' sur la crue du ''Nil'' (théorie identique mais supposément implicite rapportée par [[w:Hérodote|'''Hérodote''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Chapitre_XX|<sup>🔄</sup>]]).</div>
:'''Texte latin'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''2.''' [...] Si '''Thaleti''' credis, etesiae descendenti ''Nilo'' resistunt et cursum eius acto contra ostia mari sustinent. Ita reuerberatus in se recurrit, nec crescit, sed exitu prohibitus resistit et quacumque mox potuit ui congestus erumpit. '''Euthymenes''' ''Massiliensis'' testimonium dicit: «Nauigaui, inquit, ''Atlanticum'' mare. Inde ''Nilus'' fluit, maior, quamdiu etesiae tempus obseruant; tunc enim eicitur mare instantibus uentis. Cum resederunt, et pelagus conquiescit minorque descendenti inde uis ''Nilo'' est. Ceterum dulcis mari sapor est et similes ''Niloticis'' beluae». Quare ergo, si ''Nilum'' etesiae prouocant, et ante illos incipit incrementum eius et post eos durat? Praeterea non fit maior quo illi flauere uehementius, nec remittitur incitaturque, prout illis impetus fuit; quod fieret, si illorum uiribus cresceret. Quid quod etesiae litus ''Aegyptium'' uerberant et contra illos ''Nilus'' descendit, inde uenturus unde illi, si origo ab illis esset? Praeterea ex mari purus et caeruleus efflueret, non, ut nunc, turbidus ueniret. Adde quod testimonium eius testium turba coarguitur. Tunc erat mendacio locus; cum ignota essent externa, licebat illis fabulas mittere. Nunc uero tota exteri maris ora mercatorum nauibus stringitur, quorum nemo narrat initium ''Nili'' aut mare saporis alterius: quae natura credi uetat, quia dulcissimum quodque et leuissimum sol trahit. Praeterea quare hieme non crescit? Et tunc potest uentis concitari mare, aliquanto quidem majoribus; nam etesiae temperati sunt. Quod si e mari ferretur ''Atlantico'', semel oppleret ''Aegyptum''. At nunc per gradus crescit.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/seneca.-cuestiones-naturales.-naturales-quaestiones.-vol.-ii-1979/page/n1/mode/2up <u>L. Annaei Senecae, Natvrales Qvaestiones</u>], [https://archive.org/details/seneca.-cuestiones-naturales.-naturales-quaestiones.-vol.-ii-1979/page/n7/mode/2up ''Liber Qvartvs A.''], [https://archive.org/details/seneca.-cuestiones-naturales.-naturales-quaestiones.-vol.-ii-1979/page/n41/mode/2up ''chap. 2.''], texte établi par Carmen Codoñer Merino [[w:es:Carmen_Codoñer_Merino|(es)]], Consejo Superior de Investigaciones Científicas, Madrid, 1979</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">'''II.''' [...] Si '''Thaleti''' credis, Etesiæ descendenti ''Nilo'' resistunt, et cursus ejus acto contra ostia mari sustinent : ita reverberatus in se recurrit : nec crescit, sed exitu prohibitus resistit, et quacumque mox potuit, inconcessus erumpit.<br /><p style="text-align: justify; text-indent: 15px;">'''Euthymenes''' ''Massiliensis'' testimonium dicit : « Navigavi, inquit, ''Atlanticum'' mare. Inde ''Nilus'' fluit major, quamdiu Etesiæ tempus observant : tunc enim ejicitur mare instantibus ventis. Quum resederint, et pelagus conquiescit, minorque descendenti inde vis ''Nilo'' est. Ceterum dulcis maris sapor est, et similes ''Niloticis'' belluæ. » Quare ergo, si ''Nilum'' Etesiæ provocant, et ante illos incipit incrementum ejus, et post eos durat ? Præterea non fit major, quo illi flavere vehementius. Nec remittitur, incitaturque, prout illis impetus fuit : quod fieret, si illorum viribus cresceret. Quid, quod Etesiæ littus ''ægyptium'' verberant, et contra illos ''Nilus'' descendit, inde venturus, unde illi, si origo ab illis esset ? Præterea ex mari purus et cæruleus efflueret, non ut nunc turbidus venit. Adde, quod testimonium ejus testium turba coarguitur. Tunc erat mendacio locus, quum ignota essent externa. Licebat illis fabulas mittere. Nunc vero tota exteri maris ora mercatorum navibus stringitur : quorum nemo narrat nunc cæruleum ''Nilum'', aut mare saporis alterius ; quod et natura credi vetat, quia dulcissimum quodque et levissimum sol trahit. Præterea quare hieme non crescit ? et tunc potest ventis concitari mare, aliquando quidem majoribus ; nam Etesiæ temperati sunt. Quod si e mari ferretur ''Atlantico'', semel oppleret ''Ægyptum''. At nunc per gradus crescit.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PP9#v=onepage&q&f=true <u>Œuvres Complètes de Sénèque, Tome Quatrième</u>], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA371#v=onepage&q&f=true ''Questions Naturelles, De Sénèque à Lucilius - Livre Quatrième.''], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA385#v=onepage&q&f=true ''chap. II.''], traduction française de la collection Panckoucke, nouvelle édition très soigneusement revue par M. Charpentier et M. Félix Lemaistre, 1860</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''II.''' [...] À en croire '''Thalès''', les vents étésiens repoussent le ''Nil'' à sa descente dans la mer, et suspendent son cours en poussant la mer contre ses embouchures. Ainsi refoulé, il revient sur lui-même, sans pour cela grossir ; mais l’issue lui étant barrée, il s’arrête, et bientôt, partout où il le peut, force le passage qui lui est refusé. [[w:Euthymènes|'''Euthymène''']] [[#Euthymènes|<span id="Euthymènes_back"><sup>'''I'''</sup></span>]], de ''Marseille'', en parle comme témoin : « J’ai navigué, dit-il, sur la mer ''Atlantique''. Elle cause le débordement du ''Nil'', tant que les vents étésiens se soutiennent ; car c’est leur souffle qui alors pousse cette mer hors de son lit. Dès qu’ils tombent, la mer aussi redevient calme, et le ''Nil'' à sa descente déploie moins de puissance. Du reste, l’eau de cette mer est douce, et nourrit des animaux semblables à ceux du ''Nil''. » Mais pourquoi, si les vents étésiens font gonfler le ''Nil'', la crue commence-t-elle avant la saison de ces vents, et dure-t-elle encore après ? D’ailleurs le fleuve ne grossit pas à mesure qu’ils soufflent plus violemment. Son plus ou moins de fougue n’est point réglé sur celle des vents étésiens, ce qui aurait lieu, si leur action le faisait hausser. Et puis ils battent la côte ''égyptienne'', le ''Nil'' descend à leur encontre : il faudrait qu’il vînt du même point qu’eux, si son accroissement était leur ouvrage. De plus, il sortirait pur et azuré de la mer, et non pas trouble comme il est. Ajoute que le témoignage d’'''Euthymène''' est réfuté par une foule d’autres. Le mensonge avait libre carrière, quand les plages étrangères étaient inconnues ; on pouvait de là nous envoyer des fables, À présent, la mer extérieure est côtoyée sur tous ses bords par des trafiquants dont pas un ne raconte qu’aujourd’hui le ''Nil'' soit azuré ou que l’eau de la mer soit douce. La nature elle-même repousse cette idée ; car les parties les plus douces et les plus légères sont pompées par le soleil. Et encore pourquoi le ''Nil'' ne croît-il pas en hiver ? Alors aussi la mer peut être agitée par des vents quelque peu plus forts que les étésiens, qui sont modérés. Si le mouvement venait de l’Atlantique, il couvrirait tout d’un coup l’Égypte : or l’inondation est graduelle.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[[s:Questions_naturelles_(trad._Baillard)|<u>Sénèque le Jeune</u>]], [[s:Questions_naturelles_(trad._Baillard)/Livre_4|''Livre IV.'']] ''chap. 2.'', traduction par [[s:Auteur:Joseph_Baillard|Joseph Baillard]], Hachette, 1914<br />(également disponible [https://remacle.org/bloodwolf/philosophes/seneque/questionsnaturelles4.htm ici])</div>
{{Boîte déroulante début|titre=NdA trad. par Joseph Baillard de 1914|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Euthymènes_back|<span id="Euthymènes"><sup>I</sup></span>]] Du nom propre grec ancien Εὐθυμένης / Euthuménēs [[wikt:en:Εὐθυμένης#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;"> ➥ de l’adjectif εὐθύς / euthús, « 1. Droit, direct : (au sens moral) direct, ouvert, franc. »;<br /><p style="margin: 0 2em; text-indent: 15px;"> ➥ + du nom commun μενος / ménos, « 1. Esprit. 2. Désir, ardeur, souhait, but. 3. Colère. 4. Courage, esprit, vigueur. 5. Pouvoir, force. 6. Violence. »;<br /><p style="margin: 0 2em; text-indent: 15px;"> ➥ + du suffixe nominal propre -ης / -ēs [[wikt:en:-ης#Suffix_2|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;"> Navigateur et explorateur de la mer Extérieure le long des côtes africaines (actuelle Atlantique sud).<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] [[w:VIeme_siècle_av._J.-C.|VI<sup>ème</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]], [[w:Marseille_antique#Massalia,_une_cité_grecque|''Massalia'']], actuelle Marseille)'''<br/><br/></div>
{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">'''II.''' [...] Selon '''Thalès''', le phénomène a pour cause les vents Étésiens, qui s’opposent au cours du ''Nil'' et font rebrousser ses eaux en sens inverse du mouvement qui le porte vers la mer. Refoulés sur eux-mêmes, les flots refluent sans pour cela grossir ; mais l’issue leur étant fermée, ils s’arrêtent, et bientôt ils s’ouvrent partout où ils peuvent le passage qui leur est refusé.<br /><p style="text-align: justify; text-indent: 15px;">'''Euthymène''' de ''Marseille'' en parle comme témoin : « J’ai navigué, dit-il, sur la mer ''Atlantique''. Le ''Nil'' roule des eaux plus abondantes, tant que durent les vents Étésiens ; car alors ils refoulent la mer sur le fleuve. Dès qu’ils se sont abattus et que la mer est devenue calme, le ''Nil'', qui peut redescendre vers celle-ci, diminue. Au reste, les eaux de cette mer sont douces et contiennent des animaux semblables à ceux du ''Nil''. » Dans cette hypothèse, qui donne les vents Étésiens pour cause des crues du ''Nil'', qu’on me dise pourquoi ces crues précèdent les vents, persistent quand les vents ne sont plus, enfin n’augmentent plus d’intensité et de violence, et ne diminuent pas selon la violence et l’impétuosité du vent même ; c’est pourtant ce qui devrait arriver, si les vents déterminaient la hausse des eaux. De plus, les vents Étésiens battent directement la côte ''égyptienne'' : pourquoi donc le ''Nil'' descend-il contre le souffle de ces vents, tandis qu’il devrait couler dans la même direction, s’il leur devait ses débordements ? Enfin, pourquoi, au lieu d’être diaphanes et azurés, ces flots, qu’on fait venir de la mer, sont-ils chargés de limon ? Ajoutez qu’une foule de témoignages réfutent '''Euthymène'''. On pouvait mentir, quand les plages étrangères étaient inconnues : c’était alors le temps des fables ; mais aujourd’hui mille vaisseaux marchands côtoient la mer extérieure ; personne ne dit que le ''Nil'' ait des flots d’azur ; personne ne donne à la mer une saveur douce, que la nature refuse à ses eaux : car le soleil en pompe sans cesse la partie la plus douce et la plus légère ; ensuite pourquoi le ''Nil'' ne croîtrait-il point pendant l’hiver ? la mer alors peut être battue par les vents, par des vents plus violents que les Étésiens, qui sont modérés. Enfin, si le mouvement venait de l’Atlantique, l’Égypte entière serait inondée tout d’un coup : or, l’inondation est graduelle.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PP9#v=onepage&q&f=true <u>Œuvres Complètes de Sénèque, Tome Quatrième</u>], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA371#v=onepage&q&f=true ''Questions Naturelles, De Sénèque à Lucilius - Livre Quatrième.''], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA385#v=onepage&q&f=true ''chap. II.''], traduction française de la collection Panckoucke, nouvelle édition très soigneusement revue par M. Charpentier et M. Félix Lemaistre, 1860</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">'''Chap. II.'''<br />''En quelle fai[[w:S_long|{{Info|ſ|forme ancienne longue de la lettre s minuscule}}]]<nowiki>ó</nowiki> {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e fait l’accroi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ement du Nil.''<br /><p style="text-align: justify; text-indent: 15px;">[...] Si vous en croyez '''Thales''' , les vents Ethe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iens re{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tent au ''Nil'' en de{{Info|ſ|forme ancienne longue de la lettre s minuscule}}cendant dans la mer; & arre{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tent {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on cours, en pou{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ant la mer contre {{Info|ſ|forme ancienne longue de la lettre s minuscule}}es {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ept emboucheures. Si bien qu’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es {{Info|ſ|forme ancienne longue de la lettre s minuscule}}tant repou{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}é de la {{Info|ſ|forme ancienne longue de la lettre s minuscule}}orte il retourne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oy-me{{Info|ſ|forme ancienne longue de la lettre s minuscule}}me , & ne croi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t pas comme l’on pen{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e , mais par ce qu’il trouue vn ob{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tacle qui l’empe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}che de pa{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}er outre , il e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t contraint de s’arre{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ter , & ne pouuant plus pour{{Info|ſ|forme ancienne longue de la lettre s minuscule}}uiure {{Info|ſ|forme ancienne longue de la lettre s minuscule}}a cour{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e , il {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e re{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pand par où il peut {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e répandre. '''Euthimenes''' de ''Mar{{Info|ſ|forme ancienne longue de la lettre s minuscule}}eille'' en rend ce te{{Info|ſ|forme ancienne longue de la lettre s minuscule}}moignage. I’ay nauigé, dit il, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur la mer ''Atlantique'' , & c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t par elle que le ''Nil'' deuient plus grand, lors que les vents Ethe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iens {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oufflent ; car alors cette mer {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ort pour ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i dire d’elle-me{{Info|ſ|forme ancienne longue de la lettre s minuscule}}me par la force & par la violence de ces vents. Mais lors qu’ils ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oufflent plus la mer demeure tranquille, & le Nil ne trouue plus rien qui l’empe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}che de de{{Info|ſ|forme ancienne longue de la lettre s minuscule}}cendre , Au re{{Info|ſ|forme ancienne longue de la lettre s minuscule}}te l’eau de la mer e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t douce en ce temps-là , & l’on y void des be{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tes {{Info|ſ|forme ancienne longue de la lettre s minuscule}}emblables à celles du Nil. Mais {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i les Ethe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iens {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont enfler le Nil, pourquoy {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on débordement commence il auant qu’ils {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oufflent & pourquoy dure - il encore lors qu’ils ont ce{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}é de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ouffler. Dauantage ils ne s’enfle pas plus que de cou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tume , quand ces vents {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oufflent auecque plus de violence qu’ils ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont ordinairement. Enfim il ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e hau{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}e & ne s’abai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}e pas {{Info|ſ|forme ancienne longue de la lettre s minuscule}}elon que leur impetuo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ité e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t plus ou moins grande , ce qui arriveroit {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ans doute s’il s’enfloit par la force de ces véts. Mais comme les Ete{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iens battent directement les bords de l’Egypte, & que le Nil de{{Info|ſ|forme ancienne longue de la lettre s minuscule}}cend contre eux ; il faudroit s’ils e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}toient cau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on accroi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ement , qu’il commença{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t par l’endroit d’où ils viennent. Outre cela il {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ortiroit tout pur de la mer, & de la couleur de la mer, & ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eroit pas trouble & limonneux , comme il e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t. Et apres tout le te{{Info|ſ|forme ancienne longue de la lettre s minuscule}}moignage d’'''Euthimene''' , e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t condamné par le plus grand nombre. Il e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}toit permis de mentir quand on n’auoit point de connoi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ance des pays e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}trangers ; & alors on pouuoit facilement nous en enuoyer des fables. Mais aujourd’huy tous les riuages des mers les plus e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}loignées {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont remplis de vai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eaux de marchands, & pas vn ne nous apporte que le ''Nil'' {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oit de la couleur de la mer, ou que la mer ait vn autre gou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t. Quand nous aurions des rai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ons pour nous la per{{Info|ſ|forme ancienne longue de la lettre s minuscule}}uader , la nature nous empe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}cheroit de le croire par ce que le Soleil en attire ce qu’il y a de plus leger & de plus doux. Dauantage pourquoy ne croi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t-il pas en Hyuer , puis que la met en ce temps là peut e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tre agitée par des vents plus violents, que les Ethe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iens qui {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont tou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iours moderez. Que {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i le ''Nil'' venoit de la mer ''Atlantique'' , il couuriroit l’Egypte tout d’vn coup, & neantmoins il ne la couure que peu à peu.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=gEzVYlz3c3cC&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles%20iii%20volume%202&hl=fr&pg=PA1#v=onepage&q&f=true <u>Seneque Des Qvestions Natvrelles</u>], [https://books.google.fr/books?id=gEzVYlz3c3cC&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles%20iii%20volume%202&hl=fr&pg=PA3#v=onepage&q&f=true ''Livre Qvatriesme. De la Nege, de la Greſle, & de la Pluye.''], [https://books.google.fr/books?id=gEzVYlz3c3cC&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles%20iii%20volume%202&hl=fr&pg=PA37#v=onepage&q&f=true ''chap. II.''], traduction par [[w:Pierre_Du_Ryer|Pierre Du Ryer]], A Lyon, Chez Christofle Fovrmy, 1663</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div>
</div>
<div style="text-align: center; margin: 0 auto;">― ● ―</div>
==== Livre VI — Des tremblements de terre ====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">En prologue, '''Sénèque''' énonce le plan du livre, des causes des tremblements de terre et des peurs qu’ils provoquent, en s’appuyant sur celui de ''Campanie'' qui a récemment causé d’importants dégâts à ''Pompéi'' et à ''Herculanum''. Des chapitres IV à XX, de nombreuses théories sismiques sont présentées, la plupart liées au nom d’un philosophe qui les prône. Le feu, l’eau et l’air sont cités comme causes, et plusieurs d’entre-elles les combinent. À partir du chapitre XXIV, '''Sénèque''' développe sa propre opinion : l’air pénétrant, qui remplit complètement les cavités souterraines sous une forte pression, en est la cause. En épilogue, il explique à '''Lucilius''' quel comportement adopté en de telles situations, à savoir être courageux en ne craignant pas la mort</div>
===== <div style="text-align: center;">Chapitre VI.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Réfutation d’une théorie de '''Thalès''' de la Terre flottant sur l’eau, et témoignage d’une de ses preuves portant sur les tremblements de terre.</div>
:'''Texte latin'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''6.''' In aqua causam esse nec ab uno dictum est nec uno modo. '''Thales''' ''Milesius'' totam terram subiecto iudicat umore portari et innare, siue illud oceanum uocas, siue magnum mare, siue alterius naturae simplicem adhuc aquam et umidum elementum. Hac, inquit, unda sustinetur orbis uelut aliquod grande nauigium et graue his aquis quas premit. Superuacuum est reddere causas propter quas existimat grauissimam partem mundi non posse spiritu tam tenui fugacique gestari; non enim nunc de situ terrarum sed de motu agitur. Illud argumenti loco ponit aquas esse in causa quibus hic orbis agitetur, quod in omni maiore motu erumpunt fere noui fontes, sicut in nauigiis quoque euenit ut, si inclinata sunt et abierunt in latus, aquam sorbeant, quae in omni eorum onere quae uehit, si immodice depressa sunt, aut superfunditur aut certe dextra sinistraque solito magis surgit. Hanc opinionem falsam esse non est diu colligendum. Nam, si terra aqua sustineretur et ea aliquando concuteretur, semper moueretur, nec agitari illam miraremur sed manere; deinde tota concuteretur, non ex parte; numquam enim nauis dimidia iactatur. Nunc uero terrarum non uniuersarum sed ex parte motus est. Quomodo ergo fieri potest ut, quod totum uehitur, totum non agitetur, si eo quo uehitur agitatum est? — At quare aquae erumpunt? — Primum omnium saepe tremuit terra et nihil umoris noui fluxit. Deinde, si ex hac causa unda prorumperet, a lateribus terrae circumfunderetur, sicut in fluminibus ac mari uidemus incidere ut incrementum aquarum, quotiens nauigia desidunt, in lateribus maxime appareat. Ad ultimum non tam exigua fieret quam tu dicis eruptio nec uelut per rimam sentina subreperet, sed fieret ingens inundatio ut ex infinito liquore et ferente uniuersa.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/seneca.-cuestiones-naturales.-naturales-quaestiones.-vol.-ii-1979/page/n1/mode/2up <u>L. Annaei Senecae, Natvrales Qvaestiones</u>], [https://archive.org/details/seneca.-cuestiones-naturales.-naturales-quaestiones.-vol.-ii-1979/page/n135/mode/2up ''Liber Qvintvs - De terrae motv''], [https://archive.org/details/seneca.-cuestiones-naturales.-naturales-quaestiones.-vol.-ii-1979/page/n155/mode/2up ''chap. 6.''], texte établi par Carmen Codoñer Merino [[w:es:Carmen_Codoñer_Merino|(es)]], Consejo Superior de Investigaciones Científicas, Madrid, 1979</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">'''VI.''' In aqua causam esse, nec ab uno dictum est, nec uno modo. '''Thales''' ''Milesius'' totam terram subjecto judicat humore portari et innatare : sive illud Oceanum vocas, sive magnum mare, sive alterius naturæ simplicem adhuc aquam et humidum elementum. Hac, inquit, unda sustinetur orbis, velut aliquod grande navigium et grave his aquis, quas premit. Supervacuum est reddere causas, propter quas existimat, gravissimam partem mundi non posse spiritu tam tenui fugacique gestari ; non enim nunc de situ terrarum, sed de motu agitur. Illud argumenti loco ponit, aquas esse in causa, quibus hic orbis agitatur, quod in omui majore motu erumpunt fere novi fontes : sicut in navigiis quoque evenit, ut, si inclinata sunt et abiere in latus, aquam sorbeant, quæ in omni onere eorum quæ vehit, si immodice depressa sunt, aut superfunditur, aut certe dextra sinistraque solito magis surgit. Hanc opinionem falsam esse, non est diu colligendum ; nam, si terram aqua sustineret, et ea aliquando concuteretur : semper moveretur, nec agitari illam miraremur, sed manere. Tum tota concuteretur, non ex parte : nunquam enim navis dimidia jactatur. Nunc vero non terrarum universarum, sed ex parte motus est. Quomodo ergo fieri potest, ut quod totum vehitur, totum non agitetur, si eo quo vehitur, agitatum est ? At quare aquæ erumpunt ? Primum omnium sæpe tremuit terra, et nihil humoris novi fluxit. Deinde si ex hac causa unda prorumperet, a lateribus terræ circumfunderetur : sicut in fluminibus ac mari videmus accidere, ut incrementum aquarum, quoties navigia desidunt, in lateribus maxime appareat. Ad ultimum non tam exigua fieret quam dicit eruptio, nec velut per rimam sentina subreperet, sed fieret ingens inundatio, ut ex infinito liquore, et ferente universa.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PP9#v=onepage&q&f=true <u>Œuvres Complètes de Sénèque, Tome Quatrième</u>], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA420#v=onepage&q&f=true ''Questions Naturelles, De Sénèque à Lucilius - Livre Sixième.''], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA429#v=onepage&q&f=true ''chap. VI.''], traduction française de la collection Panckoucke, nouvelle édition très soigneusement revue par M. Charpentier et M. Félix Lemaistre, 1860</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''VI.''' Que l’eau soit cause des tremblements de terre, c’est ce qu’affirment divers auteurs et avec divers arguments. '''Thalès''' de ''Milet'' estime que le globe entier a pour support une masse d’eaux sur laquelle il flotte, et qu’on peut appeler Océan ou grande mer, ou élément jusqu’ici de nature simple, l’élément humide. Cette eau, dit-il, soutient la terre ; et l’immense navire pèse sur le liquide qu’il comprime. Il est superflu d’exposer les motifs qui font croire à '''Thalès''' que la partie de l’univers la plus pesante ne saurait porter sur une substance aussi ténue, aussi fugace que l’air : il ne s’agit pas maintenant de l’assiette du globe, mais de ses secousses. '''Thalès''' apporte en preuve de son système, que presque toujours les grandes secousses font jaillir des sources nouvelles, comme il arrive dans les navires qui, lorsqu’ils penchent et s’inclinent sur le flanc, sont envahis par l’eau ; toujours, s’il y a surcharge, l’eau vient couvrir le bâtiment, ou du moins s’élève à droite et à gauche plus que de coutume. La fausseté de cette opinion se démontre sans longs raisonnements. Si la terre était soutenue par l’eau, elle tremblerait quelquefois dans toute sa masse et toujours serait en mouvement ; ce ne serait pas son agitation qui étonnerait, mais son repos. Elle s’ébranlerait tout entière, non partiellement ; car ce n’est jamais la moitié seulement d’un navire qui est battue des flots. Or, les tremblements de notre terre ne sont pas universels, mais partiels. Comment serait-il possible qu’un corps porté tout entier par l’eau ne fût pas agité tout entier, quand ce fluide est agité ? « Mais d’où viennent les eaux qu’on a vues jaillir ? » D’abord, souvent la terre tremble, sans qu’il en sorte de nouvelles eaux. Ensuite, si telle était la cause de ces éruptions, elles n’auraient lieu qu’autour des flancs du globe ; ce que nous voyons arriver sur les fleuves et en mer : l’exhaussement de l’onde, à mesure que s’enfonce le navire, se remarque surtout aux flancs du bâtiment. Enfin l’éruption dont on parle ne serait pas si minime, et comme une voie d’eau qui s’infiltre par une fente légère ; l’inondation serait immense en raison de l’abîme infini sur lequel flotterait le monde.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[[s:Questions_naturelles_(trad._Baillard)|<u>Sénèque le Jeune</u>]], [[s:Questions_naturelles_(trad._Baillard)/Livre_6|''Livre VI.'']] ''chap. 6.'', traduction par [[s:Auteur:Joseph_Baillard|Joseph Baillard]], Hachette, 1914<br />(également disponible [https://remacle.org/bloodwolf/philosophes/seneque/questionsnaturelles6.htm ici])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">'''VI.''' Plusieurs philosophes ont prétendu que l’eau est la cause de ces secousses : ce que chacun explique à sa manière. '''Thalès''' de ''Milet'' prétend que le globe entier a pour support une masse d’eau sur laquelle il flotte ; peu importe qu’on donne à cet amas le nom d’Océan, de grande mer ou d’eau élémentaire, eau simple. Cette eau, dit-il, soutient la terre comme un grand vaisseau pesant sur le liquide qu’il comprime. Il est inutile d’exposer les raisons qui font croire à '''Thalès''' que le corps le plus pesant de la nature ne peut être soutenu par un fluide aussi délié et aussi rare que l’air : car il s’agit ici des tremblements de terre et non de l’assiette du globe. La grande raison de '''Thales''' pour faire de l’eau la cause des secousses de la terre, c’est que, dans tout tremblement considérable, jaillissent des eaux nouvelles ainsi les vaisseaux se remplissent d’eau quand ils penchent d’un côté ; chargés à l’excès, ou ils sont submergés, ou ils s’enfoncent à droite et à gauche plus profondément dans la mer. Il ne faut pas longtemps discuter pour voir la fausseté de cette opinion. Si la terre était soutenue par les eaux, elle serait quelquefois fortement ébranlée, mais de plus elle serait toujours flottante, et il faudrait s’étonner non de son agitation , mais de son repos ; enfin, au lieu d’être ébranlée en partie, elle le serait tout entière : car jamais la moitié d’un vaisseau n’est battue des flots. Or, on sait que les secousses de la terre sont partielles et non universelles : comment se ferait-il donc que ce qui est entièrement porté par les eaux ne fût pas entièrement agité, tandis que les eaux mêmes le sont en totalité ? Mais, dit-on, qui fait jaillir les eaux ? D'abord, souvent la terre tremble sans qu’il se produise des eaux nouvelles ; ensuite, si telle était la cause de ces éruptions, les eaux se répandraient latéralement autour de la terre. Ainsi, par exemple, quand un vaisseau s’enfonce ou dans la mer ou dans les fleuves, c’est vers les bords surtout que l’accroissement devient sensible. Enfin les sources qui jaillissent ne seraient pas si peu considérables ; on ne pourrait pas les comparer à une voie d’eau qui pénètre par les fentes du fond de cale : ce serait une inondation immense comme l’abîme infini sur lequel flotterait le monde.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PP9#v=onepage&q&f=true <u>Œuvres Complètes de Sénèque, Tome Quatrième</u>], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA420#v=onepage&q&f=true ''Questions Naturelles, De Sénèque à Lucilius - Livre Sixième.''], [https://books.google.fr/books?id=xZtfAAAAcAAJ&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles&hl=fr&pg=PA429#v=onepage&q&f=true ''chap. VI.''], traduction française de la collection Panckoucke, nouvelle édition très soigneusement revue par M. Charpentier et M. Félix Lemaistre, 1860</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">'''Chap. VI.'''<br />''Si l’eau e[[w:S_long|{{Info|ſ|forme ancienne longue de la lettre s minuscule}}]]<nowiki>t</nowiki> la cau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e des tréblemés de terre.''<br /><p style="text-align: justify; text-indent: 15px;">Ce n'e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t pas vn homme {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eul qui a dit , que l’eau e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}toit cau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e du tremblement de la terre ; & l’on ne l’a pas dit d’vne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eule façó. '''Thales''' ''Mile{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ien'' a crû que toute la terre e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}toit portée {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur l’eau , & qu’elle y nageoit, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oit que vous appelliez cette eau Ocean, ou que vous l’appelliez grade mer, ou vne eau d’vne autre nature , eau {{Info|ſ|forme ancienne longue de la lettre s minuscule}}imple , element humide. C’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur cette eau, dit-il, que le monde e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tenu, comme quelque vai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eau d’vne grandeur deme{{Info|ſ|forme ancienne longue de la lettre s minuscule}}urée , qui charge les eaux qui le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tiennent. Il {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eroit inutile de rapporter les rai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ons qui luy {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont croire que la plus pe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ante partie du móde ne peut e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tre {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tenuë par l’air qui e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ubtil, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i fluide & {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i delié ; & d’ailleurs, il ne s’agit pas icy de l’a{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}iete de la terre , mais du tremblement de la terre. Ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i pour preuue que les eaux {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont cau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e que la terre tremble , il dit qu’il ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e fait pre{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que point de grands tremblemens de terre, qu’on n’en voye {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ortir en{{Info|ſ|forme ancienne longue de la lettre s minuscule}}uitte de nouuelles {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ources; que la terre re{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}emble en cela aux vai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eaux qui ne peuuent pancher d’vn co{{Info|ſ|forme ancienne longue de la lettre s minuscule}}té, qu’ils ne pui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ent de l’eau, qui {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e re{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pand {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur toutes les cho{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es qu’ils portent , {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i elles {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont trop enfoncées; ou qui s’éleue de part & d’autre à la gauche , & à la droite. Il n’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t pas besoin d’vn long di{{Info|ſ|forme ancienne longue de la lettre s minuscule}}cours pour montrer la fau{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eté de cette opinion ; car {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i l’eau {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tenoit la terre, quelquesfois elle trembleroit toute entiere, & {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eroit tou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iours en mouuement; & nous ne nous e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tonnerions point de la voir remuer, mais de la voir ferme & inébranlable. Elle trembleroit toute entiere , & non pas en partie , car vn vai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eau n’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t iamais agité par vne moitié {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eulement ; & apres tout nous voyons que le tremblement ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e fait pas de toute la terre , mais {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eulement d’vne partie. Comment donc {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e peut-il faire que ce qui e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t porté tout entier ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oit pas entierement agité , {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i la cho{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e me{{Info|ſ|forme ancienne longue de la lettre s minuscule}}me qui porte e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}meuë & agitée ? Mais pourquoy {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ort-il de l’eau apres vn tremblement de terre ? Premierement la terre a {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ouuent tremblé {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ans qu’on en ayt veu {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ortir de nouuelles {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ources. D’ailleurs {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i l’eau {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ortoit par cette rai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}on elle {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e re{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pandroit par les co{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tez de la terre , comme nous voyons dans les fleuues & dans la mer , où lors que le vai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eau s’enfonce on remarque que l’eau s'éleue , principalement par les co{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tez. Enfin ces eaux ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ortiroient pas en {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i petite quantité, ny par vne fi petite ouuerture , mais il {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eroit vne grande inondation, comme procedant de cette abondance d’eaux qui {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tiennent tout l’vniuers.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=gEzVYlz3c3cC&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles%20iii%20volume%202&hl=fr&pg=PA1#v=onepage&q&f=true <u>Seneque Des Qvestions Natvrelles</u>], [https://books.google.fr/books?id=gEzVYlz3c3cC&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles%20iii%20volume%202&hl=fr&pg=PA141#v=onepage&q&f=true ''Livre Sixiesme. Des tremblemens de terre.''], [https://books.google.fr/books?id=gEzVYlz3c3cC&newbks=1&newbks_redir=0&dq=seneque%20questions%20naturelles%20iii%20volume%202&hl=fr&pg=PA164#v=onepage&q&f=true ''chap. VI.''], traduction par [[w:Pierre_Du_Ryer|Pierre Du Ryer]], A Lyon, Chez Christofle Fovrmy, 1663</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Pline_l%27Ancien|'''Pline l’Ancien''']] [[#Pline|<span id="Pline_back"><sup>'''I'''</sup></span>]] ==
<p style="text-align: right;">([[w:23|23]]/[[w:24|24]], à [[w:Côme|''Novum Comum'']] ou [[w:Vérone|Vérone]] — [[w:79|79]], à [[w:Stabies|Stabies]], [[w:Mort_de_Pline_l%27Ancien|mort]] par asphyxie près de [[w:Pompéi|Pompéi]], lors de l’éruption du [[w:Vésuve|Vésuve]], en voulant observer le phénomène au plus près et en désirant porter secours aux victimes, alors en poste à [[w:Misène|''Misène'']] en tant que Préfet commandant la flotte militaire ''romaine'') <sup>[[w:Ier_siècle|⏳]]</sup> [[s:Auteur:Pline_l’Ancien|<sup>📚</sup>]] [https://books.google.fr/books?id=tRsuD3WJT-UC&newbks=1&newbks_redir=0&lpg=PA3&dq=bibliogroup%3A%22Dictionnaire%20des%20philosophes%20antiques%22&hl=fr&pg=PA876#v=onepage&q&f=true {{Info|<sup>🔍</sup>|Dictionnaire des Philosophes Antiques, publié sous la direction de Richard Goulet, Volume Va, §204 - Plinius Secundus (Caius —)}}]
<div style="text-align: justify; margin: 0 1em; text-indent: 15px">Haut fonctionnaire militaire et civique, issu de l’[[w:Chevalier_romain|''orde équestre'']], et écrivain prolifique dans de très nombreux domaines.</div>
{{Boîte déroulante début|titre=NdA Pline l’Ancien|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Pline_back|<span id="Pline"><sup>I</sup></span>]] [[w:Nom_romain|Tria Nomina]] en latin {{Info|Caius|praenomen, nom individuel du citoyen romain}} {{Info|Plinius|nomen, nom de famille}} {{Info|Secundus|cognomen, surnom héréditaire, servant à distinguer les diverses branches d’une même gens}}'''<br/><br/></div>
{{Boîte déroulante fin}}
=== [[w:Histoire_naturelle_(Pline_l'Ancien)|Histoire naturelle]] ===
<p style="text-align: right;">[[s:Histoire_naturelle_(Pline)|📚]]
<div style="text-align: justify; margin: 0 1em; text-indent: 15px">Ouvrage de 37 livres dédié à l’empereur [[w:Titus_(empereur_romain)|'''Titus''']] [[#Titus|<span id="Titus_back"><sup>'''I'''</sup></span>]], dont il a été le ''{{Lang|la|contubernium}}'' pendant son service en tant que commandant des armées du ''Rhin'' en ''Germanie'' en [[w:47|47]]. '''Pline''' définit lui-même son enquête [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Histoire/Enquête_I|<sup>🔄</sup>]] sur la nature comme une reproduction de la vie — ''{{Lang|la|rerum natura, hoc est uita narratur}}'' (Livre I, Préface, 10), qu’il inscrit dans la tradition encyclopédique [[#encyclopédie_back|<sup>⤴️</sup>]] grecque mais s’en différencie par son exhaustivité : ''{{Lang|la|Jam omnia attingenda, quæ Græci}}'' ''{{Lang|grc|τάς έγχυχλοπαιδείας}}'' ''{{Lang|la|vocant : et tamen ignota aut incerta ingeniis facta; alia vero ita multis prodita, ut in fastidium sint adducta}}'' (Préface, 11). Il a, dans ce but, compilé « vingt mille faits dignes d’intérêt, tirés de la lecture d’environ deux mille volumes, [...] provenant de cent auteurs de choix » — ''{{Lang|la|Viginti millia rerum dignarum cura ex lectione voluminum circiter duum millium, [...] ex exquisitis auctoribus centum}}'' (Préface, 13).</div>
{{Boîte déroulante début|titre=NdA Titus|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Titus_back|<span id="Titus"><sup>I</sup></span>]] Du nom propre latin Titus [[wikt:en:Titus#Latin|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;">Commandant militaire, notamment pendant la [[w:Premi%C3%A8re_guerre_jud%C3%A9o-romaine|''première guerre judéo-romaine'']], au cours de laquelle il prend ''Jérusalem'' que ses troupes mettent à sac et fait détruire le [[w:Second_temple_de_Jérusalem#Destruction|''Second Temple'']], et empereur ''romain'', de la dynastie des [[w:Flaviens|''Flaviens'']], de [[w:79|79]] à [[w:81|81]].<br /><p style="text-align: right; margin: 0 2em;">(30 décembre [[w:39|39]] , ''Rome'' — 13 septembre [[w:81|81]], mort par fièvre selon [[w:Suétone|Suétone]] [http://remacle.org/bloodwolf/historiens/suetone/titus.htm <sup>VdDC, Titus</sup>] ou par empoisonnement avec du venin de [[w:Aplysia|''lièvre marin'']] par son propre frère [[w:Domitien|Domitien]] selon [[w:Philostrate_d%27Ath%C3%A8nes|Philostrate]] [https://remacle.org/bloodwolf/roman/philiostrate/apollonius6.htm <sup>AdT, l. VI, chap. 32</sup>])<sup>[[w:Ier_siècle|⏳]]</sup>'''<br/><br/></div>
{{Boîte déroulante fin}}
==== Livre II ====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Enquête sur l’astronomie et la physique du monde, basée sur les quatre éléments : air, terre, eau et feu.</div>
===== <div style="text-align: center;">Chapitre IX.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage de la première prédiction grecque d’une éclipse solaire (ou lunaire selon les traductions) par '''Thalès'''.</div>
:'''Texte latin'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''IX.''' Et rationem quidem defectus utriusque primus ''Romani'' generis in vulgus extulit '''Sulpicius Gallus''', qui consul cum '''Marcello''' fuit, sed tum tribunus militum, sollicitudine exercitu liberato, pridie quam '''Perseus''' rex superatus a '''Paulo''' est, in concionem ab imperatore productus ad prædicendam eclipsim, mox et composito volumine. Apud Græcos autem investigavit primus omnium '''Thales''' ''Milesius'', Olympiadis XLVIII anno quarto, prædicto solis defectu, qui '''Alyatte''' rege factus est, Urbis conditæ; anno CLXX. Post eos utriusque sideris cursum in sexcentos annos præcinuit '''Hipparchus''', menses gentium, diesque et horas, ac situs locorum, et visus populorum complexus, ævo teste, haud alio modo, quam consiliorum naturæ particeps. Viri ingentes supraque mortalium naturam, tantorum numinum lege deprehensa, et misera hominum mente absoluta, in defectibus scelera aut mortem aliquam siderum pavente (quo in metu fuisse '''Stesichori''' et '''Pindari''' vatum sublimia ora palam est deliquio Solis), et in Luna veneficia arguente mortalitate, et ob id crepitu dissono auxiliante. Quo pavore, ignarus causæ, '''Nicias''' ''Atheniensium'' imperator, veritus classem portu educere, opes eorum afflixit. Macti ingenio este, cæli interpretes, rerumque naturæ capaces, argumenti repertores, quo deos hominesque vinxistis. Quis enim hæc cernens, et statos siderum (quoniam ita placuit appellare) labores, non suæ necessitati mortalis genitus ignoscat ? Nunc confessa de iisdem breviter atque capitulatim attingam, ratione admodum necessariis locis strictimque reddita : nam neque instituti operis talis argumentatio est : neque omnium rerum afferri posse causas, minus mirum est, quam consfare in aliquibus.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/b24875958_0001/page/n7/mode/2up <u>Histoire Naturelle de Pline.</u>], [https://archive.org/details/b24875958_0001/page/98/mode/2up ''Livre II.''], [https://archive.org/details/b24875958_0001/page/106/mode/2up ''chap. IX.''], texte corrigé par [[w:Émile_Littré|M. É. Littré]], à partir de celui de [[w:Jean_Hardouin|Hardouin]], Librairie de Firmin-Didot et C<sup>ie</sup>, Paris, 1883<br />(également disponible une édition 1848 [[s:Page:Pline_l'ancien_-_Histoire_naturelle,_Littré,_T1_-_1848.djvu/130|ici]] et 1829 [https://gallica.bnf.fr/ark:/12148/bpt6k5773334c/f45.item là])</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''IX.''' Le premier ''Romain'' qui exposa publiquement la théorie des éclipses du soleil et de la lune est [[w:Caius_Sulpicius_Gallus|'''Sulpicius Gallus''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Caius_Sulpicius_Gallus_back|<sup>🔄</sup>]], qui fut consul avec [[w:Marcus_Claudius_Marcellus_(consul_en_-166)|'''Marcellus''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Marcellus-166_back|<sup>🔄</sup>]], mais qui alors était tribun militaire. La veille du jour où [[w:Persée_(roi)|'''Persée''']] [[#Persée_(roi)|<span id="Persée_(roi)_back"><sup>'''I'''</sup></span>]] fut défait par [[w:Lucius_Æmilius_Paullus_Macedonicus|'''Paul-Emile''']] [[#Lucius_Æmilius_Paullus_Macedonicus|<span id="Lucius_Æmilius_Paullus_Macedonicus_back"><sup>'''II'''</sup></span>]] il parut par ordre du général, afin de prévenir les alarmes de l’armée, devant les troupes assemblées pour annoncer l’éclipse qui allait survenir; peu de temps après, il composa un livre sur ce sujet. Le premier qui s’en occupa chez les ''Grecs'' fut '''Thalès''' de ''Milet'', dans la quatrième année de la quarante-huitième olympiade (an 585 av. J. C. [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#éclipse_back|<sup>🔄</sup>]]), l’an 170 de la fondation de ''Rome'', et prédit une éclipse de lune qui arriva sous le roi [[w:Alyatte_II|'''Alyatte''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Alyatte_back|<sup>🔄</sup>]]. Après eux, [[w:Hipparque_(astronome)|'''Hipparque''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Hipparque_back|<sup>🔄</sup>]] dressa pour six cents ans la table du cours du soleil et de la lune, déterminant les mois des divers calendriers, les jours, les heures, les localités et les aspects, suivant les contrées. Le cours des ans ne lui a donné aucun démenti, et il semble avoir été admis aux conseils de la nature. Génies puissants et élevés au dessus de l’humanité, ils ont découvert la loi qui régit ces grandes divinités, et ils ont délivré de ses craintes l’esprit misérable des hommes, qui dans les éclipses, tantôt croyaient voir une influence malfaisante ou une espèce de mort des astres, crainte qui, comme on sait, a, pour l’éclipse du soleil, troublé [[w:Stésichore|'''Stésichore''']] [[#Stésichore|<span id="Stésichore_back"><sup>'''III'''</sup></span>]] et [[w:Pindare|'''Pindare''']] [[#Pindare|<span id="Pindare_back"><sup>'''IV'''</sup></span>]], poètes sublimes, et tantôt attribuaient l’obscurcissement de la lune à des maléfices, et lui venaient en aide par un bruit dissonnant. Redoutant ce phénomène, dont il ignorait la cause, [[w:Nicias|'''Nicias''']] [[#Nicias|<span id="Nicias_back"><sup>'''V'''</sup></span>]], général des ''Athéniens'', n’osa pas faire sortir la flotte du port de [[w:Syracuse#Antiquité|''Syracuse'']], et ruina la puissance de sa patrie. Redoublez de génie, interprètes du ciel, vous dont l’intelligence, embrassant la nature, a inventé des théories qui ont créé un lien entre les dieux et les hommes [[#Vicistis_JH|<span id="Vicistis_JH_back"><sup>'''1'''</sup></span>]] ! A la vue de ce spectacle, à la vue des labeurs (puisque c’est le nom qu’on a voulu donner aux éclipses), des labeurs réguliers auxquels les astres sont soumis, quel mortel ne pardonnerait à la nécessité sous laquelle il est né ? Maintenant je vais parler, d’une manière brève et sommaire, des points sur lesquels on est d’accord en cette matière. Je ne donnerai que de courtes explications, et là où il sera tout à fait nécessaire; car les explications n’entrent pas dans le plan de cet ouvrage, et il n’y a pas moins de mérite à énumérer les causes de toutes choses qu’à s’appesantir sur quelques-unes.</div>
<table cellspacing=15 align=center style="margin: 0 4em; font-size:85%;">
<tr>
<td style="text-align: justify; margin: 0 4em;">'''[[#Vicistis_JH_back|<span id="Vicistis_JH"><sup>1</sup></span>]] Vicistis Vulg. — Vinxistis cod. Dalech. — Vinxistis me parait meilleur. Comp. ce que dit Pline plus loin, ch. 24, sur l’affinité de l’esprit humain avec les astres.'''</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/b24875958_0001/page/n7/mode/2up <u>Histoire Naturelle de Pline.</u>], [https://archive.org/details/b24875958_0001/page/98/mode/2up ''Livre II.''], [https://archive.org/details/b24875958_0001/page/106/mode/2up ''chap. IX.''], texte corrigé par [[w:Émile_Littré|M. É. Littré]], à partir de celui de [[w:Jean_Hardouin|Hardouin]], Librairie de Firmin-Didot et C<sup>ie</sup>, Paris, 1883<br />(édition 1848 également disponible [[s:Page:Pline_l'ancien_-_Histoire_naturelle,_Littré,_T1_-_1848.djvu/130|ici]])</div>
{{Boîte déroulante début|titre=NdA de trad. Jean Hardouin 1883|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Persée_(roi)_back|<span id="Persée_(roi)"><sup>I</sup></span>]] Du nom propre grec ancien Περσεύς / Perseús[[wikt:en:Περσεύς#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px">Dernier roi de [[w:Royaume_de_Mac%C3%A9doine|''Macédoine'']] de la dynastie des [[w:Antigonides|''Antigonides'']], vaincu en [[w:-168|-168]] à la [[w:bataille de Pydna|bataille de ''Pydna'']] à l’issue de la [[w:troisième guerre macédonienne|''troisième guerre macédonienne'']], causant la disparition du ''Royaume de Macédoine''.<br /><p style="text-align: right; margin: 0 2em;">([[w:Années_212_av._J.-C.|-212]]<sup>[[w:IIIe_siècle_av._J.-C.|⏳]]</sup>, [[w:Pella_(cité_antique)|''Pella'']], au nord de l’actuelle ''Grèce'' — [[w:Années_166_av._J.-C.|-166]]<sup>[[w:IIe_siècle_av._J.-C.|⏳]]</sup>, [[w:Alba_Fucens|''Alba Fucens'']], au centre de l’actuelle ''Italie'')
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Lucius_Æmilius_Paullus_Macedonicus_back|<span id="Lucius_Æmilius_Paullus_Macedonicus"><sup>II</sup></span>]] [[w:Nom_romain|Tria Nomina]] en latin {{Info|Lucius|praenomen, nom individuel du citoyen romain}} {{Info|Æmilius|nomen, nom de famille}} {{Info|Paullus|cognomen, surnom héréditaire, servant à distinguer les diverses branches d’une même gens}}, surnommé [[wikt:Macedonicus#Latin|Macedonicus]] par le [[w:Sénat_romain|''Sénat'']] à la suite de sa victoire;<br /><p style="margin: 0 2em; text-indent: 15px">Homme politique ''romain'', consul à 2 reprises en [[w:Années_182_av._J.-C.|-182]] et [[w:Années_169_av._J.-C.|-169]]. Il remporta la victoire contre le ''royaume de Macédoine'' à ''Pydna'' en battant le roi Persée [[#Persée_(roi)|<sup>I</sup>]], ce qui mit fin à la dynastie des ''Antigonides''.<br /><p style="text-align: right; margin: 0 2em;">([[w:Circa|{{Info|''ca.''|Circa, locution latine que l’on emploie pour indiquer l’approximation d’une date}}]] [[w:Années_230_av._J.-C.|-230]]<sup>[[w:IIIe_siècle_av._J.-C.|⏳]]</sup>, ''Rome'' — ''ca.'' [[w:Années_160_av._J.-C.|-160]]<sup>[[w:IIe_siècle_av._J.-C.|⏳]]</sup>, ''Rome'')
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Stésichore_back|<span id="Stésichore"><sup>III</sup></span>]] Du nom propre grec ancien Στησίχορος /Stēsíkhoros [[wikt:en:Στησίχορος#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;">➥ du verbe ἵστημι /hístēmi, « 1. (voix transitive, active des temps présent, imparfait, futur et 1er aoriste) : • Faire se tenir debout, se tenir debout; • Arrêter, rester, vérifier; • Mettre en place : - Faire monter, élever, réveiller, remuer; - Nommer, désigner; - Établir, instituer; • Mettre dans la balance, peser. 2. (voix intransitive, moyenne et passive, voix active du 2e aoriste, parfait et plus-que-parfait) : • Se tenir debout; • Se tenir immobile : (au sens figuré) Rester ferme; • Être dressé ou debout, se lever, s’élever : - (en général) Se lever, commencer; - (en marquant le pas) Être; - Être désigné. »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ + du nom commun χορός / khorós, « 1. Danse en rond. 2. Danse accompagnée de chant, danse chorale. 3. Chœur, chorale, groupe de chanteurs et de danseurs. 4. Groupe, troupe. 5. Rangée. 6. Lieu de danse. 7. (théâtre) Chœur »;<br /><p style="margin: 0 2em; text-indent: 15px">Poète lyrique grec, considéré comme l’un des [[w:Neuf_lyriques_grecs|''neuf poètes lyriques'']] de la Grèce antique.<br /><p style="text-align: right; margin: 0 2em;">([[w:Circa|{{Info|''ca.''|Circa, locution latine que l’on emploie pour indiquer l’approximation d’une date}}]] [[w:Années_630_av._J.-C.|-630]]<sup>[[w:VIIe_siècle_av._J.-C.|⏳]]</sup>, [[w:Metauria|''Metauria'']], colonie de la [[w:Grande-Grèce|''Grande-Grèce'']], au sud de la région de [[w:Calabre|''Calabre'']], au sud de l’Italie — ''ca.'' [[w:Années_555_av._J.-C.|-555]]<sup>[[w:VIe_siècle_av._J.-C.|⏳]]</sup>, [[w:Catane|''Catane'']], colonie de la ''Grande-Grèce'', à l’est de la [[w:Sicile|''Sicile'']])
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Pindare_back|<span id="Pindare"><sup>IV</sup></span>]] Du nom propre grec ancien Πίνδᾰρος /Píndaros [[wikt:en:Πίνδαρος#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px">Poète lyrique grec, considéré comme l’un des [[w:Neuf_lyriques_grecs|''neuf poètes lyriques'']] de la Grèce antique.<br /><p style="text-align: right; margin: 0 2em;">([[w:Années_518_av._J.-C.|-518]]<sup>[[w:VIe_siècle_av._J.-C.|⏳]]</sup>, [[w:Cynocéphales|''Cynocéphales'']], cité grecque située près de [[w:Thèbes_(Grèce)|''Thèbes'']], en [[w:Béotie|''Béotie'']] — [[w:Années_438_av._J.-C.|-438]]<sup>[[w:Ve_siècle_av._J.-C.|⏳]]</sup>, [[w:Árgos|''Árgos'']], cité grecque de la région de l’[[w:Argolide|''Argolide'']], à l’est de la [[w:Péloponnèse|''péninsule du Péloponnèse'']])
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Nicias_back|<span id="Nicias"><sup>V</sup></span>]] Du nom propre grec ancien Νῑκίᾱς /Nīkíās [[wikt:en:Νικίας#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;">➥ du nom commun νίκη / níkē [[wikt:en:νίκη#Ancient_Greek|(en)]], « 1. Le fait de gagner : la victoire, le succès [avec le génitif "sur, dans quelque chose"] : • Les choses gagnées dans la victoire, les fruits de la victoire; • La supériorité, l’avantage. »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ + du suffixe nominal masculin -ίας / -ías [[wikt:en:-ίας#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px">Homme politique et général ''athénien'' durant la [[w:Guerre_du_Péloponnèse|''guerre du Péloponnèse'']], qui oppose la [[w:Ligue_de_Délos|''ligue de Délos'']], menée par ''Athènes'', et la [[w:Ligue_du_Péloponnèse|''ligue du Péloponnèse'']], sous l’[[w:Hégémonie|hégémonie]] de ''Sparte'' de [[w:Années_431_av._J.-C.|-431]] à [[w:Années_404_av._J.-C.|-404]]. Sa supersition liée à une éclipse lunaire, s’étant produite lors de l’[[w:Expédition_de_Sicile|''expédition de Sicile'']], est également relatée par [[w:Thucydide|Thucydide]] [http://remacle.org/bloodwolf/historiens/thucydide/livre7.htm#L <sup>{{Info|HdlgdP|Histoire de la guerre du Péloponnèse}} l.VII, §.L</sup>] et [[w:Plutarque|Plutarque]] [[#Plutarque_back|<sup>⤵️</sup>]] [http://remacle.org/bloodwolf/historiens/Plutarque/supestition.htm#23 <sup>{{Info|DlS|De la Superstition}} l.I</sup>].<br /><p style="text-align: right; margin: 0 2em;">([[w:Circa|{{Info|''ca.''|Circa, locution latine que l’on emploie pour indiquer l’approximation d’une date}}]] [[w:Années_470_av._J.-C.|-470]], ''Athènes'' — ''ca.'' [[w:Années_413_av._J.-C.|-413]], ''Syracuse'')<sup>[[w:Ve_siècle_av._J.-C.|⏳]]</sup>'''<br/><br/></div>
{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: center; margin: 0 2em;">Des découvertes astronomiques : part de chaque observateur dans la science.<br /><p style="text-align: justify; text-indent: 15px;">'''IX.''' '''Sulpicius Gallus''' [[#Sulpicius_Gallus_AdG|<span id="Sulpicius_Gallus_AdG_back"><sup>'''1'''</sup></span>]] fut le premier ''Romain'' qui expliqua au vulgaire la raison des éclipses de soleil et de lune. Il fut consul avec '''Marcus Marcellus''' ; mais il n’était que tribun militaire lorsque la veille de la victoire que '''Paul Emile''' remporta sur '''Persée''' [[#Pridie_quam_Perses_rex_AdG|<span id="Pridie_quam_Perses_rex_AdG_back"><sup>'''2'''</sup></span>]], son général le fit paraître devant l’armée assemblée, pour lui annoncer l’éclipse qui allait arriver, et la délivrer de l’alarme qu’elle aurait pu en concevoir. Il composa bientôt après un volume sur ce sujet. Parmi les ''Grecs'', '''Thalès''' de ''Milet'' [[#Primus_omnium_Thales_AdG|<span id="Primus_omnium_Thales_AdG_back"><sup>'''3'''</sup></span>]] dirigea le premier ses recherches sur ce phénomène, et la quatrième année de la 48e olympiade, qui répond à l’an 170 [[#Anno_CLXX_AdG|<span id="Anno_CLXX_AdG_back"><sup>'''4'''</sup></span>]] de ''Rome'', il prédit l’éclipse de soleil qui eut lieu sous le règne d’'''Alyatte''' [[#Alyatte_rege_AdG|<span id="Alyatte_rege_AdG_back"><sup>'''5'''</sup></span>]]. Après eux, '''Hipparque''' dressa des tables du cours de ces deux astres pour six cents ans [[#In_sexcentos_annos_AdG|<span id="In_sexcentos_annos_AdG_back"><sup>'''6'''</sup></span>]] : mois, heures, jours, situations respectives des lieux, aspects du ciel selon les diverses nations [[#Menses_gentium_etc_AdG|<span id="Menses_gentium_etc_AdG_back"><sup>'''7'''</sup></span>]], tout y est compris, tout a été vérifié par le temps [[#Aevo_teste_AdG|<span id="Aevo_teste_AdG_back"><sup>'''8'''</sup></span>]]; on croirait l’astronome admis au conseil de la nature. Génies vastes et plus qu’humains, d’avoir ainsi surpris la loi de ces deux grandes divinités [[#Numinum_AdG|<span id="Numinum_AdG_back"><sup>'''9'''</sup></span>]], et affranchi d’effroi la malheureuse espèce humaine, qui tremblait en voyant dans chaque éclipse l’annonce de quelque grand crime, ou craignait la mort des astres [[#In_defectibus_scelera_etc_AdG|<span id="In_defectibus_scelera_etc_AdG_back"><sup>'''10'''</sup></span>]] (effroi dont '''Stésichore''' et '''Pindare''' [[#Pindari_AdG|<span id="Pindari_AdG_back"><sup>'''11'''</sup></span>]], ces poètes sublimes, ne furent point exempts dans les éclipses de soleil), ou qui attribuait à des enchantemens celles de la lune, et venait à son secours en faisant un bruit discordant [[#Crepitu_dissono_AdG|<span id="Crepitu_dissono_AdG_back"><sup>'''12'''</sup></span>]]. C’est pour en avoir ignoré la cause, que, frappé de cette même terreur, '''Nicias''' [[#Nicias_AdG|<span id="Nicias_AdG_back"><sup>'''13'''</sup></span>]], général des ''Athéniens'', n’osa pas faire sortir sa flotte du port, et causa la ruine de leur puissance. Gloire à vous, interprètes du ciel, génies aussi étendus que la nature, inventeurs d’une science qui enchaîne à une même destinée les dieux et les mortels ! Quel est donc l’homme qui, voyant les astres en travail (pour me servir du nom qu’il a plu de donner aux crises qu’ils, subissent périodiquement), ne se soumettra pas à sa destinée?<br /><p style="text-align: justify; text-indent: 15px;">Je vais maintenant toucher brièvement et sommairement les points sur lesquels on est d’accord dans cette matière, et j’en rendrai raison en passant, lorsque cela sera tout-à-fait nécessaire; car un développement de preuves n’est pas le but de l’ouvrage que j’ai entrepris, et il n’y a pas, je pense, moins de mérite à pouvoir rendre raison de toutes choses, qu’à s’arrêter à en prouver quelques-unes.</div>
{{Boîte déroulante début|titre=Notes du traducteur|alignT=center}}
<div style="text-align: justify; border: 2px; border-radius:15px; font-size:85%;"><br/>
<table cellspacing=15 align=center style="margin: 0 4em;">
<tr>
<td style="text-align: justify; margin: 0 4em; text-indent: 15px">'''[[#Sulpicius_Gallus_AdG_back|<span id="Sulpicius_Gallus_AdG"><sup>1</sup></span>]] [[w:Tite-Live|Tite-Live]], XLIV, 37, [[w:Quintilien|Quintilien]], I, 10, [[w:Plutarque|Plutarque]] [[#Plutarque_back|<sup>⤵️</sup>]], [[w:Vies_parallèles|''Vie de Paul Emile'']], [[w:Frontin|Frontin]], I, etc., prétendent, comme Pline, que Sulpicius Gallus prédit l’éclipse anx soldats romains. [[w:Cicéron|'''Cicéron''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Cicéron_back|<sup>🔄</sup>]] ([[w:De_Republica|''Répub.'']], I, 15 , page 44, ''édit. Maj.'') dit au contraire que l’éclipse était déjà arrivée lorsque Sulpicius Gailus commençait à s’efforcer d’ôter aux soldats romains la terreur qu’ils avaient conçue de cet événement, en leur expliquant les causes des éclipses.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Pridie_quam_Perses_rex_AdG_back|<span id="Pridie_quam_Perses_rex_AdG"><sup>2</sup></span>]] Selon Tite-Live (XLIV, 37), l’éclipse eut lieu dans la soirée du 3 septembre, cent huit ans avant J.-C., entre sept et dix heures (''ab hora secunda usque ad quartam noctis, quam pridie nonas sept, secula est dies''). M. [[w:Christian_Ludwig_Ideler|Ideler]] (''Chronologie'', II, 104) a calculé cette éclipse. Il a trouvé, comme M. de Nauze, que, selon le calendrier Julien, elle arriva dans la soirée du 21 juin de l’an 168 avant J.-C. à Rome, la lune commença à s’éclipser vers 5h.44’ du soir ; depuis 6h.51’ jusqu’à 8h.18’, la lune fut totalement éclipsée, ; à 9h.,24’, la lune ne fut plus obscurcie du tout. En Macédoine, tous ces phénomènes arrivèrent 39 minutes plus tard. Le 21 juin, le soleil se coucha à Rome et en Macédoine vers 7h.33’, et s’y montra alors à 44 1/2’ h. équatoriales. Ainsi, la première heure de la nuit finissait vers 8h.17’, la seconde vers 9h.2’, la troisième vers 9h.46’, la quatrième vers 10h.31’. La lune fut donc éclipsée totalement au moment où elle se leva dans la Macédoine, et cette éclipse totale y finit dans la seconde heure de la nuit ; au milieu de la quatrième, la lune ne fut plus obscurcie du tout. S’il est vrai, que cette éclipse lunaire, comme Pline, Tite-Live et d’autres le disent, fut prédite par Sulpicius Gallus, l’on devrait avouer que ce Romain s’entendait très-bien au calcul des éclipses lunaires. Mais les récits de Cicéron et de [[w:Valère_Maxime|Valère-Maxime]] ne seraient-ils pas plus vrais que ceux de Pline et de Tite-Live ?'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Primus_omnium_Thales_AdG_back|<span id="Primus_omnium_Thales_AdG"><sup>3</sup></span>]] Le même fait est rapporté par [[w:Hérodote|Hérodote]] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Hérodote_back|<sup>🔄</sup>]], I, 74, par [[w:Diogène_Laërce|Diogène Laërce]] [[#Diogène_Laërce_back|<sup>⤵️</sup>]], I, 6 , par [[w:Clément_d'Alexandrie|Clément d’Alexandrie]] [[#Clément_d'Alexandrie_back|<sup>⤵️</sup>]], ''Strom.'', I, page 302 , par Plutarque, ''Opinions des Philosophes'', II, 24, par [[w:Jean_Tzétzès|Tzetzès]], ''Chil.'' II, v. 869, et par Hardouin.<br /><p style="text-align: justify; text-indent: 15px;">Oltmann a publié une dissertation dans laquelle, à l’aide des tables astronomiques les plus modernes, il est arrivé à ce résultat, que l’éclipse solaire dont il est question ici eut lieu le 3o septembre 610 ans avant J.-C. L’éclipse était totale pour les environs de la ville d’[[w:Erzurum|Érzerum]] sur le [[w:Kızılırmak_(fleuve)|Halys]] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Halys_back|<sup>🔄</sup>]], où [[w:Volney|Volney]] place le champ de bataille des rois [[w:Alyatte_II|Halyattes]] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Alyatte_back|<sup>🔄</sup>]] et [[w:Cyaxare|Cyaxare]] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Cyaxare_back|<sup>🔄</sup>]]. La quatre-vingtième partie du disque solaire seule ne fut pas éclipsée pour le lieu de la terre où Oltmann place le champ de bataille, qui est situé, selon lui, sous 36° long. à l’est de Terro et sous 40° lat. sept. Dans le pays des Ioniens où Thalès prédit l’éclipse, selon Hérodote, l’éclipse se monta à 11 1/2’. M. [[w:Alphonse_Des_Vignoles|Desvignolles]] (''Chronologie de l’histoire sainte'', t. II, pag. 245 et suiv.) fixe l’éclipsé prédite par Thales au 38 mai de l’an 585 avant J.-C. ; son opinion a été adoptée depuis par presque tous les chronologistes et historiens, et par [[w:Gabriel_Brotier|Brotier]] et M. Alexandre. Elle a été réfutée avec succès par Oltmann, qui s’est servi de tables astronomiques bien plus exactes que celles de M. Desvignolles ; en effet, celui-ci a démontré par ses calculs que l’éclipse totale du soleil du 28 mai de l’an 585 avant J.-C., ne fut pas totale dans les lieux où les troupes du roi lydien Halyatte combattirent contre celles du roi Cyaxare ; que, dans ces régions, elle ne se monta pas à plus de 7 1/2 pouces, et que, d’ailleurs, le soleil ne s’était pas encore levé lorsque Féclipse était le plus forte pour les habitans des pays nommés. Mais Hérodote dit positivement que l’éclipse prédite par Thalès fut totale dans ces contrées, et qu’elle eut lieu en plein jour. (Voyez IDELER, ''Chronologie'', t. I, pag. 209 et 210.) Nous remarquerons pourtant avant de finir cette note que la date de Desvignolles est plus conforme que celle d’Oltmann à l’année dans laquelle l’éclipse prédite par Thalès, arriva selon Pline. En effet, le naturaliste romain dit que cette année est la six cent quatre-vingt-cinquième avant J.—C., et c’est justement le 28 mai de cette année que l’éclipse prédite par Thalès arriva, selon M. Desvignolles.<br /><p style="text-align: justify; text-indent: 15px;">Volney pense que l’éclipse en question arriva le 3 février de de l’an 626. Oltman a démontré, dans son Mémoire sur l’éclipse de Thalès, que celle de Volney était déjà passée lorsque le soleil se leva sur le champ de bataille des rois Halyattes et Cyaxare.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Anno_CLXX_AdG_back|<span id="Anno_CLXX_AdG"><sup>4</sup></span>]] L’an 170. C’est ainsi que l’on doit lire, et non CLX, comme l’ont fait Hardouin et Poinsinet; la quatrième année de la quarante-huitième olympiade, correspondant à l’an 170 de Rome, si l’on suppose avec [[w:Varron_(écrivain)|Varron]] que cette ville a été fondée dans la deuxième année de la 6e olympiade.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Alyatte_rege_AdG_back|<span id="Alyatte_rege_AdG"><sup>5</sup></span>]] Le nom de ce roi est écrit avec un esprit rude dans Hérodote, ce qui a donné lieu à [[w:Louis_Poinsinet_de_Sivry|Poinsinet]] et à d’autres traducteurs de Pline de substituer le mot Halyatte à celui d’Alyatte.<br /><p style="text-align: justify; text-indent: 15px;">Alyatte ou Halyatte fut roi de la Lydie et père de Crésus. Il faisait la guerre à Cyaxare, roi des Mèdes, lorsque l’éclipse solaire en question interrompit le combat.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#In_sexcentos_annos_AdG_back|<span id="In_sexcentos_annos_AdG"><sup>6</sup></span>]] On lit dans [[w:Georges_le_Syncelle|le Syncelle]] (''Chronolog.'', pag. 17) que les Chaldéens ont connu une période de six cents années solaires. [[w:Flavius_Josèphe|Josèphe]] [[#Flavius_Josèphe_back|<sup>⤵️</sup>]] ([[w:Antiquités_judaïques|''Ant. jud.'']], I, page 17 et 18, édit. Havercamp) dit que Dieu donna une longue vie aux patriarches pour qu’ils pussent cultiver avec succès les sciences astronomiques et géométriques, ce qu’ils n’auraient pu faire s’ils n’avaient pas vécu au moins six cents ans ; car la grande année ne finit pas plus tôt. Ainsi, il est certain qu’avant Hipparque les Chaldéens et d’autres peuples asiatiques ont connu une période de six cents années solaires. Mais [[w:Jean-Dominique_Cassini|Cassini]] ([[w:Jean-Dominique_Cassini#Mémoires_de_l’Académie_royale_des_sciences|''Anciens mém. de l’Acad.'']], t. VIII, pag. 4 et 5) et [[w:Jean_Sylvain_Bailly|Bailly]] (''Hist. de l’astr. ancienne'', t. II, liv. 3, Eclairciss.) ont prouvé que tous les six cents ans les nouvelles et pleines lunes n’arrivent pas seulement au même jour et à la même heure qu’auparavant, mais encore à la même minute. Ne serait-il donc pas probable qu’Hipparque, comme le dit Ideler (''Historische untersuchungen uber die astronomischen beobachtungen der alten'', Berlin 1806, page 417) a connu cette période chaldéenne, et que delà résulte l’étendue de six cents ans donnée à son calendrier selon Pline.<br /><p style="text-align: justify; text-indent: 15px;">[[w:Abel_Burja|Abel-Burja]] de Leipzig a tâché d’expliquer d’une autre manière la durée du calendrier d’Hipparque (''Astronomisches Jahrbuch'', 1797, pag. 233 et 234). [[w:Claude_Ptolémée|Ptolémée]] et [[w:Censorin_(grammairien)|Censorin]] racontent qu’Hipparque est auteur d’une période soli-lunaire de trois cent quatre années solaires. En la prenant deux fois, on obtient une période de six cent huit ans. Celle-ci fut abrégée par Hipparque de huit ans, afin d’obtenir un nombre entier de siècles pour son calendrier. Ideler a fait une objection très-juste contre cette opinion de Burja ; c’est que la période de six cent huit ans n’a aucun avantage sur celle de trois cent quatre ans. On ne voit donc pas ce qui a pu engager Hipparque à préférer le nombre de six cents ans à celui de trois cents, lorsqu’il composait son calendrier.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Menses_gentium_etc_AdG_back|<span id="Menses_gentium_etc_AdG"><sup>7</sup></span>]] C’est-à-dire il écrivit des éphémérides dans lesquelles il avait calculé d’avance les néomenies et les pleines lunes. Il fit aussi entrer dans son calendrier les longueurs des jours et des heures variables, [[w:ὧραι|ὧραι]] καιρικαι, ainsi que les aspects du ciel, ''visus populorum'', tels qu’ils eurent lieu chez les habitans de différentes contrées de la terre. Il ajouta une table des longitudes et des latitudes des principaux pays et villes du globe. Ptolémée (''Géogr.'', I, ch. 4) en dit autant d’Hipparque.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Aevo_teste_AdG_back|<span id="Aevo_teste_AdG"><sup>8</sup></span>]] Les tables d’Hipparque étaient dressées pour six cents ans. Cet astronome florissait vers cent cinquante ans avant J.-C. Ainsi, du temps de Pline, on avait encore à jouir de ces tables pour quatre cents ans environ. POINSINET.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Numinum_AdG_back|<span id="Numinum_AdG"><sup>9</sup></span>]] Pline donne souvent l’épithète de divinités aux planètes, à la lune, au soleil, à la terre et aux étoiles fixes.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#In_defectibus_scelera_etc_AdG_back|<span id="In_defectibus_scelera_etc_AdG"><sup>10</sup></span>]] Nous transcrivons ici ce beau passage de l’Uranographie de M. [[w:Louis-Benjamin_Francœur|Francoeur]], qui mérite d’être mis en parallèle avec celui de Pline pour l’élégance du style et les pensées, et qui renferme le meilleur commentaire que nous puissions donner de tout ce que Pline dit des terreurs que les éclipses causaient autrefois aux hommes ignorans. « L’histoire, dit M. Francoeur (page 93), est pleine des exemples de l’effroi causé par les éclipses, et des dangers que produisent l’ignorance et la superstition. Nicias avait résolu de quitter la Sicile avec son armée ; effrayé par une éclipse de lune, et voulant temporiser plusieurs jours pour s’assurer si l’astre n’avait rien perdu après cet évènenement, il manqua ainsi l’occasion de sa retraite; son armée fut détruite ; Nicias périt, et ce malheur commença la ruine d’Athènes.<br /><p style="text-align: justify; text-indent: 15px;">« Souvent on a vu des hommes adroits tirer parti de la frayeur du peuple pour l’amener à remplir leurs desseins. Christophe Colomb, réduit à faire subsister ses soldats des dons volontaires d’une nation sauvage et indigente, était prêt à voir tarir cette ressource et à périr de faim ; il annonce qu’il va priver le monde de la lumière de la lune. L’éclipse commence et la terreur s’empare des Indiens, qui reviennent apporter aux pieds de Colomb les tributs accoutumés.<br /><p style="text-align: justify; text-indent: 15px;">« Drusus (TACITE , Annales, I, 28) apaisa une sédition dans son armée, en prédisant une éclipse de lune, et, selon Tite-Live, Sulpicius Gallus, dans la guerre de Paul-Emile contre Persée, usa du même stratagème. Periclès, [[w:Agathocle_de_Syracuse|Agathocles de Syracuse]], [[w:Dion_de_Syracuse|Dion]], roi de Sicile, ont failli être victimes de l’ignorance de leurs soldats. [[w:Alexandre_le_Grand|Alexandre]], près d’[[w:Bataille_de_Gaugamèles|Arbelles]], est réduit à user de toute son adresse pour calmer la terreur qu’une éclipse avait jetée parmi ses troupes. Les hommes supérieurs, plutôt que de plier sous les circonstances qui les maîtrisent, mettent leur art à les tourner à leur profit.<br /><p style="text-align: justify; text-indent: 15px;">« Combien de fables établies d’après l’opinion que les éclipses sont l’effet du courroux céleste qui se venge des iniquités de l’homme en le privant de la lumière! Tantôt [[w:Diane_(mythologie)|Diane]] va trouver [[w:Endymion|Endymion]] dans les montagnes de Carie; tantôt les magiciennes de Thessalie font descendre la lune sur les herbes qu’elles destinent aux enchantemens. »<br /><br /><p style="text-align: center;">''Carmina vel cælo possunt deducere lunam.''<br /><p style="text-align: right; text-indent: 15px;">Virg., ''Eclog.'' VIII.<br /><br /><p style="text-align: justify; text-indent: 15px;">« Ici c’est un dragon qui dévore l’astre, et qu’on cherche à épouvanter par des cris ; le dieu tient le soleil enfermé dans un tuyau, et nous ôte ou nous rend la vue de cet astre à l’aide d’un volet, etc. Les progrès des sciences ont fait connaître le ridicule de ces opinions et de ces craintes, depuis qu’on a vu qu’il était possible de calculer par les tables astronomiques, et de prévoir long-temps d’avance l’instant où la colère du ciel devait éclater.<br /><p style="text-align: justify; text-indent: 15px;">« Cependant, naguère encore, l’épouvante a causé les revers des armées de Louis XIV, près de Barcelone, lors de l’éclipse totale de l’an 1706 [[w:en:Solar_eclipse_of_May_12,_1706|(en)]], et la devise, ''nec pluribus impar'', a prêté aux allusions injurieuses ! »'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Pindari_AdG_back|<span id="Pindari_AdG"><sup>11</sup></span>]] Pindare était le plus fameux poète de la Grèce après Homère. Il vint au monde l’an 134 avant l’ère chrétienne. POINSINET.<br /><p style="text-align: justify; text-indent: 15px;">Plutarque (''De la face de la lune'', pag. 931) dit aussi que Stésichore et Pindare craignaient beaucoup les éclipses. Le dernier poète a peint les terreurs que lui causaient ces phénomènes dans son poëme sur le soleil. HARDOUIN et DALECHAMP.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Crepitu_dissono_AdG_back|<span id="Crepitu_dissono_AdG"><sup>12</sup></span>]] Cet usage superstitieux dont Plutarque parle au long dans sa vie de Paul-Émile, a fourni un vers fort plaisant à Juvénal, lorsqu’après avoir épuisé toute sorte d’exagération pour représenter le bruit qu’une femme fait en criant, il finit par dire :<br /><br /><p style="text-align: center;">''Una laboranti poterit succurrere lunæ.''<br /><br /><p style="text-align: justify; text-indent: 15px;">« Elle seule, au besoin, décharmerait la lune. » POINSINET.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Nicias_AdG_back|<span id="Nicias_AdG"><sup>13</sup></span>]] Le même fait est raconté par Plutarque dans la vie de Nicias, par Quintilien, I, 10, et par d’autres écrivains anciens. HARDOUIN.'''
</td>
</tr>
</table><br/><br/></div>{{Boîte déroulante fin}}
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k5773334c/f10.item <u>Histoire Naturelle de Pline. Tome Second</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k5773334c/f14.item ''Livre II.''], [https://gallica.bnf.fr/ark:/12148/bpt6k5773334c/f46.item ''chap. IX.''], traduction nouvelle par M. [[w:Stéphane_Ajasson_de_Grandsagne|Ajasson de Grandsagne]] [https://gallica.bnf.fr/ark:/12148/bpt6k5773334c/f311.item <sup>NOTES</sup>], C. L. F. Panckoucke, Paris, 1829</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: center; margin: 0 2em;">''Des inventions a[[w:S_long|{{Info|ſ|forme ancienne longue de la lettre s minuscule}}]]<nowiki />tronomiques, & de leurs Auteurs.''<br /><p style="text-align: justify; text-indent: 15px;">'''L'''E PREMIER d’entre les ''Romains'' qui rendit publique la théorie des éclip{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oleil & de lune, fut '''Sulpicius Gallus''' [[#Sulpicius_Gallus_LPdS|<span id="Sulpicius_Gallus_LPdS_back"><sup>'''1'''</sup></span>]], celui que '''Marcus Marcellus''' eut pour Collegue au Con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ulat : mais il n’étoit que Tribun Militaire [[#Tribun_Militaire_LPdS|<span id="Tribun_Militaire_LPdS_back"><sup>'''2'''</sup></span>]], lor{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’il di{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ipa l’allarme qu’auroient pu prendre nos troupes la veille de la victoire remportée {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur '''Per{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ée''' par '''Paul Emile''' ; car ce Général l’ayant produit devant les {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oldats a{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}emblés, il leur prédit une éclip{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e qui devoit arriver [[#éclipse_LPdS|<span id="éclipse_LPdS_back"><sup>'''3'''</sup></span>]] ; il compo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}a même en{{Info|ſ|forme ancienne longue de la lettre s minuscule}}uite un Ouvrage {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur ce {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ujet. Parmi les ''Grecs'', '''Thalès''' de ''Milet'' prédit l’an quatrieme de la quarante-huitieme olympiade l’éclip{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oleil qui arriva {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous le regne de '''Halyattes''' [[#Halyattes_LPdS|<span id="Halyattes_LPdS_back"><sup>'''4'''</sup></span>]], l’an cent {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oixante de la fondation de [[#cent_soixante_LPdS|<span id="cent_soixante_LPdS_back"><sup>'''5'''</sup></span>]] ''Rome''. Après eux, Hipparque [[#Hipparque_LPdS|<span id="Hipparque_LPdS_back"><sup>'''6'''</sup></span>]] dre{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}a des Tables en vers [[#En_vers_LPdS|<span id="En_vers_LPdS_back"><sup>'''7'''</sup></span>]] du cours de ces deux aftres pour fix cents ans. Dans ces Tables , de l’exactitude deſquelles notre âge rend encore témoignage [[#témoignage_LPdS|<span id="témoignage_LPdS_back"><sup>'''8'''</sup></span>]], il embra{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}e les éphémérides propres à chaque nation [[#chaque_nation_LPdS|<span id="chaque_nation_LPdS_back"><sup>'''9'''</sup></span>]], les jours, les heures, le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ite re{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pectif de chaque lieu, & les divers a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pects du ciel relativement aux divers peuples, comme {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i la Nature l’eût admis à {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}eil intime. Per{{Info|ſ|forme ancienne longue de la lettre s minuscule}}onnages vraiment grands! génies plus qu’humains, d’avoir ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i {{Info|ſ|forme ancienne longue de la lettre s minuscule}}urpris les loix qui font mouvoir ces va{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tes pui{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ances du ciel ; & d’avoir guéri de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}es allarmes l’imagination malade des hommes, qui ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’alors, ou avoient toujours vu dans les éclip{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es l’annonce effrayante de quelque grand crime & de quelque mort (terreur dont Sté{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ikhore [[#Stésikhore_LPdS|<span id="Stésikhore_LPdS_back"><sup>'''10'''</sup></span>]] & Pindare [[#Pindare_LPdS|<span id="Pindare_LPdS_back"><sup>'''11'''</sup></span>]], ces Poètes {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ublimes, ne furent point exempts à l’égard des éclip{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es {{Info|ſ|forme ancienne longue de la lettre s minuscule}}olaires), ou attribuoient les ténebres dont {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e couvre la lune à des maléfices opérés par le mêlange de certaines herbes magiques ; & croyoient devoir la {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ecourir par un bruit di{{Info|ſ|forme ancienne longue de la lettre s minuscule}}cordant [[#bruit_discordant_LPdS|<span id="bruit_discordant_LPdS_back"><sup>'''12'''</sup></span>]]. Cette même terreur fut cau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e que le Général Nicias [[#Nicias_LPdS|<span id="Nicias_LPdS_back"><sup>'''13'''</sup></span>]], peu au fait des cau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es phy{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iques, & n’o{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ant pas, par {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uper{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tition, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ortir {{Info|ſ|forme ancienne longue de la lettre s minuscule}}a flotte du Port, mit Athenes à deux doigts de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}a perte. Honneur [[#Honneur_LPdS|<span id="Honneur_LPdS_back"><sup>'''14'''</sup></span>]] à vous, Interpretes du Ciel ! E{{Info|ſ|forme ancienne longue de la lettre s minuscule}}prits [[#Esprits_LPdS|<span id="Esprits_LPdS_back"><sup>'''15'''</sup></span>]] dont l’étendue {{Info|ſ|forme ancienne longue de la lettre s minuscule}}urpa{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}e celle de la Nature ; Inventeurs d’une méthode qui a{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ujettit les dieux comme les hommes, à une même de{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tinée ! Eh! qui pourroit, en voyant les a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tres même ''en cri{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e'' (pour me {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervir de l’expre{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ion commune), ne pas {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oumettre à la néce{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ité où {{Info|ſ|forme ancienne longue de la lettre s minuscule}}a condition mortelle l’enchaîne.<br /><p style="text-align: justify; text-indent: 15px;">Pré{{Info|ſ|forme ancienne longue de la lettre s minuscule}}entement je vais toucher par articles fort courts & fort précis les points {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur le{{Info|ſ|forme ancienne longue de la lettre s minuscule}}quels on s’accorde le plus. Je ré{{Info|ſ|forme ancienne longue de la lettre s minuscule}}oudrai, chemin fai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ant, quelques que{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tions, lor{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que le cas l’exigera, mais toujours d’une maniere très {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ommaire ; car une analy{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e en forme d’arguments {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivis excéderoit le but de cet Ouvrage : & puis, je pen{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e qu’il n’y a pas moins de mérite à rendre une rai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}on plau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ible de toutes cho{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es, qu’à rendre une rai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}on bien {{Info|ſ|forme ancienne longue de la lettre s minuscule}}olide de deux ou trois cho{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eulement.</div>
{{Boîte déroulante début|titre=Notes du traducteur|alignT=center}}
<div style="text-align: justify; border: 2px; border-radius:15px; font-size:85%;"><br/>
<table cellspacing=15 align=center style="margin: 0 4em;">
<tr>
<td style="text-align: justify; margin: 0 4em; text-indent: 15px">'''[[#Sulpicius_Gallus_LPdS_back|<span id="Sulpicius_Gallus_LPdS"><sup>1</sup></span>]] Son premier prénom étoit Caïus. Voyez à {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ujet Tite-Live, l. 44. Valere maxime, l. 8. Quintilien, l. I. ch. 10. Plutarque, vie de Paul-Emile, &c.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Tribun_Militaire_LPdS_back|<span id="Tribun_Militaire_LPdS"><sup>2</sup></span>]] Ce grade répond à celui de Major-général des Troupes.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#éclipse_LPdS_back|<span id="éclipse_LPdS"><sup>3</sup></span>]] Cette éclip{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}elon Tite-Live, fut annoncée aux {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oldats pour la nuit {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivante. Sulpicius Gallus leur prédit que la lune s’éclip{{Info|ſ|forme ancienne longue de la lettre s minuscule}}eroit entre la {{Info|ſ|forme ancienne longue de la lettre s minuscule}}econde heure de la nuit & la quatrieme. Plutarque ajoute qu’on étoit alors à l’i{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ue de l’été (''{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ub exitum a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tatis''). [[w:Paulin_II_d'Aquilée|Paul d’Aquilée]] écrit que cette éclip{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e arriva aux nones de Septembre (''nonas Septembris''), c’est-à-dire au 4 Septembre : c’étoit l’an 168 avant J.C. {{Info|ſ|forme ancienne longue de la lettre s minuscule}}elon le calcul d’[[w:James_Ussher|U{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}erius]].'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Halyattes_LPdS_back|<span id="Halyattes_LPdS"><sup>4</sup></span>]] Il paroît que Ciceron & Eu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ebe {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e trompent lor{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’ils placent cet événement {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous ''A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tiages'' : [[w:Hermolaos_(Macédoine)|Hermolaüs]] s’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t trompé d’après eux, en {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ub{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tituant ''A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tiages'' à ''Halyattes'' dans le texte de Pline, contre la foi des manu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}crits, & contre le témoignage d’Herodote qui place cet événement dans une guerre entre Halyattes, Roi de Sardes, & Cyaxare, Roi des Medes, pere d’A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tiages.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#cent_soixante_LPdS_back|<span id="cent_soixante_LPdS"><sup>5</sup></span>]] Les deux manu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}crits royaux portent ''anno CLX'' : c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t la leçon qu’il faut {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivre. En effet, Rome, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}elon Varron, fut fondée l’an 2 de la {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ixieme olympiade, c’est-à-dire, dans l’année olympiadique 22. Mais comme chaque olympiade, depuis leur premiere in{{Info|ſ|forme ancienne longue de la lettre s minuscule}}titution, commençoit après le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ol{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tice d’été, & comme l’année Romaine avoit toujours commencé au plus tard en Mars {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous Romulus, & depuis en Janvier {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous Numa, il s’en{{Info|ſ|forme ancienne longue de la lettre s minuscule}}uit que la premiere année de Rome, qui répondoit à l’année olympiadique 22, répondoit en même-tems, de quatre mois au moins, à l’année olympíadique 23. Selon ce calcul, la quatrieme année de la quarante-huitieme olympiade, répond en partie à l’an 160, & en partie à l’an 161 de la fondation de Rome, pui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que 48 olympiades font cent quatre-vingt-douze années, de{{Info|ſ|forme ancienne longue de la lettre s minuscule}}quelles {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i vous ôtez 22 ans écoulés, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}elon Varron, entre la premiere olympiade & la fondation de Rome, il re{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tera 160 ans, & 161 ans {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i l’on a égard à l’enjambement réciproque des années olympiadiques {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur les années Romaines, & des années Romaines {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur les années olympiadiques. Il e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t donc évident que le calcul de Pline (''anno CLX'') e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}te, en admettant l’hypothe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e chronologique de Varron, à laquelle on voit bien que notre Auteur s’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t conformé en cette occa{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ion particuliere encore qu’en plu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ieurs autres rencontres il paroi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}e affecter de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivre le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}y{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tême de Caton : vici{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}itude pardonnable dans un ouvrage de compilation où Pline a dû, comme malgré lui, adopter tantôt le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}tyle d’un Auteur, tantôt celui d’un autre, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}elon la {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ource où il pui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}oit pour l’heure. Si Pline eût {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivi l’hypothe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e de Caton qui place la fondation de Rome deux ans plus tard que Varron, il eût fait tomber le rapport {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur l’année 157 ou 158 de la fondation de Rome. C’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t le parti que prend le Pere Hardouin, & c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t de là qu’il part pour propo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}er une correction dans le texte. Mais encore une fois, c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t commettre {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oi-même une faute que d’en trouver une chez Pline en cette occa{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ion ; pui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que cet Auteur a été en droit de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervir du {{Info|ſ|forme ancienne longue de la lettre s minuscule}}y{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tème Varronien, ou ce qui revient au même, de con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}erver la date Varronienne dont s’étoit {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervi l’Auteur de qui il emprunte le fait hi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}torique en que{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tion.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Hipparque_LPdS_back|<span id="Hipparque_LPdS"><sup>6</sup></span>]] Voyez les notes {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur le premier livre au mot ''Hipparque'' : HIPPARCHUS (de Nicée, en Bithinie comme l’ob{{Info|ſ|forme ancienne longue de la lettre s minuscule}}erve [[w:Souda|Suidas]]), flori{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}oit dans la quatre-vingt-quatorzieme olympiade. Nous avons {{Info|ſ|forme ancienne longue de la lettre s minuscule}}es trois livres d’Enarrations {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur les Phénomenes d’[[w:Aratos_de_Soles|Aratus]] & d’[[w:Eudoxe_de_Cnide|Eudoxe]], traduits par le [[w:Paul_Petau|P. Petau]]. Il avoit compo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}é un autre livre ''De {{Info|ſ|forme ancienne longue de la lettre s minuscule}}tellarum inerrantium Con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}titutione'', {{Info|ſ|forme ancienne longue de la lettre s minuscule}}elon Suidas. Son livre du mois lunaire e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t cité par [[w:Claude_Galien|Galien]].'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#En_vers_LPdS_back|<span id="En_vers_LPdS"><sup>7</sup></span>]] ''En Vers.'' Je préfume que c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t-là le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ens de ''præcinere'', qui ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ignifie pas {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eulement prédire, mais prédire en chant, c’est-à-dire en Vers. Sur ce pied-là, ce {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eroit d’un Poëme dans le genre de celui d’[[w:Aratos_de_Soles|Aratus]], dont il {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eroit ici que{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tion. Si par hazard Pline n’a point prétendu parler d’un Poëme, au-moins s’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t-il {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervi d’une expre{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ion propre à dé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}igner ce genre d’écrire. Pour décider la que{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tion, il faudroit avoir tous les ouvrages d’Hipparque, & {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur-tout celui-ci.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#témoignage_LPdS_back|<span id="témoignage_LPdS"><sup>8</sup></span>]] Ces tables étoient dre{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ées pour {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ix cents ans. Or Hipparque flori{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}oit 150 ans avant J.C. Ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i du tems de Pline, on avoit encore à jouir de ces tables pour quatre cents ans ou environ.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#chaque_nation_LPdS_back|<span id="chaque_nation_LPdS"><sup>9</sup></span>]] La lune ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e levant pas & ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e couchant pas à la même heure pour toutes les nations, les diver{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es époques & pha{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es qu’elle forme n’appartiennent pas non plus au même point de tems pour tous les peuples, pui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que les uns ont la nuit quand les autres ont le jour; & que même lor{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que la lune s’éclip{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e, la partie de l’heure où ce phénomene e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t {{Info|ſ|forme ancienne longue de la lettre s minuscule}}en{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ible, n’a pas la même évaluation pour tous les climats qui l’apperçoivent. Hipparque avoit donc eu égard à cette différence d’époques, relativement aux diver{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es longitudes, &par-con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}équent aux diver{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es nations, tellement que les tables de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}es éphémérides étoient accommodées à l’u{{Info|ſ|forme ancienne longue de la lettre s minuscule}}age de tous les peuples : ouvrage dont on ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}auroit trop regretter la perte, & qui jetteroit le plus grand jour {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur l’ancienne géographie.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Stésikhore_LPdS_back|<span id="Stésikhore_LPdS"><sup>10</sup></span>]] Ste{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ikhore, l’un des plus fameux Poètes de la Grece, dont, par malheur, nous avons perdu tous les ouvrages, à l’exception d’une vingtaine de lignes décou{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ues. Il vivoit dans la quarante-deuxieme olympiade, c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t-à-dire, vers l’an {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ix cents dix avant J.C.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Pindare_LPdS_back|<span id="Pindare_LPdS"><sup>11</sup></span>]] Pindare, le plus fameux Poète de la Grece après Homere. Il vint au monde l’an 134 avant l’ere chrétienne.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#bruit_discordant_LPdS_back|<span id="bruit_discordant_LPdS"><sup>12</sup></span>]] Cet u{{Info|ſ|forme ancienne longue de la lettre s minuscule}}age {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uper{{Info|ſ|forme ancienne longue de la lettre s minuscule}}titieux a fourni un Vers fort plai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ant à Juvenal, lor{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’après avoir épui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}é toute {{Info|ſ|forme ancienne longue de la lettre s minuscule}}orte d’exagération pour repré{{Info|ſ|forme ancienne longue de la lettre s minuscule}}enter le bruit qu’une femme fait en criant, il finit par dire :<br /><p style="text-align: justify; text-indent: 15px;">''Una laboranti poterit {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uccurrere luna.''<br /><p style="text-align: justify; text-indent: 15px;">Elle {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eule au be{{Info|ſ|forme ancienne longue de la lettre s minuscule}}oin décharmeroit la lune.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Nicias_LPdS_back|<span id="Nicias_LPdS"><sup>13</sup></span>]] C’étoit un Général Athénien, qui fut malheureux dans pre{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que toutes {{Info|ſ|forme ancienne longue de la lettre s minuscule}}es expéditions. Les Athéniens finirent par le condamner à mort. Il étoit contemporain d’[[w:Alcibiade|Alcibiade]] & de [[w:Lamachos|Lamachus]], & leur collegue dans le commandement. Voyez {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur le fait dont parle ici Pline, Quintilien, l. I. ch. 10, & Plutarque à l’article Nicias.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Honneur_LPdS_back|<span id="Honneur_LPdS"><sup>14</sup></span>]] Au lieu de ''macte ingenio'', le Pere Hardouin lit ''macti'' ; mais {{Info|ſ|forme ancienne longue de la lettre s minuscule}}elon les meilleurs Latini{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tes ''macte'' e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t indéclinable, ou pour mieux dire, c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t un adverbe qui répond au ''bravò'' des Italiens. Fe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tus prétend que ''macte'' e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t un compo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}é de ''magis auctus''.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Esprits_LPdS_back|<span id="Esprits_LPdS"><sup>15</sup></span>]] Cette apo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}trophe de Pline aux A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tronomes rappelle ces beaux Vers d'Ovide {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur le même {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ujet :<br />Felices animos quibus hæc cogno{{Info|ſ|forme ancienne longue de la lettre s minuscule}}cere primise<br /><p style="text-align: justify; text-indent: 15px;">Inque Domos {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uperas {{Info|ſ|forme ancienne longue de la lettre s minuscule}}candere cura fuit!<br />Credibile e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t illos pariter vitli{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que joci{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que<br /><p style="text-align: justify; text-indent: 15px;">Altius humanis ex{{Info|ſ|forme ancienne longue de la lettre s minuscule}}eruifle caput,<br />Non Venus aut Vinum {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ublimia pectora fregit<br /><p style="text-align: justify; text-indent: 15px;">Officiumve {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ori, militiæve labor :<br />Nec levis ambitio, perfu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}aque gloria fuco,<br /><p style="text-align: justify; text-indent: 15px;">Magnarumve fames {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ollicitavit opum.<br />Admovere oculis di{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tantia {{Info|ſ|forme ancienne longue de la lettre s minuscule}}idera no{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tris,<br /><p style="text-align: justify; text-indent: 15px;">Ætheraque ingenio {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uppo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}uere {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uo.<br />Sic petitur cœlum: non ut ferat O{{Info|ſ|forme ancienne longue de la lettre s minuscule}}lan Olympus<br /><p style="text-align: justify; text-indent: 15px;">Summaque Peliacus {{Info|ſ|forme ancienne longue de la lettre s minuscule}}idera tangat apex, &c.<br /><p style="text-align: right; text-indent: 15px;">Ovid. {{Info|ſ|forme ancienne longue de la lettre s minuscule}}a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t. l. I.'''
</td>
</tr>
</table><br/><br/></div>
{{Boîte déroulante fin}}
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=UnhluychtF8C&newbks=1&newbks_redir=0&dq=Histoire%20naturelle%20Pline&hl=fr&pg=PP7#v=onepage&q&f=true <u>Histoire Naturelle de Pline. Tome Premier</u>], [https://books.google.fr/books?id=UnhluychtF8C&newbks=1&newbks_redir=0&dq=Histoire%20naturelle%20Pline&hl=fr&pg=RA1-PA3#v=onepage&q&f=true ''Livre Second.''], [https://books.google.fr/books?id=UnhluychtF8C&newbks=1&newbks_redir=0&dq=Histoire%20naturelle%20Pline&hl=fr&pg=RA1-PA59#v=onepage&q&f=true ''Des inventions astronomiques, & de leurs Auteurs.''], traduction en françois, avec le texte latin rétabli d’après les meilleures leçons manu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}crites ; accompagnée de Notes critiques pour l’éclairci{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ement du texte, & d’Ob{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervations {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur les connoi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ances des Anciens comparées avec les découvertes des Modernes, par M. [[w:Louis_Poinsinet_de_Sivry|Louis Poinsinet de Sivry]], Chez la veuve Desaint, Paris, 1771</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div>
</div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
==== Livre XVIII ====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Enquête sur l’agriculture</div>
===== <div style="text-align: center;">Chapitre LVII.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage d’une théorie astronomique de '''Thalès''', du [[w:Lever_héliaque|''coucher matinal'']] des [[w:Pléiades_(astronomie)|''Pléiades'']] 25 jours après l’[[w:Équinoxe_de_septembre|''équinoxe d’automne'']].</div>
:'''Texte latin'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''LVII.''' Primum omnium dierum ipsorum anni solisque motus prope inexplicabilis ratio est. Ad CCCLXV adjiciunt etiamnum intercalarios diei noctisque quadrantes. Ita fit, ut tradi non possint certa siderum tempora. Accedit confessa rerum obscuritas, nunc præcurrenle, nec paucis diebus, tempestatum significatu, quod προϰειμασιν Græci vocant : nunc postveniente, quod ἐπιϰεἰμασιν : et plerumque alias citius, alias tardius cæli effectu ad terram deciduo : vulgo serenitate reddita, confectum sidus audimus. Præterea quum omnia hæc statis sideribus cæloque affixis constent, interveniunt motu stellarum grandines, imbres, et ipsi non levi effectu, ut docuimus, turbantque conceptæ spei ordinem. ldque ne nobis tantum putemus accidere, et reliqua fallit animalia sagaciora circa hoc, ut quo vita eorum constet : æstivasque alites præposteri aut præproperi rigores necant, hibernas æstus. Ideo '''Virgilius''' errantium quoque siderum rationem ediscendam præcipit, admonens observandum frigidæ Saturni stellæ transitum. Sunt qui certissimum veris indicium arbitrentur ob infirmitatem animalis, papilionis proventum. Id eo ipso anno, quum commentaremur hæc, notatum est, proventum eorum ter repetito frigore exstinctum, advenasque volucres a. d. VI kalendas februarii spem veris attulisse, mox sævissima hieme conflictatas. Res anceps : primum omnium a cælo peti legem : deinde eam argumentis esse quærendam. Super omnia est mundi convexitas, terrarumque globi differentia, eodem sidere alio tempore aliis aperiente se gentibus : quo fit ut causa ejus non lisdem diebus ubique valeat. Addidere difficultatem et auclores diversis in locis observando, mox etiam in iisdem diversa prodendo. Très autem fuere sectæ : ''Chaldæa'', ''Ægyptia'', ''Græca''. His addidit apud nos quartam Cæsar dictator, annos ad solis cursum redigens singulos, '''Sosigene''' perito scientiæ ejus adhibito. Et ea ipsa ratio postea comperto errore correcta est : ita ut XII annis continuis non intercalaretur, quia cœperat sidera annus morari, qui prius antecedebat. Et '''Sosigenes''' ipse trinis commentationibus, quanquam diligentior cæteris, non cessavit tamen addubitare, ipse semet corrigendo. Auctores prodidere ea, quos prætexuimus volumini huic, raro ullius sententia cum alio congruente. Minus hoc in reliquis mirum, quos diversi excusaverint tractus. Eorum qui in eadem regione dissedere, unam discordiam ponemus exempli gratia : occasum matutinum Vergiliarum '''Hesiodus''' (nam hujus quoque nomine exstat Astrologia) tradidit fieri, quum æquinoctium autumni conficeretur, '''Thales''' vigesimo quinto die ab æquinoctio, '''Anaximander''' vigesimo nono, '''Euctemon''' XLVIII. Nos sequemur observationem Cæsaris : maximeque hæc erit ''Italiæ'' ratio. Dicemus tamen et aliorum placita : quoniam non unius terræ, sed totius naturæ interpretes sumus, non auctoribus positis (id enim verbosum est), sed regionibus : legentes tantum meminerint, brevitatis gratia, quum ''Altica'' nominata fuerit, simul intelligere ''Cycladas'' insulas ; quum ''Macedonia'', ''Magnesiam'', ''Thraciam'' ; quum ''Ægyptus'', ''Phœnicen'', ''Cyprum'', ''Ciliciam'' ; quum ''Bœotia'', ''Locridem'', ''Phocidem'', et finitimos semper tractus ; quum ''Hellespontus'', ''Cherronesum'', et continentia usque ''Atho'' montem ; quum ''Ionia'', ''Asiam'', et insulas ''Asiæ'' ; quum ''Peloponnesus'', ''Achaiam'', et ad ''Hesperum'' jacentes terras. ''Chaldæi Assyriam'' et ''Babyloniam'' demonstrabunt. ''Africam'', ''Hispanias'', ''Gallias'' sileri non erit mirum. Nemo enim observavit in iis, qui siderum proderet exortus. Non tamen difficili ratione dignoscentur in illis quoque terris digestione circulorum, quam in sexto volumine fecimus : qua cognatio cæli, non gentium modo, verum urbium quoque singularum intelligitur, nota ex his terris, quas nominavimus, sumta convexitate circuli, pertinentis ad quas quisque quæret terras, et ad earum siderum exortus, per omnium circulorum pares umbras. Indicandum et illud, tempestates ipsas ardores suos habere quadrinis annis : et easdem non magna differentia reverti ratione solis : octonis vero augeri easdem, centesima revolvente se luna.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/b24875958_0001/page/n7/mode/2up <u>Histoire Naturelle de Pline.</u>], [https://archive.org/details/b24875958_0001/page/652/mode/2up ''Livre XVIII.''], [https://archive.org/details/b24875958_0001/page/684/mode/2up ''Chap. LVII.''], texte corrigé par [[w:Émile_Littré|M. É. Littré]], à partir de celui de [[w:Jean_Hardouin|Hardouin]], Librairie de Firmin-Didot et C<sup>ie</sup>, Paris, 1883<br />(également disponible une édition de 1831 [https://gallica.bnf.fr/ark:/12148/bpt6k5804072n/f339.item ici] et de 1848 [[s:Page:Pline_l'ancien_-_Histoire_naturelle,_Littré,_T1_-_1848.djvu/708|là]])</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''LVII.''' Avant tout, le calcul des jours même de l’année et du mouvement solaire est d’une difficulté presque insurmontable. Aux trois cent soixante-cinq jours on ajoute des jours intercalaires, produits de quarts de jour et de nuit ; de là vient qu’on ne peut indiquer des époques fixes pour les astres. Ajoutez une obscurité des choses avouée de tous : tantôt en effet la mauvaise saison, s’annonçant, anticipe même de plusieurs jours, ce que les Grecs appellent προϰεἰμασις (avant-hiver), et la belle saison retarde, ce qui est nommé ἐπιϰεἰμασις (arriere-hiver) : l’effet du ciel tombe sur la terre tantôt plus vite, tantôt plus tardivement ; et d’ordinaire c’est quand la sérénité est rétablie que nous entendons dire que l’action de l’astre est accomplie. En outre, car tous ces phénomènes dépendent d’astres réglés et fixés au ciel, le mouvement des étoiles amène intercurremment des grêles, des pluies qui ne sont pas non plus d’une faible action, comme nous l’avons enseigné (XVII, 2), et qui troublent l’ordre espéré. Et ne pensons pas que ces méprises n’arrivent qu’à nous; les autres animaux s’y trompent, bien que plus sagaces que nous sur ce point, vu que leur vie en dépend : l’on voit les oiseaux d’été tués par des froids hâtifs ou tardifs, et les oiseaux d’hiver par des chaleurs hâtives ou tardives. Aussi [[w:Virgile|'''Virgile''']] [[#Virgile|<span id="Virgile_back"><sup>'''I'''</sup></span>]] ([[w:Géorgiques|''Georg.'']], I, 335) recommande-t-il d’étudier encore le cours des astres errants, avertissant d’observer le passage de Saturne, planète froide. Il en est qui regardent comme l’indice le plus sûr du printemps l’apparition des papillons, à cause de la délicatesse de cet insecte. Or, l’année même où nous écrivions ceci (an 830 de ''Rome''), il a été noté que les papillons, ayant éclos, furent détruits à trois reprises par le froid, et que les oiseaux étrangers, ayant apporté l’espérance du printemps avant le 6 des calendes de février (27 janvier), eurent bientôt après à essuyer un hiver très-rigoureux. La double difficulté est d’abord d’avoir à demander au ciel la règle de toute chose, puis d’être obligé de contrôler cette règle par des faits apparents. Avant tout signalons la convexité du monde et les différences du globe terrestre, qui font que le même astre se montre à des temps divers suivant les nations, de sorte que l’influence ne s’en fait pas sentir partout aux mêmes jours. La difficulté a été encore accrue par les auteurs qui ont observé en des lieux différents, ou même qui, ayant observé dans les mêmes lieux, ont publié des résultats divergents. Il y a eu trois écoles, la ''Chaldéenne'', l’Égyptienne, la ''Grecque''. Une quatrième a été formée chez nous par le dictateur [[w:Jules_César|'''César''']], qui ramena l’année à la révolution solaire avec l’aide de [[w:Sosigène_d'Alexandrie|'''Sosigène''']] [[#Sosigène|<span id="Sosigène_back"><sup>'''II'''</sup></span>]], astronome habile. Et ce calcul même, où l’on découvrit une erreur, a été corrigé : pendant douze années consécutives on ne fit pas d’intercalation, attendu que l’année, qui auparavant anticipait, maintenant retardait sur les astres. '''Sosigène''' lui-même, quoique plus exact que les autres, n’a pas cessé, dans trois mémoires, de témoigner de ses doutes en se corrigeant lui-même. Les auteurs que nous avons indiqués au commencement de ce livre [[#auteurs_JH|<span id="auteurs_JH_back"><sup>'''1'''</sup></span>]] ont révélé ces discordances, l’avis de l’un s’accordant rarement avec l’avis de l’autre. Cela est moins étonnant dans ceux qui s’excuseront par la différence des lieux. Parmi ceux qui dans le même pays sont en désaccord, nous choisirons un exemple de dissidence : [[w:Hésiode|'''Hésiode''']] [[#Hésiode|<span id="Hésiode_back"><sup>'''III'''</sup></span>]] (car nous avons aussi sous son nom un livre sur les astres) a rapporté que le [[w:Lever_héliaque|''coucher matinal'']] des [[w:Pléiades_(astronomie)|''Pléiades'']] se faisait au moment de l’[[w:Équinoxe_de_septembre|''équinoxe d’automne'']] ; '''Thalès''', qu’il se faisait vingt-cinq jours après cet équinoxe; [[w:Anaximandre|'''Anaximandre''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Anaximandre_back|<sup>🔄</sup>]], vingt-neuf; [[w:Euctémon|'''Euctémon''']] [[#Euctémon|<span id="Euctémon_back"><sup>'''IV'''</sup></span>]], quarante-huit. Quant à nous, nous suivrons les calculs de '''César''' : ils se rapportent spécialement à l’Italie. Toutefois, nous relaterons aussi les opinions des autres ; car nous sommes les interprètes, non d’un seul pays, mais de la nature entière. Nous nommerons, non pas les auteurs, ce qui serait trop long, mais les pays. Les lecteurs auront seulement à se souvenir que, pour abréger, sous le nom d’[[w:Attique|''Attique'']] nous entendons aussi les [[w:Cyclades|''Cyclades'']]; sous celui de [[w:Macédoine_(province_romaine)|''Macédoine'']], la [[w:Magnésie_antique|''Magnésie'']] et la [[w:Thrace_(province_romaine)|''Thrace'']]; sous celui d’[[w:Égypte_romaine_et_byzantine|''Égypte'']], la [[w:Syrie-Phénicie_(province_romaine)|''Phénicie'']], [[w:Chypre_(province_romaine)|''Chypre'']] et la [[w:Cilicie|''Cilicie'']]; sous celui de [[w:Béotie#Antiquité|''Béotie'']], la [[w:Locride_(Grèce)|''Locride'']], la [[w:Phocide#Antiquité_et_période_byzantine|''Phocide'']] et les contrées limitrophes ; sous celui d’[[w:Hellespontique|''Hellespont'']], la [[w:Chersonèse_(cité_grecque)|''Chersonèse'']] et le continent jusqu’au [[w:Mont_Athos|''mont Athos'']]; sous celui d’[[w:Ionie|''Ionie'']], l’Asie et les îles ''Asiatiques'' ; sous celui de [[w:Péloponnèse#Antiquité|''Péloponnèse'']], l’[[w:Achaïe|''Achaïe'']] et les terres situées à l’occident; la [[w:Chaldée|''Chaldée'']] indiquera la [[w:Histoire_de_la_Syrie#Antiquité|''Syrie'']] et la [[w:Babylone_(civilisation)|''Babylonie'']]. On ne s’étonnera pas que je passe sous silence l’[[w:Afrique_romaine|''Afrique'']], l’[[w:Hispanie_romaine|''Espagne'']] et les [[w:Gaule|''Gaules'']], car personne dans ces contrées n’a laissé d’observations sur le lever des astres. Toutefois, il ne sera pas difficile de le calculer, même dans ces contrées, en étudiant la disposition des cercles que nous avons présentés dans le sixième livre (VI, 39). Grâce à cette étude, on connaît les relations astronomiques nou-seulement des nations, mais encore des villes en particulier : étant donnés les cercles déterminés par l’égalité des ombres, on choisit, dans les terres que nous avons nommées, le cercle qui a rapport à la localité objet du problème, et qui détermine en même temps le lever des astres pour cette localité. Il faut encore remarquer (II, 48) que tous les quatre ans les saisons ont leurs excès, et qu’elles reviennent les mêmes sans grande différence, en raison du soleil ; mais que tous les huit ans elles ont un redoublement, à la révolution de la centième lune.</div>
<table cellspacing=15 align=center style="margin: 0 4em; font-size:85%;">
<tr>
<td style="text-align: justify; margin: 0 4em;">'''[[#auteurs_JH_back|<span id="auteurs_JH"><sup>1</sup></span>]] Ce passage porte à croire que les auteurs dont Pline s’était servi pour composer chacun des livres de son ouvrage avaient été placés en tête du livre auquel ils se rapportaient. Les éditions mettent cette liste d’auteurs à la suite de la table de chaque livre, dans la table générale dressée par Pline lui-même.'''</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/b24875958_0001/page/n7/mode/2up <u>Histoire Naturelle de Pline.</u>], [https://archive.org/details/b24875958_0001/page/652/mode/2up ''Livre XVIII.''], [https://archive.org/details/b24875958_0001/page/684/mode/2up ''Chap. LVII.''], texte corrigé par [[w:Émile_Littré|M. É. Littré]], à partir de celui de [[w:Jean_Hardouin|Hardouin]] [https://archive.org/details/b24875958_0001/page/708/mode/2up <sup>NOTES</sup>], Librairie de Firmin-Didot et C<sup>ie</sup>, Paris, 1883<br />(également disponible une édition 1848 [[s:Page:Pline_l'ancien_-_Histoire_naturelle,_Littré,_T1_-_1848.djvu/708|ici]])</div>
{{Boîte déroulante début|titre=NdA de trad. Jean Hardouin 1883|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Virgile_back|<span id="Virgile"><sup>I</sup></span>]] [[w:Nom_romain|Tria Nomina]] en latin {{Info|Publius|praenomen, nom individuel du citoyen romain}} {{Info|Vergilius|nomen, nom de famille}} {{Info|Maro|cognomen, surnom héréditaire, servant à distinguer les diverses branches d’une même gens}};<br /><p style="margin: 0 2em; text-indent: 15px">Poète latin renommé dans les styles [[w:Épopée|''épique'']] (l’[[w:Énéide|''Énéide'']]), [[w:Poésie_pastorale|''pastorale'']] (les [[w:Bucoliques|''Bucoliques'']]) et [[w:Poésie_didactique|''didactique'']] (les [[w:Géorgiques|''Géorgiques'']]).<br /><p style="text-align: right; margin: 0 2em;">(15 octobre [[w:Années_70_av._J.-C.|-70]], [[w:Virgilio_(Lombardie)#Histoire|''Andes'']], au sud-est de l’actuelle [[w:Lombardie#Histoire|''Lombardie'']], au nord de l’Italie — 21 septembre [[w:Années_19_av._J.-C.|-19]], [[w:Brindisi#Histoire|''Brundisium'']], au sud-est des actuelles [[w:Pouilles#Domination_romaine|''Pouilles'']], au sud-est de l’Italie)<sup>[[w:Ier_siècle_av._J.-C.|⏳]]</sup>
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Sosigène_back|<span id="Sosigène"><sup>II</sup></span>]] Du nom propre grec ancien Σωσῐγένης / Sōsigénēs [[wikt:en:Σωσιγένης#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;">➥ du verbe σῴζω / sṓizō, « 1. Sauver : • Guérir ; • (rare chez Homère) Garder en sécurité, préserver ; • Garder, observer, maintenir ; • (généralement au milieu) Garder à l’esprit, se souvenir ; • Conduire en toute sécurité (à) ; • Secourir ; • Conserver pour. »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ + du nom commun γένος / génos [[wikt:en:γένος#Ancient_Greek|(en)]], « 1. Race, souche, parenté : Descendance directe, par opposition à une relation collatérale. 2. Progéniture, descendant : (collectif) progéniture, postérité. 3. (en général) Race d’êtres : • Famille, clan, maison ; • Tribu, nation, race, en tant que subdivision de ἔθνος / éthnos [[wikt:en:ἔθνος#Ancient_Greek|(en)]] ; • Caste ; • Race d’animaux. 4. Âge, génération, période de la vie. 5. Sexe, genre : (grammaire) Genre grammatical. 6. Classe, sorte, genre : • (logique) L’opposé de εἶδος / eîdos [[wikt:en:εἶδος#Ancient_Greek|(en)]] ; • (taxonomie) Classe : • (taxonomie) Genre ; • Espèce de plante ; culture, produit ; matériau ; • Élément. »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ + du suffixe nominal propre -ης / -ēs [[wikt:en:-ης#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;"> Astronome grec, connu pour avoir participer à la conception du [[w:Calendrier_julien|''calendrier julien'']] (instauré par Jules César en [[w:Années_46_av._J.-C.|-46]]/[[w:Années_45_av._J.-C.|-45]], lorsqu’il était [[w:Pontifex_maximus|''pontifex maximus'']]), avec une année commune de 365 jours divisée en 12 mois, et un jour intercalaire ajouté tous les 4 ans, lors des années bissextiles.<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] [[w:Ier_siècle_av._J.-C.|I<sup>er</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]])
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Hésiode_back|<span id="Hésiode"><sup>III</sup></span>]] Du nom propre grec ancien Ἡσῐ́οδος / Hēsíodos;<br /><p style="margin: 0 2em; text-indent: 15px">Poète ''grec'', renommé pour 2 ouvrages :<br /><p style="margin: 0 2em; text-indent: 15px;">• [[w:Théogonie_(Hésiode)|''la Théogonie'']], une généalogie des dieux (dans laquelle il présente la multitude des dieux célébrés par les mythes grecs où trois générations divines se succèdent : celle d’Ouranos, celle de Cronos, celle de Zeus qui sort triomphant) et une cosmogonie (qui retrace la création du monde à partir du Chaos) ;<br /><p style="margin: 0 2em; text-indent: 15px;">• et [[w:Les_Travaux_et_les_Jours|''les Travaux et les Jours'']], un almanac sur l’agriculture à destination de son frère Perses.<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] [[w:VIIIe_siècle_av._J.-C.|VIII<sup>ème</sup>]] — [[w:VIIe_siècle_av._J.-C.|VII<sup>ème</sup>]] siècles {{Info|AEC|Avant l’Ère Commune}})
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Euctémon_back|<span id="Euctémon"><sup>IV</sup></span>]] Du nom propre grec ancien Ευκτήμων / Euktémōn;<br /><p style="margin: 0 2em; text-indent: 15px;">Astronome ''athénien'', contemporain et collègue de l’astronome [[w:Méton|Méton]], avec qui, il a fait une série d’observations des [[w:Solstice|''solstices'']] afin de déterminer la durée de l’[[w:Année_tropique|''année tropique'']] [https://ecliptiqc.ca/Almageste_Livre3.php#III1 <sup>Ptolémée, Almageste, liv. III, chap. 1</sup>].<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] [[w:Ve_siècle_av._J.-C.|V<sup>ème</sup>]] siècle {{Info|AEC|Avant l’Ère Commune}})'''<br/><br/></div>
{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: center; margin: 0 2em;">Des découvertes astronomiques : part de chaque observateur dans la science.<br /><p style="text-align: justify; text-indent: 15px;">'''LVII.''' D’abord, il est presque impossible de déterminer d’une manière précise le nombre des jours de l’année et le cours du soleil [[#Primum_omnium_dierum_AdG|<span id="Primum_omnium_dierum_AdG_back"><sup>'''1'''</sup></span>]]. Aux trois cent soixante-cinq jours qui composent l’année, on ajoute le quart d’un jour et d’une nuit, pour en faire ensuite un jour intercalaire ; de là il suit qu’on ne saurait indiquer avec précision le moment du lever et du coucher des astres. On convient qu’il y a encore dans cette théorie beaucoup d’obscurité ; en effet, les saisons quelquefois commencent plusieurs jours avant le terme qui leur a été fixé, ce que les ''Grecs'' appellent ''procheimasis'' ; d’autres fois, plusieurs jours après, ce qu’ils appellent ''épicheimasis'' [[#Accedit_confessa_rerum_obscuritas_AdG|<span id="Accedit_confessa_rerum_obscuritas_AdG_back"><sup>'''2'''</sup></span>]]. Presque toujours l’action des astres se fait sentir sur la terre ou plus tôt ou plus tard qu’il ne devrait ; aussi dit-on communément, lorsque le beau temps est revenu, que tel astre a produit son effet. Ces phénomènes dépendent des astres fixés à la voûte des cieux, ainsi que des étoiles, dont les mouvemens particuliers excitent des grêles et des pluies qui sont d’une très-grande conséquence pour les biens de la terre, comme nous l’avons observé, et amènent dans la température des changemens sur lesquels le laboureur ne pouvait compter. Non-seulement les hommes y sont trompés, mais aussi les animaux, bien plus habiles que nous à prévoir ces vicissitudes, puisque d’ailleurs leur vie en dépend ; en effet, on a vu des oiseaux d’été périr par des froids arrivés trop tôt ou trop tard, et des oiseaux d’hiver par des chaleurs également imprévues. Aussi '''Virgile''' veut-il qu’on étudie aussi le cours des ''planètes'', et qu’on observe avec soin le passage du froid ''Saturne'' [[#Ideo_Virgilius_errantium_quoque_siderum_rationem_ediscendam_prœcipit_AdG|<span id="Ideo_Virgilius_errantium_quoque_siderum_rationem_ediscendam_prœcipit_AdG_back"><sup>'''3'''</sup></span>]].<br /><p style="text-align: justify; text-indent: 15px;">Quelques-uns fixent le commencement du printemps à l’apparition des papillons, parce que ces insectes sont fort délicats. Néanmoins on a observé, dans l’année même où j’écris cette partie de mon ouvrage, que le froid, ayant repris trois fois, a fait périr autant de fois les papillons, et que les hirondelles qui, s’étaient montrées dès le 6 des [[w:Calendes|''kalendes'']] de février, et semblaient annoncer le retour du printemps, ont eu à essuyer un rigoureux hiver.<br /><p style="text-align: justify; text-indent: 15px;">C’est donc une science très-problématique que celle de l’influence des astres, et les inductions qu’elle fournit sont fort douteuses [[#Res_anceps_AdG|<span id="Res_anceps_AdG_back"><sup>'''4'''</sup></span>]]. Ce qui augmente la difficulté, c’est la convexité du ciel et la différence des climats de la terre : le même astre se montre ici dans un temps, et là dans un autre ; d’où il suit que son influence ne se fait pas sentir en même temps partout. Pour surcroît d’embarras, les observations recueillies par les auteurs ont été faites dans des lieux différens, et ceux du même pays ne s’accordent pas même entre eux. On compte trois écoles astronomiques, la ''chaldéenne'', l’égyptienne et la ''grecque''. Le dictateur '''César''' en a fondé, chez les ''Romains'', une quatrième, lorsqu’aidé de '''Sosigène''', habile astronome, il fixa la longueur de l’année à une révolution du soleil. On trouva dans la suite que son calendrier était défectueux, parce que l’année, auparavant plus courte, se trouvait alors plus longue que le cours du soleil. Pour y remédier, il fallut, pour douze années consécutives, supprimer les jours intercalaires. '''Sosigène''' lui-même, le mathématicien le plus exact de son temps, après avoir revu jusqu’à trois fois ses calculs, sembla toujours douter de leur justesse, et ne cessa jamais de se corriger lui-même. De tous les auteurs qui ont traité ce sujet, et que nous avons cités au commencement de ce livre, il en est rarement deux qui soient de même avis. Cette divergence d’opinions est moins surprenante et plus excusable chez ceux qui écrivaient en des pays différens. Mais que dire de ceux qui, habitant le même pays, sont néanmoins d’avis différens ? En voici un exemple : '''Hésiode''', qui nous a laissé aussi un ouvrage sur le cours des astres, fixe le coucher matutinal des ''Pléiades'' au moment de l’équinoxe d’automne ; '''Thales''' prétend qu’il n’arrive que vingt-cinq jours après ; '''Anaximandre''' en met vingt-neuf ; '''Euctémon''', quarante-huit.<br /><p style="text-align: justify; text-indent: 15px;">Quant à nous, nous suivrons les calculs de '''César''', qui se rapportent spécialement à l’Italie ; mais nous rapporterons aussi les observations étrangères, car notre plan n’est pas de traiter d’un seul pays, mais de la nature entière. Pour être moins longs, nous citerons les pays, et non les auteurs ; et, pour abréger davantage encore, les lecteurs se souviendront que, sous le nom d’Attique, il faut aussi entendre les ''Cyclades'' ; sous le nom de ''Macédoine'', la ''Magnésie'' et la ''Thrace'' ; sous le nom d’Égypte , la ''Phénicie'', l’île de ''Cypre'' et la ''Cilicie'' ; sous celui de ''Béotie'', la ''Locride'', la ''Phocide'' et les contrées voisines ; sous le nom d’Hellespont, la ''Chersonèse'' et partie du continent jusqu’au mont ''Athos'' ; sous le nom de l’Ionie, l’Asie et les îles ''Asiatiques'' ; sous le nom du ''Péloponnèse'', l’Achaïe et les pays adjacens au couchant ; enfin sous le nom de ''Chaldée'', l’Assyrie et la ''Babylonie''. On ne sera pas étonné que nous ne parlions ni de l’Afrique, ni de l’Espagne, ni des ''Gaules''. Aucun auteur dans ces contrées n’a laissé d’observations sur le lever ou le coucher des astres. Il ne sera pas difficile néanmoins de déterminer l’époque de ces phénomènes dans ces contrées, en étudiant la disposition des cercles, telle que nous l’avons présentée dans le sixième livre. Par ce moyen, on déterminera la position astronomique, non-seulement de chaque pays, mais encore de chaque ville dont nous avons pu parler, en prenant par les ombres égales de tous les cercles, une portion du cercle de telle contrée qu’on voudra choisir, et en calculant son rapport avec le lever des astres. Il faut faire observer encore que tous les quatre ans les chaleurs reviennent à peu près les mêmes pour chaque saison, en raison du mouvement du soleil, et que toutes les huitièmes années elles sont plus fortes, à cause de la centième lunaison.</div>
<table cellspacing=15 align=center style="margin: 0 4em; font-size:85%;">
<tr>
<td style="text-align: justify; margin: 0 4em;">'''[[#Primum_omnium_dierum_AdG_back|<span id="Primum_omnium_dierum_AdG"><sup>1</sup></span>]] Cf. sur la plupart des difficultés que le texte de notre auteur révèle, les notes relatives à l’astronomie, au livre II. L’année romaine fut d’abord celle des [[w:Albe_la_Longue|''Albains'']], c’est-à-dire lunaire ; dix mois la composaient, mars en était le premier : elle avait cinquante jours de moins que l’année lunaire réelle, et soixante-un de moins que l’année solaire, c’est-à-dire trois cent quatre jours seulement ; c’était là l’[[w:Calendrier_romain|{{Info|''année de Romulus''|le calendrier dit romuléen}}]]. [[w:Calendrier_romain|{{Info|''Numa''|le calendrier dit pompilien}}]] ajouta deux mois à cette année, janvier et février, et elle se trouva être composée de trois cent cinquante-cinq jours. Elle demeura ainsi jusqu’à Jules César, où commence l’[[w:Calendrier_julien|''année julienne'']], qui se compose de trois cent soixante-cinq jours, huit heures, auxquels [[w:Calendrier_grégorien|''Grégoire le Grand'']] ajouta onze minutes, pour arriver à la plus grande exactitude possible.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Accedit_confessa_rerum_obscuritas_AdG_back|<span id="Accedit_confessa_rerum_obscuritas_AdG"><sup>2</sup></span>]] L’entrée du soleil dans tel ou tel signe du zodiaque, son passage à l’équateur, etc., ne sont pas toujours le signal d’un changement dans la température. [[w:Végèce|Végèce]] a parlé des jours prokéimasiques et épikéiniasiques :''' {{Info|''Aut enim circa diem statutum, aut ante, vel postea, tempestates fieri, compertum est : unde præcedentes, ωροϰεἰμασιν : nascentes die solenni, επιϰεἰμασιν : subsequentes, μεταϰεἰμασιν, græco vocabulo nuncuperaverunt''|Car on a constaté que les tempêtes se produisent soit vers le jour fixé, soit avant, soit après : d’où les précédents, ωροϰεἰμασιν : nés le jour solennel, επιϰεἰμασιν : les suivants, μεταϰεἰμασιν, étaient appelés par le mot grec. TdA.}} '''(IV, 40).'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Ideo_Virgilius_errantium_quoque_siderum_rationem_ediscendam_prœcipit_AdG_back|<span id="Ideo_Virgilius_errantium_quoque_siderum_rationem_ediscendam_prœcipit_AdG"><sup>3</sup></span>]] <p style="margin: 0 6em; text-indent: 0px">'''{{Info|Hoc metuens, cæli menses et sidera serva,<br />Frigida Saturni sese quo stella receptet.|Craignant cela, gardez les lunes et les étoiles du ciel, le froid de Saturne lui-même, où l’étoile les recevra. TdA.}}'''<p style="text-align: right; margin: 0 6em; text-indent: 0px">''Georg.'', I, 335.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Res_anceps_AdG_back|<span id="Res_anceps_AdG"><sup>4</sup></span>]] Voici enfin quelques idées philosophiques qui se trouvent sous la plume de Pline ; malheureusement la cause par laquelle notre auteur explique l’influence des astres est problématique, et montre que les sciences astronomiques des anciens laissaient beaucoup à désirer. Les Grecs croyaient qu’il y avait autant de cieux que de planètes ; le huitième ciel, ou le firmament, était celui dès étoiles fixés.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Occasum_matutinum_Vergiliarum_Hesiodus_AdG_back|<span id="Occasum_matutinum_Vergiliarum_Hesiodus_AdG"><sup>5</sup></span>]] L’ouvrage auquel Pline fait allusion a été mentionné par [[w:Théon_d'Alexandrie|Théon]] qui le nomme Αστριϰὴ βίϐλος [[w:en:Astronomia_(poem)|(en)]]. Cet ouvrage est perdu.'''</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k5804072n <u>Histoire Naturelle de Pline. Tome Onzième</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k5804072n/f196.item ''Livre XVIII.''], [https://gallica.bnf.fr/ark:/12148/bpt6k5804072n/f340.item ''chap. LVII.''], traduction nouvelle par M. [[w:Stéphane_Ajasson_de_Grandsagne|Ajasson de Grandsagne]] [https://gallica.bnf.fr/ark:/12148/bpt6k5804072n/f453.item <sup>NOTES</sup>], C. L. F. Panckoucke, Paris, 1829</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: center; margin: 0 2em;">''Divi[[w:S_long|{{Info|ſ|forme ancienne longue de la lettre s minuscule}}]]<nowiki />ion des jours & des nuits [[w:S_long|{{Info|ſ|forme ancienne longue de la lettre s minuscule}}]]<nowiki />uivant le cours du Soleil ; lever & coucher des étoiles ; ordre des [[w:S_long|{{Info|ſ|forme ancienne longue de la lettre s minuscule}}]]<nowiki />ai[[w:S_long|{{Info|ſ|forme ancienne longue de la lettre s minuscule}}]]<nowiki />ons ; tems où l’on [[w:S_long|{{Info|ſ|forme ancienne longue de la lettre s minuscule}}]]<nowiki />eme les bleds d’hiver.''<br /><p style="text-align: justify; text-indent: 15px;">'''D'''’ABORD il e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t pre{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que impo{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ible de déterminer au ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}te le nombre des jours de l’année, & le cours du Soleil ; car comme aux trois cents {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oixante & cinq jours dont l’année e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t compo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ée, on ajoute le quart d’un jour & d’une nuit, autrement {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ix heures, qui, au bout de quatre ans, font un jour intercalaire [[#jour_intercalaire_LPdS|<span id="jour_intercalaire_LPdS_back"><sup>'''1'''</sup></span>]], il arrive qu’on ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}auroit a{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}igner avec certitude le tems du lever & du coucher des a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tres. En {{Info|ſ|forme ancienne longue de la lettre s minuscule}}econd lieu, l’on convient qu’il y a dans cette théorie beaucoup d’ob{{Info|ſ|forme ancienne longue de la lettre s minuscule}}curité ; car quelquefois les {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ons [[#quelques_les_saisons_LPdS|<span id="quelques_les_saisons_LPdS_back"><sup>'''2'''</sup></span>]] commencent plu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ieurs jours avant le terme qui leur a été fixé, ce que les Grecs appellent ''prokheïma{{Info|ſ|forme ancienne longue de la lettre s minuscule}}is'' ; & d’autres fois plu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ieurs jours après, ce que ces mêmes Grecs expriment par le mot ''epikheïma{{Info|ſ|forme ancienne longue de la lettre s minuscule}}is'' : & l’on éprouve très {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ouvent que l’action des a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tres {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ait {{Info|ſ|forme ancienne longue de la lettre s minuscule}}entir {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur la terre, tantôt plutôt, tantôt plus tard. Au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i dit-on communément, lor{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que le beau tems e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t revenu, que tel a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tre a produit {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on effet. D’ailleurs comme tout cela dépend des globes céle{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tes, leur mouvement relatif excite quelquefois des grêles & des pluies, qui, comme nous l’avons déja [[#déjà_fait_observer_LPdS|<span id="déjà_fait_observer_LPdS_back"><sup>'''3'''</sup></span>]] fait ob{{Info|ſ|forme ancienne longue de la lettre s minuscule}}erver, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont de la plus grande con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}équence pour les biens de la terre, & qui renver{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ent l’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pérance qu’on avoit du beau tems. Et non {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eulement les hommes y {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont trompés, mais au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i les animaux, quoiqu’ils aient bien plus de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}agacité que nous pour pre{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}entir ces vici{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}itudes du ciel, d’autant que leur vie en dépend. En effet, on voit quelquefois les oi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}eaux d’été mourir par des froids qui viennent trop tard ou trop tôt, & les oi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}eaux d’hiver par des chaleurs qui arrivent de même. C’est pourquoi '''Virgile''' veut qu’on étudie au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i le cours des planetes, & qu’on ob{{Info|ſ|forme ancienne longue de la lettre s minuscule}}erve à quelle partie du zodiaque répond la planete du froid Saturne [[#Saturne_LPdS|<span id="Saturne_LPdS_back"><sup>'''4'''</sup></span>]]. Quelques-uns croient que le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}igne le plus certain du printems commencé, c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t lor{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’on voit des papillons, & cela parceque ces in{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ectes {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont fort délicats. Néanmoins on a remarqué que dans l’année même [[#lAnnée_dÉcriture_LPdS|<span id="lAnnée_dÉcriture_LPdS_back"><sup>'''5'''</sup></span>]] où j’écris ceci, le froid ayant recommencé ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’à trois fois, a fait mourir autant de fois les papillons ; & que les hirondelles, qui, s’étant montrées dès le vingt-{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ept de Janvier, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}embloient annoncer le retour du printems, ont en{{Info|ſ|forme ancienne longue de la lettre s minuscule}}uite e{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}uyé un très cruel hiver.<br /><p style="text-align: justify; text-indent: 15px;">C’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t donc une {{Info|ſ|forme ancienne longue de la lettre s minuscule}}cience très problématique que celle de l’influence des a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tres, & les inductions que l’on en tire {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont fort douteuses. Mais ce qui cau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e le plus d’incertitude, c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t cette convexité du ciel & la différence des climats de la terre, parceque le même a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tre {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e montre ici dans un tems, & là dans un autre, d’où il ré{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ulte que {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on influence ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e fait pas {{Info|ſ|forme ancienne longue de la lettre s minuscule}}entir en même tems par-tout. Un autre {{Info|ſ|forme ancienne longue de la lettre s minuscule}}urcroît de difficulté, c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t que les ob{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervations recueillies par les Auteurs ont été faites en différents lieux, & que ceux même qui ont écrit dans le même endroit ne s’accordent nullement entre eux dans ce qu’ils écrivent. On compte ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’à trois différentes {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ortes de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ectes en A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tronomie ; {{Info|ſ|forme ancienne longue de la lettre s minuscule}}avoir, celle des Chaldéens [[#secte_des_Chaldéens_LPdS|<span id="secte_des_Chaldéens_LPdS_back"><sup>'''5*'''</sup></span>]], celle des Egyptiens & celle des Grecs. On peut même dire que le Dictateur Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar [[#Dictateur_César_LPdS|<span id="Dictateur_César_LPdS_back"><sup>'''6'''</sup></span>]] en produi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}it, chez les Romains, une quatrieme, lor{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’il rédui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}it chaque année au cours du {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oleil, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervant à cet effet du travail de So{{Info|ſ|forme ancienne longue de la lettre s minuscule}}igene, très habile A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tronome. Néanmoins on découvrit en{{Info|ſ|forme ancienne longue de la lettre s minuscule}}uite que le calendrier de Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar étoit défectueux [[#calendrier_César_défectueux_LPdS|<span id="calendrier_César_défectueux_LPdS_back"><sup>'''7'''</sup></span>]], parceque l’année qui auparavant étoit plus courte que le cours du {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oleil, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e trouvoit alors plus longue : & pour corriger cette erreur, on ordonna que pendant douze années de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uite, il n’y auroit point de jour intercalaire [[#correction_erreur_LPdS|<span id="correction_erreur_LPdS_back"><sup>'''8'''</sup></span>]]. So{{Info|ſ|forme ancienne longue de la lettre s minuscule}}igene lui-même, quoique Mathématicien plus exact que les autres, ne lai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}a pas de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e conduire con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tamment en homme qui doutoit de la ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}te{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}e de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on propre calcul, pui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’il en fit ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’à trois différentes corrections. De tous les Auteurs [[#Auteurs_calendrier_LPdS|<span id="Auteurs_calendrier_LPdS_back"><sup>'''9'''</sup></span>]] qui ont écrit {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur cette matiere, & que nous avons allégués au commencement de ce livre, il s’en trouve rarement deux qui {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oient de même {{Info|ſ|forme ancienne longue de la lettre s minuscule}}entiment. Cette variété e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t moins {{Info|ſ|forme ancienne longue de la lettre s minuscule}}urprenante, comme au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i plus excu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}able, chez ceux qui écrivoient en des pays différents. Mais que dire de ceux qui, écrivant dans le même pays, n’ont pas lai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}é d’être partagés d’opinion ? En voici un exemple. '''Hé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iode''', dont il y a au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i un ouvrage [[#ouvrage_astronomique_Hésiode_LPdS|<span id="ouvrage_astronomique_Hésiode_LPdS_back"><sup>'''10'''</sup></span>]] {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur le cours des a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tres, dit que les Pléiades {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e couchent le matin dans le tems même de l’équinoxe d’automne. '''Thalès''' [[#opinion_Thalès_Hésiode_Anaximandre_LPdS|<span id="opinion_Thalès_Hésiode_Anaximandre_LPdS_back"><sup>'''11'''</sup></span>]] dit que cela arrive vingt-cinq jours après. '''Anaximandre''' en met vingt-neuf ; '''Euctémon''' [[#Euctémon_LPdS|<span id="Euctémon_LPdS_back"><sup>'''12'''</sup></span>]] quarante-huit.<br /><p style="text-align: justify; text-indent: 15px;">Quant à nous, nous {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivrons le calcul de Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar, ayant principalement égard à l’Italie. Nous ne lai{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}erons néanmoins de rapporter les opinions étrangeres, parceque notre objet n’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t pas de traiter d’un {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eul pays, mais de la Nature entiere. Seulement, pour éviter les longueurs, nous n’indiquerons que les pays où chaque opinion a lieu, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ans faire mention des auteurs de ces a{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ertions : & pour abréger encore davantage, les Lecteurs voudront bien {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ouvenir que quand il e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t parlé de l’Attique, il faut, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous ce nom, entendre au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i les Cyclades ; que {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous le nom de Macédoine, il faut entendre au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i la Magné{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ie & la Thrace ; {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous le nom de l’Egypte, la Phénicie, l’i{{Info|ſ|forme ancienne longue de la lettre s minuscule}}le de Chypre & la Cilicie; {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous celui de la Béotie, la Locride, la Phocide & les contrées voi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ines ; {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous le nom de l’Hel le{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pont, la pre{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’i{{Info|ſ|forme ancienne longue de la lettre s minuscule}}le de Thrace & le pays de terre ferme, ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’au mont Athos ; {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous le nom de l’Ionie, l’A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ie & les i{{Info|ſ|forme ancienne longue de la lettre s minuscule}}les A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iatiques ; {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous le nom du Péloponne{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e, l’Achaïe & les contrées [[#contrées_adjacentes_ouest_Péloponnese_LPdS|<span id="contrées_adjacentes_ouest_Péloponnese_LPdS_back"><sup>'''13'''</sup></span>]] adjacentes qu’elle a à {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on couchant ; {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous le nom des Chaldéens, l’Assyrie & la Babylonie. Il ne faudra pas s’étonner {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i je ne parle ici ni de l’Afrique, ni de l’Espagne, ni des Gaules, pui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que ces pays n’ont eu aucun Auteur qui ait écrit du cours des a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tres, ni de leur lever. Toutefois il ne {{Info|ſ|forme ancienne longue de la lettre s minuscule}}era pas difficile de connoître le tems où ils {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e levent dans ces pays-là même, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i l’on e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t in{{Info|ſ|forme ancienne longue de la lettre s minuscule}}truit de l’arrangement des cercles céle{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tes, tel que nous l’avons expliqué au {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ixieme livre de cet ouvrage ; car, par ce moyen, & par les {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eules notions que nous avons expo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ées en donnant une nomenclature des lieux, on {{Info|ſ|forme ancienne longue de la lettre s minuscule}}aura la po{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ition, non {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eulement de chaque pays, mais encore de chaque ville, en prenant par les ombres égales de tous les cercles, un {{Info|ſ|forme ancienne longue de la lettre s minuscule}}egment du cercle de tel pays qu’on voudra choi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ir, & en cherchant {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on rapport avec le lever des a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tres. Il faut remarquer au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i que de quatre [[#Columelle_LPdS|<span id="Columelle_LPdS_back"><sup>'''14'''</sup></span>]] en quatre ans les {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ons & les chaleurs reviennent à peu près les mêmes, & cela à cau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e du mouvement du Soleil ; & que de huit en huit ans ces mêmes chaleurs reviennent plus con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}idérables, en vertu de la centieme lunai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}on.</div>
{{Boîte déroulante début|titre=Notes du traducteur|alignT=center}}
<div style="text-align: justify; border: 2px; border-radius:15px; font-size:85%;"><br/>
<table cellspacing=15 align=center style="margin: 0 4em;">
<tr>
<td style="text-align: justify; margin: 0 4em; text-indent: 15px">'''[[#jour_intercalaire_LPdS_back|<span id="jour_intercalaire_LPdS"><sup>1</sup></span>]] Con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ultez, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur toute cette que{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tion, nos notes 13 & 14 {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur le huitieme chapitre du {{Info|ſ|forme ancienne longue de la lettre s minuscule}}econd livre de Pline, tome 1, p. 41 & 42 :<br /><p style="text-align: justify; text-indent: 15px; margin: 0 5em;">(13) [[w:Suétone|Suétone]] s’exprime mieux, lor{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’il écrit : chaque quatrieme année ''quarto quoque anno''. Il est vrai que, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}elon le [[w:Jean_Hardouin|Pere Hardouin]], il faut comprendre dans la période de cinq ans, dont parle Pline, la premiere & la cinquieme année comme Bi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}extiles ; ce qui revient aux quatre années de Suétone, dont la quatrieme avoit un ''bi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ex'' ; mais en vérité cette explication est des plus forcées. Je {{Info|ſ|forme ancienne longue de la lettre s minuscule}}erois donc d’avis qu’il faudroit lire dans Pline comme dans Suétone, ''quarto anno'', {{Info|ſ|forme ancienne longue de la lettre s minuscule}}i nous n’apprenions d’ailleurs de cet Hi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}torien, que dès le regne d’Augu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}te il s’étoit déja gli{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}é plu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ieurs abus & altérations dans l’année Julienne. On voit du moins qu’il y réforma plu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ieurs cho{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es, sous prétexte de la remettre {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur le pied où Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar l’avoit in{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tituée. Cela me donneroit à pen{{Info|ſ|forme ancienne longue de la lettre s minuscule}}er qu’on fit dès-lors attention à la fau{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}eté & à l’excédence du calcul Julien ; mais qu’Augu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}te, par respect pour la mémoire de Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar, affecta d’imputer la faute à la négligence des Prêtres chargés à Rome de l’in{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pection du Calendrier ; qu’au demeurant, on découvrit l’abus, & qu’on e{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}aya d’y remédier, en n’ajoûtant un jour entier à l’année ordinaire que chaque ''cinquieme année'' comme Pline paroît l’articuler ici expre{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ement. Mais d’ailleurs il e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t évident qu’à la longue le période bi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}extile de quatre années en quatre années prévalut {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur celui de chaque cinquieme année, dont parle Pline ; & même il paroît que ceux qui, par la {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uite, voulurent {{Info|ſ|forme ancienne longue de la lettre s minuscule}}upputer les tems, récapitulerent, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ans exception, toutes les bi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}extiles quartenaires écoulées depuis l’in{{Info|ſ|forme ancienne longue de la lettre s minuscule}}titution Julienne ; car en 1582, on trouva par ce moyen que l’année étoit reculée de dix jours & plus; d’autant que l’excédence du calcul Julien, qui {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uppo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e à l’année révolue 365 jours & {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ix heures, au lieu de 365 jours 5 heures 49 minutes, 8 {{Info|ſ|forme ancienne longue de la lettre s minuscule}}econdes 17 tierces & 13 quarts qu’elle a réellement, forme tous les ans environ 11 minutes de trop, & tous les cent trente-quatre ans un jour entier d’excès. Le Pape Grégoire XIII trouvant donc l’année reculée de plus de dix jours ; ce qui dérangeoit l’économie annuelle des {{Info|ſ|forme ancienne longue de la lettre s minuscule}}olemnités, remédia à cet inconvénient en retranchant de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on autorité dix jours au mois d’Octobre de l’année 1582, où l’on étoit alors ; & en réglant qu’à l’avenir tous les quatre cents ans on omettroit trois années bi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}extiles. Ce réglement devint une loi pour pre{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que toute l’Europe chrétienne. L’autre maniere de compter fut appellée l’ancien {{Info|ſ|forme ancienne longue de la lettre s minuscule}}tyle. La Grande-Bretagne a long-tems per{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i{{Info|ſ|forme ancienne longue de la lettre s minuscule}}té à s’en {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervir malgré {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on abus manife{{Info|ſ|forme ancienne longue de la lettre s minuscule}}te. Enfin le Parlement d’Angleterre, par acte du mois de Septembre 1752, a adopté la réforme Grégorienne.<br /><p style="text-align: justify; text-indent: 15px; margin: 0 4em;">(14) Le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oleil, en fai{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ant le tour du cercle oblique, parcourt réellement 360 degrés ou {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ections ; pui{{Info|ſ|forme ancienne longue de la lettre s minuscule}}que tout cercle {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e divi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e en 360 parties appellées degrés : mais la me{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ure de chaque degré du cercle parcouru annuellement par le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oleil, excede tant {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oit peu, c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t-à-dire de quelques légeres fractions de tems, la durée de chacun de nos jours révolus ; durée qui n’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t, comme on {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ait, que de 24 heures préci{{Info|ſ|forme ancienne longue de la lettre s minuscule}}es ; le{{Info|ſ|forme ancienne longue de la lettre s minuscule}}quelles, comparées à un degré, en produi{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ent, au bout de l’année, 365 & plus pour le cercle, au lieu de 360 {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eulement que le cercle requerroit. D’après une connoi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ance con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}u{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e de ces principes, Jules Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e voyant Dictateur, Grand-Pontife, & maître du monde, entreprit, l’an 140 avant J. C. de réformer les abus qui s’étoient gli{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}és, tant dans l’année Pompilienne, ou de Numa, que dans celle des Pontifes, encore plus irréguliere que celle de Numa. A cet effet, il fit venir d’Alexandrie le Philo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ophe So{{Info|ſ|forme ancienne longue de la lettre s minuscule}}igenes. Celui-ci décida fau{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ement que le cercle des jours de l’année révolue excédoit du nombres 5 joint au quart de 1 les 360 degrés du cercle oblique parcouru par le {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oleil : expo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}é faux, auquel le Dictateur, occupé d’autres {{Info|ſ|forme ancienne longue de la lettre s minuscule}}oins, déféra {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ans autre examen. Jules Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar régla donc, de l’avis de {{Info|ſ|forme ancienne longue de la lettre s minuscule}}on A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tronome, que l’année {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eroit divisée en 365 jours ; & quant au quart de jour re{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tant, qui produit {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ix heures, il ordonna qu’on n’y auroit aucun égard pour chaque année particuliere ; mais que chaque quatrieme année on réuniroit la totalité de quatre fois {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ix heures, qui en font vingt-quatre, pour en compo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}er un jour entier; & qu’ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i cette quatrieme année auroit 366 jours. Il régla de plus, que ce jour intercalaire, ou ajoûté à chaque quatrieme année, seroit le 24 Février. Les Romains nommoient ce jour-là ''bis {{Info|ſ|forme ancienne longue de la lettre s minuscule}}exto calendas Martii'', c’est-à-dire, le ''{{Info|ſ|forme ancienne longue de la lettre s minuscule}}econd {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ixieme avant les calendes de Mars'' ; d’où il arriva que l’année où tomboit ce jour intercalaire fut appellée bis-{{Info|ſ|forme ancienne longue de la lettre s minuscule}}extile.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#quelques_les_saisons_LPdS_back|<span id="quelques_les_saisons_LPdS"><sup>2</sup></span>]] Végece dit pareillement, liv. 4, chap. 40 : ''Aut enim circa diem {{Info|ſ|forme ancienne longue de la lettre s minuscule}}tatutum, aut ante, vel po{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tea, tempe{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tates fieri compertum e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t : unde præcedentes, ωροϰεἰμασιν : na{{Info|ſ|forme ancienne longue de la lettre s minuscule}}centes die {{Info|ſ|forme ancienne longue de la lettre s minuscule}}olenni, επιϰεἰμασιν : {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ub{{Info|ſ|forme ancienne longue de la lettre s minuscule}}equentes, μεταϰεἰμασιν, Græco vocabulo nuncuperaverunt'' [[#Accedit_confessa_rerum_obscuritas_AdG_back|<sup>⤴️</sup>]]. On lit au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i chez [[w:Columelle|Columelle]], dans {{Info|ſ|forme ancienne longue de la lettre s minuscule}}a Préface :''' {{Info|''Neque enim ſemper eumdem, cælum & annus, velut ex præſcripto habitum gerunt : nec omnibus annis eodem vultu venit aſtas, aut hyems, &c.''|Car le ciel et l’année ne portent pas toujours le même habit, comme par un précepte : ni l’automne n’arrive chaque année avec la même apparence, ni l’hiver, etc. TdA}}
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#déjà_fait_observer_LPdS_back|<span id="déjà_fait_observer_LPdS"><sup>3</sup></span>]] Au liv. 17, chap. 2.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Saturne_LPdS_back|<span id="Saturne_LPdS"><sup>4</sup></span>]] Ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i qu’il l’in{{Info|ſ|forme ancienne longue de la lettre s minuscule}}inue dans {{Info|ſ|forme ancienne longue de la lettre s minuscule}}es ''Géorg.'' liv. I, v. 335 :'''<br /><p style="margin: 0 6em; text-indent: 0px">{{Info|Hoc metuens, cæli menses et sidera serva,<br />Frigida Saturni sese quo stella receptet.|Craignant cela, gardez les lunes et les étoiles du ciel, le froid de Saturne lui-même, où l’étoile les recevra. TdA.}}
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#lAnnée_dÉcriture_LPdS_back|<span id="lAnnée_dÉcriture_LPdS"><sup>5</sup></span>]] Pline, au quatorzieme livre, chap. 4, comptoit deux cents trente ans depuis la mort de [[w:Cicéron|Cicéron]] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Cicéron_I|<sup>🔄</sup>]], arrivée l’an de Rome 600. L’année qu’il indique ici, & où il {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e trouvoit avoir compo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}é quatre livres de plus, e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t probablement la {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivante, c’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t-à-dire l’année 831 de la fondation de Rome.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#secte_des_Chaldéens_LPdS_back|<span id="secte_des_Chaldéens_LPdS"><sup>5*</sup></span>]] Sur l’année Chaldéenne, qui étoit la même que la Judaïque, con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ultez [[w:Eusèbe_de_Césarée|Eu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ebe]], ''Præpar. Evang.'' liv. 9, chap. 17, où il fait Abraham inventeur de l’a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tronomie chez les Chaldéens. Les A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}trologues Chaldéens étoient ordinairement des Prêtres des Dieux, tels que [[w:Bérose|Béro{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e]], auquel les Athéniens éleverent dans leur Gymna{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e une {{Info|ſ|forme ancienne longue de la lettre s minuscule}}tatue à langue dorée. Sur quoi voyez Pline, liv. 7, chap. 37. Ce Béro{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e étoit un Prêtre de [[w:Bēl|Belus]] ; il e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}t cité par [[w:Clément_d'Alexandrie|Clément d’Alexandrie]], & par [[w:Flavius_Josèphe|Jo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}eph]] [[#Flavius_Josèphe_I|<sup>⤵️</sup>]], contre Apion, liv. 1. Sur l’année Egyptienne, & {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur l’ancienne année Grecque, con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ultez [[w:Hérodote|Hérodote]] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Hérodote_I|<sup>🔄</sup>]] liv. 2, n°. 4. Cicéron rend ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tice à l’étude que firent des a{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tres les Egyptiens & les Babyloniens, liv. 1, de ''Divinat.'' n°. 16 :''' {{Info|''Ægyptii, & Babylonii, in camporum patentium aquoribus habitantes, cùm ex terra nihil emineret, quod contemplationi cæli officere poſſet, omnem curam in ſiderum cognitione poſuerunt''|Les Égyptiens et les Babyloniens, vivant dans les eaux des plaines découvertes, alors que rien ne dépassait de la terre qui pût gêner la contemplation du ciel, mettaient tous leurs soins dans la connaissance des étoiles. TdA}}.
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Dictateur_César_LPdS_back|<span id="Dictateur_César_LPdS"><sup>6</sup></span>]] Voyez les notes 13 & 14 {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur le chap. 8 du liv. 2, tome 1, p. 41 & 42.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#calendrier_César_défectueux_LPdS_back|<span id="calendrier_César_défectueux_LPdS"><sup>7</sup></span>]] Voyez les notes indiquées dans la note précédente ; & joignez-y les ob{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervations {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivantes, qui {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont de M. De{{Info|ſ|forme ancienne longue de la lettre s minuscule}}places, p. 339 : « Le calendrier chrétien, ayant {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivi la réformation de Jules Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar, il {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e trouva qu’en l’année 1582, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ous le Pape Grégoire XIII, l’équinoxe étoit remontée ju{{Info|ſ|forme ancienne longue de la lettre s minuscule}}qu’au 11 de Mars, au lieu du 21, où elle devoit être. Ce Pape, après avoir con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ulté Clavius & Ciaconius, les plus habiles A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tronomes du tems, ordonna qu’en cette même année 1582, on compteroit le 5 du mois d’Octobre, au lieu du 15, afin de retrancher les dix jours qui s’étoient gli{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}és de trop, en {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uivant la {{Info|ſ|forme ancienne longue de la lettre s minuscule}}upputation Julienne, depuis le Concile de Nicée, tenu en 325 : on convint encore de continuer l’intercalation d’un jour tous les quatre ans ; & qu’en outre, pour éviter dans la {{Info|ſ|forme ancienne longue de la lettre s minuscule}}uite pareille erreur, il {{Info|ſ|forme ancienne longue de la lettre s minuscule}}eroit fait un retranchement de trois jours intercalaires, dans l’e{{Info|ſ|forme ancienne longue de la lettre s minuscule}}pace de quatre {{Info|ſ|forme ancienne longue de la lettre s minuscule}}iecles, à cau{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e des onze minutes qui manquent aux {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ix heures des années, dont on compo{{Info|ſ|forme ancienne longue de la lettre s minuscule}}e l’année intercalaire, ou bi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}extile ; ces trois jours {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e retranchent en l’année qui finit les trois premiers {{Info|ſ|forme ancienne longue de la lettre s minuscule}}iecles. De célebres A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}tronomes modernes ont fait voir que, malgré cette précaution, il y auroit encore, au bout de quatre cents ans, plu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ieurs jours de variation dans l’équinoxe ».'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#correction_erreur_LPdS_back|<span id="correction_erreur_LPdS"><sup>8</sup></span>]] Etabli par Jules Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar, & qui revenoit tous les quatre ans. Ecoutons Suétone, vie de ce Dictateur, chap. 40 : {{Info|''Faſtos correxit, jampridem vitio Pontiſicum, per intercalandi licentiam adeo turbatos, ut neque meſſium feria aſtati, neque vindemiarum autumno competerent, annumque ad curſum ſolis accommodevit, ut CCCLXV dierum eſſet, & intercalario menſe ſublato, unus dies quarto quoque anno intercalaretur, &c''|Il corrigea les jeûnes, qui avaient toujours été une faute pontique, si perturbés par la permission de l’intercalation, que ni les fêtes du mois ne tenaient, ni les récoltes ne correspondaient à l’automne, et il ajusta l’année à la course du soleil, de sorte que c’était 365 jours, et après le mois intercalaire, un jour était intercalé tous les quatre ans, etc. TdA}}. On s’apperçut que cette correction de Jules Cé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ar étoit elle-même fautive. On tenta de nouveau de remédier au vice du calendrier ; {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur quoi con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ultez Solin, chapitre 1, p. 5 ; le P. Petau, ''de Doctr. temp.'' chap. 3 ; mais {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur-tout [[w:Macrobe|Macrobe]], qui s’exprime ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i, liv. 1, ''Saturn.'' chap. 14, p. 255 :''' {{Info|''Sacerdotes ſibi errorem novum ex ipſa emendatione ſecerunt. Nam cùm oporteret diem, qui ex quadrantibus conſit, quarto quoque anno conſecto, antequam quintus inciperet, intercalare, illi quarto non peracto ſed incipiente, intercalabant. Hic error ſex & triginta annis permanſit : quibus annis intercalati ſunt dies duodecim, cùm deberent intercalari novem. Sed hunc quoque errorem ſerò deprehenſum correxit Auguſtus, qui annos duodecim ſine intercalari die tranſigi juſſit : ut illi tres dies, qui per annos triginta & ſex vitio ſacerdotalis ſeſtinationis excreverant, ſequentibus annis duodecim, nullo die intercalato, devorarentur. Poſt hoc unum diem, ſecundùm ordinationem Caſaris, quinto quoque incipiente anno intercalari juſſit : & omnem hunc ordinem area tabula ad aternam cuſtodiam inciſione mandavit.''|Les prêtres retranchèrent une nouvelle erreur de leur correction. Car lorsqu’il fallait intercaler le jour qui est composé de quadrants, la quatrième année consécutive, avant que la cinquième ne commence, on intercalait ceux lorsque la quatrième n’était pas terminée mais commençait. Cette erreur a duré trente-six ans : années au cours desquelles douze jours ont été intercalés, alors qu’il aurait fallu en intercaler neuf. Mais cette erreur fut également détectée par Auguste, qui ordonna que douze années s’écoulèrent sans jour intercalaire : afin que ces trois jours, qui avaient été excrétés pendant les trente-six années du vice sacerdotal de cessation, soient dévorés dans le douze années suivantes, sans jour intercalaire. Après ce jour, selon l’ordonnance de César, il décréta que la cinquième année serait également intercalée : et tout l’ordre fut ordonné d’être gravé par le conseil du domaine pour la garde éternelle. TdA}}.
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Auteurs_calendrier_LPdS_back|<span id="Auteurs_calendrier_LPdS"><sup>9</sup></span>]] Ces Auteurs {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ont Hiéron, Philomêtor, Attale, Archelaüs, Xénophon, Magon, Caton, Silanus, Varron, &c. dont Pline a fait mention {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur la fin du chapitre 3.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#ouvrage_astronomique_Hésiode_LPdS_back|<span id="ouvrage_astronomique_Hésiode_LPdS"><sup>10</sup></span>]] Nous apprenons de Théon que cet ouvrage {{Info|ſ|forme ancienne longue de la lettre s minuscule}}e nommoit l’A{{Info|ſ|forme ancienne longue de la lettre s minuscule}}trique, Ἀςριϰὴ ϐίϐλος. Voyez au{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}i {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur ce même ouvrage, une Epigramme de [[w:Callimaque_de_Cyr%C3%A8ne|Callimaque]] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Callimaque_I_de_Cyrène_II|<sup>🔄</sup>]], citée dans la vie d’Aratus, qui fait partie de l’Uranologie de [[w:Denis_Pétau|Petau]], liv. 2, ''Var. Di{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ert.'' chap. 9, p. 97.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#opinion_Thalès_Hésiode_Anaximandre_LPdS_back|<span id="opinion_Thalès_Hésiode_Anaximandre_LPdS"><sup>11</sup></span>]] Con{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ultez, {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur cette opinion de Thalès, ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i que {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur celles d’Hé{{Info|ſ|forme ancienne longue de la lettre s minuscule}}iode & d’Anaximandre, l’Uranologie citée note précédente.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Euctémon_LPdS_back|<span id="Euctémon_LPdS"><sup>12</sup></span>]] ''Euctemon'' ; ain{{Info|ſ|forme ancienne longue de la lettre s minuscule}}i portent les manu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}crits, & non pas ''Eudemon''. J’ai traité d’Euctêmon (en Grec Εὐϰτημον) dans les notes alphabétiques du premier livre, & plus récemment dans la note 21 du chapitre précédent.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#contrées_adjacentes_ouest_Péloponnese_LPdS_back|<span id="contrées_adjacentes_ouest_Péloponnese_LPdS"><sup>13</sup></span>]] Telles que l’Elide, l’Arcadie, la Me{{Info|ſ|forme ancienne longue de la lettre s minuscule}}lénie.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Columelle_LPdS_back|<span id="Columelle_LPdS"><sup>14</sup></span>]] Columelle, liv. 3, chap. 6 :''' {{Info|''Quo tempore ſol in eamdem partem ſigniſeri per eoſdem numeros redit, per quos cursus ſui principium cæperat : quem circuitum meatus dierum integrorum mille quadringentorum ſexaginta unius [[w:Apocatastase|ὰ τοκατάςασιν]] vocant ſtudioſi rerum cæleſtium''|A ce moment-là, le soleil revient dans la même direction au moyen des mêmes nombres par lesquels il a commencé sa course : laquelle course de mille quatre cent soixante et un jours entiers est appelée ὰ τοκατάςασιν par ceux qui étudient les choses célestes. TdA}}.</td>
</tr>
</table><br/><br/></div>
{{Boîte déroulante fin}}
<div style="text-align: right; margin: 0 2em 0 1em;">[https://books.google.fr/books?id=JeyFTzG771cC&newbks=1&newbks_redir=0&dq=Louis%20Poinsinet%20de%20Sivry%20Pline%20l'ancien&hl=fr&pg=PP9#v=onepage&q&f=true <u>Histoire Naturelle de Pline. Tome Sixieme</u>], [https://books.google.fr/books?id=JeyFTzG771cC&newbks=1&newbks_redir=0&dq=Louis%20Poinsinet%20de%20Sivry%20Pline%20l'ancien&hl=fr&pg=PA257#v=onepage&q&f=true ''Livre Dix-huitieme.''], [https://books.google.fr/books?id=JeyFTzG771cC&newbks=1&newbks_redir=0&dq=Louis%20Poinsinet%20de%20Sivry%20Pline%20l'ancien&hl=fr&pg=PA455#v=onepage&q&f=true ''Diviſion des jours & des nuits ſuivant le cours du Soleil ; lever & coucher des étoiles ; ordre des ſaiſons ; tems où l’on ſeme les bleds d’hiver.''], traduction en françois, avec le texte latin rétabli d’après les meilleures leçons manu{{Info|ſ|forme ancienne longue de la lettre s minuscule}}crites ; accompagnée de Notes critiques pour l’éclairci{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ement du texte, & d’Ob{{Info|ſ|forme ancienne longue de la lettre s minuscule}}ervations {{Info|ſ|forme ancienne longue de la lettre s minuscule}}ur les connoi{{Info|ſſ|forme ancienne longue de la lettre s minuscule}}ances des Anciens comparées avec les découvertes des Modernes, par M. [[w:Louis_Poinsinet_de_Sivry|Louis Poinsinet de Sivry]], Chez la veuve Desaint, Paris, 1771</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Flavius_Josèphe|'''Flavius Josèphe''']] [[#Flavius_Josèphe|<span id="Flavius_Josèphe_back"><sup>'''I'''</sup></span>]] ==
<p style="text-align: right;">([[w:37|37]]/[[w:38|38]], à [[w:Histoire_de_Jérusalem#Période_romaine_et_byzantine_(63_av._J.-C._-_638)|''Jérusalem'']] — vers [[w:100|100]], à [[w:Rome_antique|''Rome'']]) [[w:Ier_siècle|<sup>⏳</sup>]] [[s:Auteur:Flavius_Josèphe|<sup>📚</sup>]]
<div style="text-align: justify; margin: 0 1em; text-indent: 15px">[[w:historiographe|Historiographe]] ''romain'' [[w:Juifs|''juif'']] d’origine [[w:Judée_(province romaine)|''judéenne'']], il participe activement au début de la ''première guerre judéo-romaine'' en tant que commandant militaire de ''Galilée'' contre les Romains, avant de se rendre à [[w:Vespasien|'''Vespasien''']] [[#Vespasien|<span id="Vespasien_back"><sup>'''II'''</sup></span>]] lors de la prise de la garnison juive de la forteresse de [[w:Jotapata|''Jotapata'']] en juillet 67, et de devenir intermédiaire, interprète et négociateur entre les ''romains'' et les ''Juifs'' lors du siège de ''Jérusalem'' conduit par '''Titus''' [[#Titus_back|<sup>⤴️</sup>]] en 70. Après la fin de la grande révolte ''judéenne'', en 71, il s’établit auprès de son protecteur à ''Rome'' où il obtient la [[w:citoyenneté_romaine|''citoyenneté romaine'']].</div>
{{Boîte déroulante début|titre=NdA Flavius Josèphe|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Flavius_Josèphe_back|<span id="Flavius_Josèphe"><sup>I</sup></span>]] De son nom de naissance Joseph ben (fils de) Matthatias, de l’hébreu יוסף בן מתתיהו / Yossef [[wikt:en:יוסף#Hebrew|(en)]] ben [[wikt:en:בן#Noun|(en)]] Matityahou [[wikt:en:מתתיהו#Hebrew|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;">• de la troisième personne du singulier [[w:Jussif|''jussive'']], signifiant ainsi « peut-il ajouter », du verbe הוֹסִיף / hosíf [[wikt:en:הוסיף#Hebrew|(en)]], « 1. Ajouter (quelque chose) à (quelque chose d'autre). 2. (littéraire) Continuer (à faire quelque chose). 3. (archaïque) Coordonné avec un autre verbe pour indiquer que l’action de ce verbe "ajoute" d’une manière ou d’une autre. »;<br /><p style="margin: 0 2em; text-indent: 15px;">• du nom commun בֵּן / bén, « 1. Fils. 2. (ne produit plus de mot ou d’expression) Un descendant mâle direct. 3. Un mec, un garçon. 4. (n’est plus productif, état de construction) Possesseur de (connaissance, capacité, etc.). 5. (État construit) Utilisé pour exprimer l’âge d’un homme, d’un garçon ou le référent d’un nom masculin : âge, âgé. »;<br /><p style="margin: 0 2em; text-indent: 15px;">• de la contraction du nom commun מַתָּנַת / mataná [[wikt:en:מתנה#Hebrew|(en)]], « cadeau, présent, don »;<br /><p style="margin: 0 2em; text-indent: 30px;">➥ du verbe נתן / natán [[wikt:en:נתן#Verb|(en)]], « 1. Donner. 2. Autoriser, permettre, laisser. 3. (archaïque) Mettre, placer. 4. (archaïque, hébreu biblique) Se transformer en. »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ et du nom propre יהוה / YHWH [[wikt:en:יהוה#Hebrew|(en)]], « (Judaïsme) Tétragramme : mot en quatre lettres hébraïques utilisé comme nom [[wikt:ineffable#Français|''ineffable'']] de Dieu dans la Bible hébraïque, diversement rendu par Yahweh ou Jéhovah. »;<br /><p style="margin: 0 2em; text-indent: 15px;">Son tria nomina à l’obtention de sa ''citoyenneté romaine'' est {{Info|Titus|praenomen, nom individuel du citoyen romain}} {{Info|Flavius|nomen, nom de famille}} {{Info|Josephus|cognomen, surnom héréditaire, servant à distinguer les diverses branches d’une même gens}}, prenant ainsi le nom de son bienfaiteur :<br /><br /><p style="margin: 0 2em; text-indent: 15px;">[[#Vespasien_back|<span id="Vespasien"><sup>II</sup></span>]] [[w:Nom_romain|Tria Nomina]] en latin {{Info|Titus|praenomen, nom individuel du citoyen romain}} {{Info|Flavius|nomen, nom de famille}} {{Info|Vespasianus|cognomen, surnom héréditaire, servant à distinguer les diverses branches d’une même gens}};<br /><p style="margin: 0 2em; text-indent: 15px;">[[w:L%C3%A9gat_(Rome_antique)|''Légat'']] lors de la [[w:Conqu%C3%AAte_romaine_de_la_Grande-Bretagne|''conquête de la Bretagne en 43'']] et lors de la [[w:Premi%C3%A8re_guerre_jud%C3%A9o-romaine|''rébellion juive de 66'']] en [[w:Jud%C3%A9e_(province_romaine)|''Judée'']]. Fin décembre 69, il est couronné empereur par le [[w:S%C3%A9nat_romain|''Sénat'']] après la guerre civile de l’[[w:Ann%C3%A9e_des_quatre_empereurs|''année des quatre empereurs'']], et fonde la dynastie des [[w:Flaviens|''Flaviens'']].<br /><p style="text-align: right; margin: 0 2em;">(17 novembre [[w:9|9]], près de [[w:Reate|''Reate'']] dans la région centrale italienne du [[w:Latium|''Latium'']] — 23/24 juin [[w:79|79]], à la station thermale de [[w:Aquae_Cutiliae|''Aquae Cutiliae'']], à l’est de ''Reate'')<sup>[[w:Ier_siècle|⏳]]</sup><br/><br/></div>
'''
{{Boîte déroulante fin}}
=== [[w:Contre_Apion|Contre Apion]] ===
<p style="text-align: right;">[[s:Contre_Apion|📚]]
{| cellpadding="0" align="{{{align|right}}}" style="margin-left: 2em; width:40%; border-spacing:3px; text-align:center; background-color:#F8F9FA; border:2px solid #C8CCD1"
|-
| style="border:solid 1px #F8F9FA" | [https://archive.org/details/contreapiontexte0000jose/page/n156/mode/1up {{Info|'''Éditions & Manuscrits'''|Flavius Josèphe Contre Apion, Théodore Reinach & Léon Blum, 1930}}]
|- style="font-size:8pt; line-height:10pt; vertical-align:middle"
| align="center" | <div style="margin-right: 1em; padding:0 0 4px 0; text-align:justify;">{{{légende|
* La traduction ''latine'' a été imprimée dès 1480 à [[w:Vérone#Époque_moderne|''Vérone'']] par '''Pierre Maufer''' [[w:en:Petrus_Maufer|(en)]]. L’édition de cette traduction, due à [[w:Sigismund_Gelenius|'''Sigismond Gelenius''']] (''Paris'', 1535), qui constitue la « [[w:Vulgate|Vulgate]] », présente un texte souvent « amélioré » de façon arbitraire. La seule édition critique est celle de '''Ch. Boysen''' (''Vienne'', 1898) qui fait partie du [[w:Corpus_scriptorum_ecclesiasticorum_latinorum|{{Info|''Corpus scriptorum ecclesiasticorum latinorum''|Le corpus des écrits ecclésiastiques latins}}]]. Elle repose principalement sur les manuscrits L(aurentianus LXVI, 2), B(odleianus Canonicianus 148), R(egius Parisinus 5049) de la I<sup>re</sup> classe, C(heltenhamensis Phillipicus 12311), P(arisinus 1615), Pa(rsinus 5054) de la seconde.
* Le texte grec est édité pour la première fois dans l’édition complète de '''Josèphe''' à [[w:Bâle#XVIe_siècle|''Bâle'']], chez [[w:Johann_Froben|''Froben'']], en 1544 par [[w:Arnoldus_Arlenius|'''Arlenius''']] qui a peut-être fait usage du ''Schleusingensis'' (un des fils du Laurentianus), mais a introduit grand nombre de corrections tantôt heureuses, et tantôt arbitraires. Par la suite notre traité n’a guère été imprimé que comme partie intégrante d’éditions complètes des œuvres de '''Josèphe'''. Les plus importantes sont celles de '''E. Bernard''' (1700), de [[w:John_Hudson_(classiciste)|'''Hudson''']] (1720) — le premier qui ait utilisé L —, de [[w:Sigebert_Havercamp|'''Havercamp''']] (1726), simple compilateur, de [[w:Karl_Wilhelm_Dindorf|'''L. Dindorf''']] (1847), de [[w:Immanuel_Bekker|'''Imm. Bekker''']] (1856), tout à fait manquée. L’édition critique de '''Niese''' [[w:en:Benedikt_Niese|(en)]] (1889) est la base de tous les travaux ultérieurs, notamment des éditions de '''Naber''' (1896) et de [[w:Henry_St._John_Thackeray|'''H. St. J. Thackeray''']] (coll. Loeb, 1926 : il n’a encore paru que le ''C. Apion'', la ''Vita'' et le commencement de la ''Guerre'') qui ont pu profiter aussi des conjectures de '''Cobet''', de '''Holwerda''', et de '''Herwerden'''.}}}</div>
|}
<div style="text-align: justify; margin: 0 1em; text-indent: 15px">Dernière œuvre écrite par '''Flavius Josèphe''', vers [[w:93|93]], dont l’objectif est de répondre aux critiques qu’ont soulevées ses [[w:Antiquit%C3%A9s_juda%C3%AFques|''Antiquités judaïques'']], de défendre l’ancienneté du peuple ''juif'' et du [[w:Judaïsme#Judaïsme_antique|''judaïsme'']] (Livre I) et les accusations d’[[w:Apion_(grammairien)|'''Apion''']] [[#Apion|<span id="Apion_back"><sup>'''I'''</sup></span>]] (Livre II).</div>
{{Boîte déroulante début|titre=NdA Apion|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Apion_back|<span id="Apion"><sup>I</sup></span>]] Du nom propre grec ancien [[wikt:Apion#Latin|Ἀπίων / Apíôn]];
<br/><br /><p style="margin: 0 2em; text-indent: 15px;">'''[[w:Grammaticus|''Grammairien'']] [[#grammairien|<span id="grammairien_back"><sup>II</sup></span>]] et [[w:Polygraphe_(auteur)|''polygraphe'']] [[#polygraphe|<span id="Grammairien_back"><sup>III</sup></span>]] ''grec'' d’Alexandrie.<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] seconde moitié du [[w:Ier_siècle_av._J.-C.|I<sup>er</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]] — première moitié du [[w:Ier_siècle|I<sup>er</sup> siècle {{Info|EC|de l’Ère Commune}}]])
<br /><br /><p style="margin: 0 2em; text-indent: 15px;">'''[[#grammairien_back|<span id="grammairien"><sup>II</sup></span>]] Du nom commun latin grammaticus [[wikt:en:grammaticus#Latin|(en)]]; du nom commun grec ancien γραμματικός / grammatikós [[wikt:en:γραμματικός#Noun|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px">➥ du nom commun γρᾰ́μμᾰ / grámma [[wikt:en:γράμμα#Noun|(en)]], « 1. Ce qui est écrit, ce qui est dessiné. 2. Lettre. 3. (au pluriel) Alphabet. 4. Écriture, livre. »;<br /><p style="margin: 0 2em; text-indent: 30px">➥ du verbe γράφω / gráphō [[wikt:en:γράφω#Ancient_Greek|(en)]], « 1. (Homérique) égratigner, couper en dedans. 2. Dessiner, esquisser, peindre. 3. Écrire. 4. Écrire, proposer une loi. 5. ([[w:Diathèse#Moyen|''voix moyenne'']]) : • (''[[w:Réflexivité_(grammaire)|réflexif]] indirect'') Écrire pour soi, noter ; • Accuser, poursuivre. 6. ([[w:Conjugaison_latine|''passif parfait'']]) Être écrit, être sous forme écrite. »;<br /><p style="margin: 0 2em; text-indent: 30px">➥ + du suffixe nominal de résultat -μα / -ma [[wikt:en:-μα#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px">➥ + du suffixe adjectival -ῐκός / -ikós, de ou se rapportant à, de la manière de ; « -ique »;<br /><p style="margin: 0 2em; text-indent: 15px">Enseignant responsable de la deuxième étape du système éducatif traditionnel, après l’apprentissage de l’alphabet, la lecture et l’écriture, et l’initiation au calcul avec un abaque chez un ''magister ludi'' [[w:en:Ludi_magister|(en)]] et avant celle de l’art du discours chez un [[w:Rhétorique#Rhétorique_dans_l'Antiquité_grecque|''rhéteur'']]. Le travail du grammairien était d’enseigner la lecture, l’analyse de textes des poètes antiques tels qu’Homère, Tite-Live et Virgile, et la grammaire [https://archive.wikiwix.com/cache/index2.php?url=http%3A%2F%2Fwww.antiquite.ac-versailles.fr%2Feducatio%2Fedrom2.htm#federation=archive.wikiwix.com&tab=url {{Info|<sup>➕</sup>|« L’école du grammaticus », ac-Versailles}}] [https://philo-lettres.fr/latin/rome_vie-quotidienne/ecole-romaine/ {{Info|<sup>➕➕</sup>|« L’École dans l’antiquité romaine, philo-lettres}}].
<br /><br /><p style="margin: 0 2em; text-indent: 15px;">'''[[#polygraphe_back|<span id="polygraphe"><sup>III</sup></span>]] Du nom commun grec ancien [[wikt:polygraphe|πολύγραφος / polýgraphos]], « qui écrit beaucoup de sujets »;<br /><p style="margin: 0 2em; text-indent: 15px">➥ de l’adjectif πολῠ́ς / polús [[wikt:en:πολύς#Ancient_Greek|(en)]], « (de nombre, au pluriel) Beaucoup de : • (avec des noms de multitude) Grand ; • (de quantité, avec des noms de masse) beaucoup de ; • (rare, d'une personne) Grand, puissant ; • (de son) Fort ; • (attributivement, adverbial) Fortement, pleinement ; • (d'espace) Large, grand ; • (de distance) Loin ; • (de temps) Long, en retard. »;<br /><p style="margin: 0 2em; text-indent: 15px">➥ + du verbe γράφω / gráphō [[wikt:en:γράφω#Ancient_Greek|(en)]], « 1. (Homérique) égratigner, couper en dedans. 2. Dessiner, esquisser, peindre. 3. Écrire. 4. Écrire, proposer une loi. 5. (''voix moyenne'') : • (''réflexif indirect'') Écrire pour soi, noter ; • Accuser, poursuivre. 6. (''passif parfait'') Être écrit, être sous forme écrite. »;<br /><p style="margin: 0 2em; text-indent: 15px;">Le terme semble avoir été employé au cours de l’Antiquité dans un sens différent de celui que nous l’entendons aujourd’hui, pas dans le sens de diversité mais, de façon restreinte, le fait de composer un grand nombre de textes [https://eriac.univ-rouen.fr/la-polygraphie-comme-norme/ {{Info|<sup>➕</sup>|Isabelle Gassino, Université de Rouen et Dimitri Kasprzyk, université de Brest, « Colloque "La polygraphie comme norme" », 16 et 17 novembre 2017.}}].'''<br/><br/></div>
{{Boîte déroulante fin}}
==== Livre I ====
===== <div style="text-align: center;">Chapitre II.</div> =====
<div style="text-align: justify; margin: 0 1em;">Témoignage de '''Thales''' comme :
* l’un des premiers ''philosophes grecs'' ayant traité des choses célestes et divines ;
* disciple des ''Égyptiens'' et des ''Chaldéens'' (premier témoignage) ;
* auteur de court(s)/rare(s) ouvrages (supposément unanimement admis), que les ''Grecs'' considéreraient comme les plus anciens, et douteraient, selon '''Flavius Josèphe''', de leur authenticité.</div>
:'''Texte latin'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">qui autem historias apud eos conscribere temptauerunt, id est hi, qui circa '''Cadmum''' ''Milesium'', et '''Acusilaus''' ''Argiuus'' et post hunc quicumque alii fuisse referuntur, paululum tempus ''Persicam'' apud ''Helladium'' militiam praecesserunt. sed etiam eos, qui de caelestibus et diuinis primitus apud ''Graecos philosophati'' sund, id est '''Pherecydem''' ''Syrum'' et '''Pythagoram''' et '''Thaletem''' omnes concorditer confidentur ''Aegyptiorum'' et ''Chaldaeorum'' fuisse discipulos et breuiter conscripsisse quae a ''Graecis'' omnium antiquissima iudicantur ita ut uix ea credant ab illis fuisse conscripta.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[[w:Corpus_scriptorum_ecclesiasticorum_latinorum|<u>Corpus scriptorum ecclesiasticorum latinorum</u>]], [https://verlag.oeaw.ac.at/produkt/flavii-iosephi-opera-ex-versione-latina-antiqua-pars-vi-de-iudaeorum-vetustate-sive-contra-apionem-libri-ii/601067?name=flavii-iosephi-opera-ex-versione-latina-antiqua-pars-vi-de-iudaeorum-vetustate-sive-contra-apionem-libri-ii&product_form=5107 <u>Tome XXXVII, Flavius Iosephus, Contra Apionem</u>], ''Livre I'', ''chap. II.'', ''l.13, 14'', p.64, 1898</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">Οἱ μέντοι τὰς ἱστορίας ἐπιχειρήσαντες συγγράφειν παρ' αὐτοῖς, λέγω δὲ τοὺς περὶ '''Κάδμον''' τε τὸν ''Μιλήσιον'' καὶ τὸν ''Ἀργεῖον'' '''Ἀκουσίλαον''' καὶ μετὰ τοῦτον εἴ τινες ἄλλοι λέγονται γενέσθαι, βραχὺ τῆς ''Περσῶν'' ἐπὶ τὴν ''Ἑλλάδα'' στρατείας τῷ χρόνῳ προύλαβον. Ἀλλὰ μὴν καὶ τοὺς περὶ τῶν οὐρανίων τε καὶ θείων πρώτους παρ' ''Ἕλλησι φιλοσοφήσαντας'', οἷον '''Φερεκύδην''' τε τὸν ''Σύριον'' καὶ '''Πυθαγόραν''' καὶ '''Θάλητα''', πάντες συμφώνως ὁμολογοῦσιν ''Αἰγυπτίων'' καὶ ''Χαλδαίων'' γενομένους μαθητὰς ὀλίγα συγγράψαι, καὶ ταῦτα τοῖς ''Ἕλλησιν'' εἶναι δοκεῖ πάντων ἀρχαιότατα καὶ μόλις αὐτὰ πιστεύουσιν ὑπ' ἐκείνων γεγράφθαι.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://remacle.org/bloodwolf/historiens/Flajose/Apion1gr.htm <u>Φλαίίου Ἰωσήπου, περὶ ἀρχαιότητος Ἰουδαίων</u>, ''λόγος α''], ''chap. II.'', ''l.13, 14'', 1898</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">Quant aux Grecs qui ont entrepris d’écrire l’histoire, comme [[w:Cadmos_de_Milet|'''Cadmos''' de ''Milet'']], [[w:Acousilaos|'''Acousilaos''' d’Argos]] et ceux qu’on cite après lui, ils n’ont vécu que peu de temps [[#Cadmos_NdT_LB|<span id="Cadmos_NdT_LB_back"><sup>1</sup></span>]] avant [[w:Guerres_médiques|''l’expédition des Perses contre la Grèce'']]. Mais bien certainement les premiers ''philosophes grecs'' qui aient traité des choses célestes et divines, comme [[w:Phérécyde_de_Syros|'''Phérécyde''' de ''Syros'']] [[#Phérécyde_de_Syros_NdT_LB|<span id="Phérécyde_de_Syros_NdT_LB_back"><sup>2</sup></span>]], '''Pythagore''' et '''Thalès'''[[#Thales_NdT_LB|<span id="Thales_NdT_LB_back"><sup>3</sup></span>]] furent, tout le monde s’accorde là-dessus, les disciples des ''Égyptiens'' et des ''Chaldéens'' avant de composer leurs courts ouvrages, et ces écrits sont aux yeux des ''Grecs'' les plus anciens de tous ; à peine même les croient-ils authentiques.</div>
<table cellspacing=15 style="margin: 0 4em; font-size:85%;">
<tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Cadmos_NdT_LB_back|<span id="Cadmos_NdT_LB"><sup>1.</sup></span>]] En réalité, Cadmos paraît avoir fleuri vers le milieu [[w:VIe_siècle_av._J.-C.|VI<sup>ème</sup> siècle]] [{{Info|AEC|Avant l’Ère Commune}}].'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Phérécyde_de_Syros_NdT_LB_back|<span id="Phérécyde_de_Syros_NdT_LB"><sup>2</sup></span>]] Seul texte qui attribue une origine égyptienne ou chaldéenne aux doctrines de Phérécyde de Syros. Cependant [[w:Theodor_Gomperz|Gompers]], [https://archive.org/details/bub_gb_QrfVAAAAMAAJ/page/n434/mode/1up Griechische Denker, I, 430], identifie ᾿Ογηνός avec l’Ouginna babylonien.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Thales_NdT_LB_back|<span id="Thales_NdT_LB"><sup>3</sup></span>]] On retrouve chez [[w:Apollonios_de_Tyane|Apollonios de Tyane]] ([[w:Jamblique|Jamblique]] [[#Jamblique_back|<sup>⤵️</sup>]], Vit. Pyth. [[#Vie_de_Pythagore_back|<sup>⤵️</sup>]], 12) et [[w:Plutarque|Plutarque]] [[#Plutarque_back|<sup>⤵️</sup>]] l’idée que Thalès de Milet fut disciple des Égyptiens ; l’adjonction des Chaldéens est propre Josèphe.'''
</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/contreapiontexte0000jose/page/n6/mode/1up?view=theater <u>Flavius Josèphe, Contre Apion</u>], ''Livre I'', [https://archive.org/details/contreapiontexte0000jose/page/n49/mode/1up?view=theater&q=Thales ''chap. 2''], traduction du grec ancien par Léon Blum, agrégé des Lettres, professeur au lycée Janson-de-Sailly, texte établi et annotée par [[w:Théodore_Reinach|Théodore Reinach]]
Membre de l’[[w:Institut_de_France|Institut]], professeur au Collège de France, 1930<br />(édition bilingue de 1911 également disponible [https://remacle.org/bloodwolf/historiens/Flajose/Apion1.htm ici])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-align: justify; margin: 0 2em;">Quant aux Grecs qui ont entrepris d’écrire l’histoire, comme '''Cadmos''' de ''Milet'', '''Acousilaos''' d’''Argos'' et ceux qu’on nomme après lui, ils n’ont vécu que peu de temps[2] avant l’expédition des ''Perses'' contre la ''Grèce''. [14]. De même, les premiers ''philosophes grecs'' qui aient traité des choses célestes et divines, comme '''Phérécyde''' de ''Syros''[3], '''Pythagore''' et '''Thalès'''[4] furent, tout le monde s’accorde là dessus, les disciples des ''Égyptiens'' et des ''Chaldéens'' avant de composer leurs rares ouvrages, et ces écrits sont aux yeux des ''Grecs'' les plus anciens de tous ; à peine même les croient-ils authentiques.</div>
<table cellspacing=15 style="margin: 0 4em; font-size:85%;">
<tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Cadmos_NdT_LB_back|<span id="Cadmos_NdT_LB"><sup>1.</sup></span>]] En réalité, Cadmos paraît avoir fleuri vers le milieu [[w:VIe_siècle_av._J.-C.|VI<sup>ème</sup> siècle]] [{{Info|AEC|Avant l’Ère Commune}}].'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Phérécyde_de_Syros_NdT_LB_back|<span id="Phérécyde_de_Syros_NdT_LB"><sup>2</sup></span>]] Seul texte qui attribue une origine égyptienne ou chaldéenne aux doctrines de Phérécyde de Syros. Cependant [[w:Theodor_Gomperz|Gompers]], [https://archive.org/details/bub_gb_QrfVAAAAMAAJ/page/n434/mode/1up Griechische Denker, I, 430], identifie ᾿Ογηνός avec l’Ouginna babylonien.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Thales_NdT_LB_back|<span id="Thales_NdT_LB"><sup>3</sup></span>]] On retrouve chez [[w:Apollonios_de_Tyane|Apollonios de Tyane]] ([[w:Jamblique|Jamblique]] [[#Jamblique_back|<sup>⤵️</sup>]], Vit. Pyth. [[#Vie_de_Pythagore_back|<sup>⤵️</sup>]], 12) et [[w:Plutarque|Plutarque]] [[#Plutarque_back|<sup>⤵️</sup>]] l’idée que Thalès de Milet fut disciple des Égyptiens ; l’adjonction des Chaldéens est propre Josèphe.'''
</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Flavius Josèphe, De l’ancienneté du peuple juif (Contre Apion)</u>, ''Livre I'', [[s:Page:Flavius_Josephe_-_Leon_Blum_-_Contre_Apion,_Leroux,_Paris,_1902.djvu/17|''Chap. 2'']], traduction de Léon Blum, agrégé des lettres, professeur au lycée du Havre, sous la direction de [[w:Théodore_Reinach|Théodore Reinach]], 1902.</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div>
</div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Plutarque|'''Plutarque''']] [[#Plutarque|<span id="Plutarque_back"><sup>'''I'''</sup></span>]] ==
<p style="text-align: right;">([[w:Circa|{{Info|''ca.''|Circa, locution latine que l’on emploie pour indiquer l’approximation d’une date}}]] [[w:45|45]]'' <sup>[[w:Ier_siècle|⏳]]</sup>'', à [[w:Chéronée|Chéronée]] en [[w:Béotie|Béotie]] — {{Info|''ca.''|Circa, locution latine que l’on emploie pour indiquer l’approximation d’une date}} [[w:125|125]]'' <sup>[[w:IIe_siècle|⏳]]</sup>)[[s:Auteur:Plutarque|<sup>📚</sup>]]
[[Fichier:Plutarch at Delphi.jpg|vignette|<p style="text-align: justify; text-indent: 15px;">Buste probable de Plutarque du [[w:IIe_siècle|II<sup>ème</sup>]] ou [[w:IIIe_siècle|III<sup>ème</sup>]] siècles {{Info|EC|de l’Ère Commune}}, en marbre de [[w:Marbre_de_Paros|''Paros'']].<br /><p style="text-align: justify; text-indent: 15px;">Provenance : découvert lors de fouilles près de l’angle sud-est du [[w:Temple d'Apollon (Delphes)|''temple d’Apollon'']] de [[w:Delphes|''Delphes'']], au côté d'une [[w:Fichier:Plutarch_stele_inscription_100_AD,_AM_of_Delphi_4070060092.jpg|''stèle'']] portant une inscription gravée : ΔΕΛΦΟΙ ΧΑΙΡΩΝΕΥΣΙΝ ΟΜΟΥ ΠΛΟΥΤΑΡΧΟΝ ΕΘΗΚΑΝ ΤΟΙΣ ΑΜΦΙΚΤΥΟΝΩΝ ΔΟΓΜΑΣΙ ΠΕΙΘΟΜΕΝΟΙ — Les ''Delphiens'', avec les ''Chéronéens'', dédièrent ce(tte image de) Plutarque, suivant les préceptes de l’[[w:Amphictyonie|''Amphictyonie'']].<br /><p style="text-align: justify; text-indent: 15px;">Exposition : Salle XIV, [[w:Mus%C3%A9e_arch%C3%A9ologique_de_Delphes|''Musée archéologique de Delphes'']].]]
<div style="text-align: justify; margin: 0 1em; text-indent: 15px">Biographe, philosophe et moraliste grec, auteur d’une œuvre importante, comportant un ensemble varié de traités et de dialogues consacrés à des questions de philosophie morale, mais abordant aussi des sujets littéraires, politiques, scientifiques, religieux.</div>
{{Boîte déroulante début|titre=NdA Plutarque|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Plutarque_back|<span id="Plutarque"><sup>I</sup></span>]] Du nom propre grec ancien πλούταρχος / ploútarkhos [[wikt:en:Πλούταρχος#Ancient_Greek|(en)]], « maître des richesses » ; <br /><p style="margin: 0 2em; text-indent: 15px">➥ du nom commun πλοῦτος / ploûtos [[wikt:en:πλοῦτος#Ancient_Greek|(en)]], « richesses » ;<br /><p style="margin: 0 2em; text-indent: 15px">➥ + du nom commun ἀρχός / arkhós, « souverain, chef, prince »)'''<br/><br/></div>
{{Boîte déroulante fin}}
{{Boîte déroulante début|titre=Remarque|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>''' Dans la ''Vie de [[w:Lycurgue_(législateur)|Lycurgue]]'' et la ''Vie d’Agis et Cléomène'' (''Vies parallèles''), et le traité ''Un philosophe doit surtout converser avec les princes'' (''Œuvres morales''), il est fait mention d’un Thalès : il s’agit de [[w:Thalétas|Thalétas]], aussi appelé Thalès de [[w:Crète|''Crète'']], un musicien et poète, originaire de la cité de [[w:Gortyne|''Gortyne'']] en ''Crète'', et actif à la fin du [[w:VIIIe_siècle_av._J.-C.|VIII<sup>ème</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]] et au début du siècle suivant.'''<br/><br/></div>
{{Boîte déroulante fin}}
=== [[w:Vies_parallèles|Vies parallèles]] [[#Vies_parallèles|<span id="Vies_parallèles_back"><sup>'''I'''</sup></span>]] ===
<div style="text-align: center; margin: 0 1em;">Recueil de 50 biographies de grands hommes de l’histoire, dont 46 présentées par paires : un ''Grec'' mis en parallèle avec un ''Romain''.</div>
{{Boîte déroulante début|titre=NdA Vies parallèles|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Vies_parallèles_back|<span id="Vies_parallèles"><sup>I</sup></span>]] Du grec ancien Βίοι Παράλληλοι / Bíoi Parállêloi'''<br/><br/></div>
{{Boîte déroulante fin}}
==== Vie de [[w:Solon|'''Solon''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Solon|<sup>🔄</sup>]] ====
<div style="text-align: center; margin: 0 1em;">Biographie de '''Solon''', qui précède celle de [[w:Publius_Valerius_Publicola_(consul_en_-509)|'''Publicola''']] [[#Publicola|<span id="Publicola_back"><sup>'''I'''</sup></span>]], et avec laquelle '''Plutarque''' la compare.</div>
{{Boîte déroulante début|titre=NdA Vie de Solon|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Publicola_back|<span id="Publicola"><sup>I</sup></span>]] [[w:Nom_romain|Tria Nomina]] en latin {{Info|Publius|praenomen, nom individuel du citoyen romain}} {{Info|Valerius|nomen, nom de famille}} {{Info|Publicola ou Poplicola|cognomen, surnom héréditaire, servant à distinguer les diverses branches d’une même gens}}, « celui qui prend soin de l’armée. »[https://academic.oup.com/bics/advance-article/doi/10.1093/bics/qbaf002/8117642?login=false {{Info|<sup>🔍</sup>|M. Gallo, « Misinterpreting a compound name. The origin of the agnomen Publicola in Dionysius of Halicarnassus and Plutarch », Bulletin of the Institute of Classical Studies, 22 avril 2025}}].<br /><p style="margin: 0 2em; text-indent: 15px">[[w:Consul_(Rome_antique)|Consul]] de la [[w:république_romaine|''République Romaine'']], à quatre reprises : en [[w:-509|-509]], [[w:-508|-508]], [[w:-507|-507]] et [[w:-504|-504]], et l’un des instaurateurs légendaires de la ''République Romaine'' en -509, suite au viol et au suicide de [[w:Lucrèce_(dame_romaine)|Lucrèce]], une femme aristocratique ''romaine'', par [[w:Sextus_Tarquin|Sextus Tarquin]], le fils du dernier [[w:Roi_de_Rome|roi de ''Rome'']] [[w:Tarquin_le_Superbe|Tarquin le Superbe]].<br /><p style="text-align: right; margin: 0 2em;">(date et lieu de naissance inconnu.e.s — [[w:-503|-503]], soit sur le champ de bataille pendant les [[w:Guerres_romano-sabelliennes|''guerres romano-sabelliennes'']], soit de maladie)<sup>[[w:VIe_siècle_av._J.-C.|⏳]]</sup> '''<br/><br/></div>
{{Boîte déroulante fin}}
===== <div style="text-align: center;">Chapitre II.</div> =====
====== <div style="text-align: center;">Paragraphe III.</div> ======
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage de '''Thalès''' ''commerçant''</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''III.''' Κωλύει δὲ οὐδὲν τὸν ἀγαθὸν καὶ πολιτικὸν ἄνδρα μήτε τῶν περιττῶν τὴν κτῆσιν ἐν σπουδῇ τίθεσθαι μήτε τῆς χρείας τῶν ἀναγκαίων καὶ ἱκανῶν καταφρονεῖν. Ἐν δὲ τοῖς τότε χρόνοις, καθ' Ἡσίοδον, ἔργον οὐδὲν ἦν ὄνειδος, οὐδὲ τέχνη διαφορὰν ἔφερεν, ἐμπορία δὲ καὶ δόξαν εἶχεν οἰκειουμένη τὰ βαρβαρικὰ καὶ προξενοῦσα φιλίας βασιλέων καὶ πραγμάτων ἐμπείρους ποιοῦσα πολλῶν. Ἔνιοι δὲ καὶ πόλεων οἰκισταὶ γεγόνασι μεγάλων, ὡς καὶ Μασσαλίας Πρῶτις ὑπὸ Κελτῶν τῶν περὶ τὸν Ῥοδανὸν ἀγαπηθείς. Καὶ Θαλῆν δέ φασιν ἐμπορίᾳ χρήσασθαι καὶ Ἱπποκράτην τὸν μαθηματικόν, καὶ Πλάτωνι τῆς ἀποδημίας ἐφόδιον ἐλαίου τινὸς ἐν Αἰγύπτῳ διάθεσιν γενέσθαι.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm <u>Plutarque, Vie de Solon</u>], ''chap. II'', ''§3'', traduction par [[w:Dominique_Ricard|Dominique Ricard]], 1844<br />(également disponible une édition de 1853 [https://remacle.org/bloodwolf/historiens/Plutarque/solonpierrron.htm ici] et de 1862 [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f16.item là])</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 390px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''III.''' Mais rien n’empêche l’homme de bien, le citoyen dévoué à son pays, de garder un juste milieu : il peut ne point s’attacher à la poursuite du superflu, sans pour cela mépriser le nécessaire et ce qui suffit à ses besoins.<br />Dans ce temps-là, pour parler comme [[w:Hésiode|'''Hésiode''']] [[#Hésiode|<span id="Hésiode_back"><sup>'''I'''</sup></span>]] [[#Hésiode_NdT_AP|<span id="Hésiode_NdT_AP_back"><sup>1</sup></span>]], il n’y avait pas de travail qui fût honteux; aucun art ne mettait de différence entre les hommes : le négoce surtout était honoré, qui met en possession des avantages dont jouissent les étrangers, gagne l’amitié des rois, et donne une grande expérience. On a même vu des trafiquants fonder de grandes villes : ainsi [[w:Mythe_fondateur_de_Marseille|'''Protis''']] bâtit [[w:Marseille_antique|''Marseille'']], après s'être concilié l’amitié des ''Gaulois'' qui habitent les bords du [[w:Rhône#Histoire|''Rhône'']]. '''Thales''' se livra, dit-on, au négoce, ainsi qu’[[w:Hippocrate_de_Chios|'''Hippocrate''']] [[#Hippocrate|<span id="Hippocrate_back"><sup>'''II'''</sup></span>]] le mathématicien[[#Hippocrate_NdT_AP|<span id="Hippocrate_NdT_AP_back"><sup>2</sup></span>]] ; et [[w:Platon|'''Platon''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Platon|<sup>🔄</sup>]] vendit de l’huile en [[w:Basse_Époque|''Égypte'']] , pour fournir aux frais de son voyage.</div>
<table cellspacing=15 style="margin: 0 4em; font-size:85%;">
<tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Hésiode_NdT_AP_back|<span id="Hésiode_NdT_AP"><sup>1.</sup></span>]] Œuvres et Jours, vers 309.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Hippocrate_NdT_AP_back|<span id="Hippocrate_NdT_AP"><sup>2</sup></span>]] Cet Hippocrate n’est point connu d’ailleurs.'''
</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/viesdeshommesill01plut/page/n6/mode/1up?view=theater <u>Vie des Hommes Illustres de Plutarque</u>], [https://archive.org/details/viesdeshommesill01plut/page/182/mode/1up?view=theater ''Solon''], ''Chap. II'', ''§3'', [https://archive.org/details/viesdeshommesill01plut/page/184/mode/1up?view=theater p.184], traduit par [[w:Alexis_Pierron|Alexis Pierron]], professeur au lycée Louis-le-Grand, 1877<br />(également disponible une édition de 1853 [[s:Vies_des_hommes_illustres/Solon|ici]])</div>
{{Boîte déroulante début|titre=NdA trad. par Alexis Pierron de 1877|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Hésiode_back|<span id="Hésiode"><sup>I</sup></span>]] Du nom propre grec ancien Ἡσῐ́οδος / Hēsĭ́odos [[wikt:en:Ἡσίοδος#Ancient_Greek|(en)]].<br /><p style="margin: 0 2em; text-indent: 15px">Berger sur les pentes du Mont [[w:Mont_Hélicon|Hélicon]] et un des plus grands poètes grecs. Il s’agit plus précisément d’un ''aède'' (il « chante » ses vers avec sa lyre) et un ''rhapsode'' (il « coud » des chants entre eux)[https://odysseum.eduscol.education.fr/hesiode-un-des-premiers-poetes-grecs {{Info|<sup>🔍</sup>|Hésiode, un des premiers poètes grecs - Odysseum, la maison numérique des Humanités}}].
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Hippocrate_back|<span id="Hippocrate"><sup>II</sup></span>]] Du nom propre grec ancien Ῐ̔πποκρᾰ́της / Hĭppokrắtēs [[wikt:en:Ἱπποκράτης#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px">➥ du nom commun ῐ̔́ππος / hĭ́ppos [[wikt:en:ἵππος#Ancient_Greek|(en)]], « cheval »;<br /><p style="margin: 0 2em; text-indent: 15px">➥ + du nom commun κρᾰ́τος / krắtos [[wikt:en:κράτος#Ancient_Greek|(en)]], « 1. Puissance, force. 2. Acte de force, acte de bravoure. 3. (au pluriel) Actes de violence. 4. Domination, pouvoir. »;<br /><p style="margin: 0 2em; text-indent: 15px">➥ + du suffixe nominal -ης / -ēs.<br /><p style="margin: 0 2em; text-indent: 15px"> Mathématicien (géomètre) et astronome « para-pythagoricien », dont l’œuvre ne nous est pas parvenue.<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] milieu du [[w:Ve_siècle_av._J.-C.|V<sup>ème</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]]) [https://books.google.fr/books?id=DrvWAAAAMAAJ&newbks=1&newbks_redir=0&lpg=PA764&vq=Hippocrate&dq=bibliogroup%3A%22Dictionnaire%20des%20philosophes%20antiques%22&hl=fr&pg=PA764#v=onepage&q&f=true {{Info|<sup>🔍</sup>|Dictionnaire des Philosophes Antiques, publié sous la direction de Richard Goulet, Volume III, §151 - Hippocrate de Chios}}]'''<br/><br/></div>
{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: center; margin: 0 2em;">'''II. Dans sa jeunesse il se livre au commerce maritime; la modicité de sa fortune et son goût pour la sagesse l’y décident. Faveur du commerce à cette époque ; grands noms qui l’ont illustré.'''<br /><br /><p style="text-align: justify; text-indent: 15px;">Mais rien n’empêche qu’un homme de bien, un sage politique tienne à cet égard un juste milieu, et que sans rechercher des richesses superflues, il ne méprise pas celles qui sont nécessaires et qui suffisent. Dans ce temps-là, comme dit [[w:Hésiode|'''Hésiode''']], aucun travail n’était regardé comme honteux; aucun art ne mettait de différence entre les hommes. Le commerce maritime surtout était honorable; il ouvrait des communications utiles avec les nations étrangères, procurait des alliances avec les rois, et donnait une grande expérience. On a même vu des commerçants fonder de grandes villes. Ainsi '''Protus''' gagna l’amitié des Gaulois qui habitaient les bords du ''Rhône'', et bâtit ''Marseille''. '''Thalès''' et '''Hippocrate''' le mathématicien firent aussi le commerce ; et '''Platon''' vendit de l’huile en ''Égypte'' pour fournir aux frais de son voyage.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f16.item ''chap. II''], traduction correcte et précédée du texte grec, par une société de professeurs et d’helléniste, 1862<br />(également disponible une édition de 1844 [https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm#1a ici] et de 1829 [[s:Les_Vies_des_hommes_illustres/Vie_de_Solon|là]])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">Mais rien n’empêche l’homme de-bien et l’homme politique ni se mettre en souci (rechercher) l’acquisition des choses superflues, ni mépriser l’usage des choses nécessaires et suffisantes. Or dans les temps d’alors, selon '''Hésiode''', aucun travail n’était sujet-de-honte, ni aucun métier n’apportait de différence entre les citoyens mais même le commerce-maritime avait de la gloire, rendant-amies les nations-barbares, et procurant des amitiés de rois, et faisant les hommes expérimentés d’affaires nombreuses. Et quelques-uns aussi sont devenus fondateurs de grandes villes, comme aussi le '''Protus''' de ''Marseille'' ayant été aimé par les ''Celtes'' ceux autour du ''Rhône''. Et on dit aussi '''Thalès''', avoir fait-usage du commerce-maritime et '''Hippocrate''' le mathématicien, et la vente d'une certaine huile en ''Égypte'' avoir été pour '''Platon''' ressource du voyage.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f16.item ''chap. II''], traduction littérale et juxtalinéaire présentant le mot à mot français en regard des mots grecs correspondants, par une société de professeurs et d’helléniste, 1862</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
====== <div style="text-align: center;">Paragraphe IV.</div> ======
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage de la sagesse de '''Thalès''' en ''philosophie naturelle''</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''IV.''' Φιλοσοφίας δὲ τοῦ ἠθικοῦ μάλιστα τὸ πολιτικόν, ὥσπερ οἱ πλεῖστοι τῶν σοφῶν, ἠγάπησεν. Ἐν δὲ τοῖς φυσικοῖς ἁπλοῦς ἐστι λίαν καὶ ἀρχαῖος, ὡς δῆλον ἐκ τούτων· [...].<br /><p style="text-indent: 15px">Καὶ ὅλως ἔοικεν ἡ Θάλεω μόνου σοφία τότε περαιτέρω τῆς χρείας ἐξικέσθαι τῇ θεωρίᾳ· τοῖς δὲ ἄλλοις ἀπὸ τῆς πολιτικῆς ἀρετῆς τοὔνομα τῆς σοφίας ὑπῆρξε.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm <u>Plutarque, Vie de Solon</u>], ''chap. II'', ''§4'', traduction par [[w:Dominique_Ricard|Dominique Ricard]], 1844<br />(également disponible une édition de 1853 [https://remacle.org/bloodwolf/historiens/Plutarque/solonpierrron.htm ici] et de 1862 [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f20.item là])</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 390px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''IV.''' Il s’attacha, comme presque tous les sages d’alors, à cette partie de la philosophie morale qui traite de la politique. Pour la philosophie naturelle, il en était aux rudiments, et aux notions du vieux temps sans plus; [...].<br /><p style="text-indent: 15px;">Aussi bien n’y eut-il, en somme, que '''Thalès''' dont la science dépassât alors les notions d’un usage vulgaire : tous les autres ne durent qu’à leurs connaissances politiques leur réputation de sagesse.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/viesdeshommesill01plut/page/n6/mode/1up?view=theater <u>Vie des Hommes Illustres de Plutarque</u>], [https://archive.org/details/viesdeshommesill01plut/page/182/mode/1up?view=theater ''Solon''], ''Chap. II'', ''§4'', [https://archive.org/details/viesdeshommesill01plut/page/185/mode/1up?view=theater p.185], traduit par [[w:Alexis_Pierron|Alexis Pierron]], professeur au lycée Louis-le-Grand, 1877<br />(également disponible une édition de 1853 [[s:Vies_des_hommes_illustres/Solon|ici]])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">A l’exemple des sages de son temps, il cultiva principalement cette partie de la morale qui traite de la politique. Il n’avait en physique que des connaissances très-superficielles, et en était aux premiers éléments de cette science, [...].<br/><p style="text-indent: 15px">En général '''Thalès''' fut, de tous les sages d’alors, le seul qui porta au delà des besoins de la vie la théorie des sciences ; tous les autres ne durent qu’à leurs connaissances politiques leur réputation de sagesse.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f20.item ''chap. II''], traduction correcte et précédée du texte grec, par une société de professeurs et d’helléniste, 1862<br />(également disponible une édition de 1844 [https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm#1a ici] et de 1829 [[s:Les_Vies_des_hommes_illustres/Vie_de_Solon|là]])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">Mais de la partie morale de la philosophie il embrassa surtout la partie politique, comme la plupart des sages d’alors. Mais dans les sciences physiques il est extrêmement simple (ignorant) et primitif, [...]. Et en-un-mot la science de '''Thalès''' seul paraît s’être avancée alors par la théorie plus loin que le besoin ; et le nom de la science a appartenu aux autres par-suite des qualités politiques.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f21.item ''chap. II''], traduction littérale et juxtalinéaire présentant le mot à mot français en regard des mots grecs correspondants, par une société de professeurs et d’helléniste, 1862</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
====== <div style="text-align: center;">Paragraphe V.</div> ======
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Version alternative du récit de la coupe de [[w:Bathyclès_de_Magnésie|'''Bathyclès''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Bathyclès_back|<sup>🔄</sup>]] par [[w:Callimaque_de_Cyrène|'''Callimaque''']] de [[w:Cyrène|''Cyrène'']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Callimaque_back|<sup>🔄</sup>]].</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''V.''' Γενέσθαι δὲ μετ' ἀλλήλων ἔν τε Δελφοῖς ὁμοῦ λέγονται καὶ πάλιν ἐν Κορίνθῳ, Περιάνδρου σύλλογόν τινα κοινὸν αὐτῶν καὶ συμπόσιον κατασκευάσαντος. Ἔτι δὲ μᾶλλον εἰς ἀξίωμα καὶ δόξαν αὐτοὺς κατέστησεν ἡ τοῦ [[w:τρίπους#Grec_ancien|'''τρίποδος''']] περίοδος καὶ διὰ πάντων ἀνακύκλησις καὶ ἀνθύπειξις μετ' εὐμενείας φιλοτίμου γενομένη. Κῴων γάρ, ὥς φασι, καταγόντων σαγήνην, καὶ ξένων ἐκ Μιλήτου πριαμένων τὸν βόλον οὔπω φανερὸν ὄντα, χρυσοῦς ἐφάνη τρίπους ἑλκόμενος, ὃν λέγουσιν Ἑλένην πλέουσαν ἐκ Τροίας αὐτόθι καθεῖναι χρησμοῦ τινος ἀναμνησθεῖσαν παλαιοῦ. Γενομένης δὲ τοῖς ξένοις πρῶτον ἀντιλογίας πρὸς τοὺς ἁλιέας περὶ τοῦ τρίποδος, εἶτα τῶν πόλεων ἀναδεξαμένων τὴν διαφορὰν ἄχρι πολέμου προελθοῦσαν, ἀνεῖλεν ἀμφοτέροις ἡ Πυθία τῷ σοφωτάτῳ τὸν τρίποδα ἀποδοῦναι. Καὶ πρῶτον μὲν ἀπεστάλη πρὸς Θαλῆν εἰς Μίλητον, ἑκουσίως τῶν Κῴων ἑνὶ δωρουμένων ἐκείνῳ περὶ οὗ πρὸς ἅπαντας ὁμοῦ Μιλησίους ἐπολέμησαν. Θάλεω δὲ Βίαντα σοφώτερον ἀποφαίνοντος αὑτοῦ πρὸς ἐκεῖνον ἧκεν· ἀπ' ἐκείνου δ' αὖθις ἀπεστάλη πρὸς ἄλλον ὡς σοφώτερον. Εἶτα περιϊὼν καὶ ἀναπεμπόμενος οὕτως ἐπὶ Θαλῆν τὸ δεύτερον ἀφίκετο, καὶ τέλος εἰς Θήβας ἐκ Μιλήτου κομισθεὶς τῷ Ἰσμηνίῳ Ἀπόλλωνι καθιερώθη. Θεόφραστος δέ φησι,πρῶτον μὲν εἰς Πριήνην Βίαντι τὸν τρίποδα πεμφθῆναι, δεύτερον δ' εἰς Μίλητον Θαλῇ Βίαντος ἀποπέμψαντος· οὕτω δὲ διὰ πάντων πάλιν εἰς Βίαντα περιελθεῖν, τέλος δὲ εἰς Δελφοὺς ἀποσταλῆναι. Ταῦτα μὲν οὖν ὑπὸ πλειόνων τεθρύληται, πλὴν ὅτι τὸ δῶρον ἀντὶ τοῦ τρίποδος οἱ μὲν φιάλην ὑπὸ Κροίσου πεμφθεῖσαν, οἱ δὲ ποτήριον Βαθυκλέους ἀπολιπόντος εἶναι λέγουσιν.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm <u>Plutarque, Vie de Solon</u>], ''chap. II'', ''§5'', traduction par [[w:Dominique_Ricard|Dominique Ricard]], 1844<br />(également disponible une édition de 1853 [https://remacle.org/bloodwolf/historiens/Plutarque/solonpierrron.htm ici] et de 1862 [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f22.item là])</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 390px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''V.''' On raconte que les sept sages se réunirent une fois à [[w:Delphes|''Delphes'']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Delphes_back|<sup>🔄</sup>]], et une autre fois à [[w:Histoire_de_Corinthe_dans_l%27Antiquité|''Corinthe'']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Corinthe_back|<sup>🔄</sup>]], où [[w:Périandre|'''Périandre''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Périandre_back|<sup>🔄</sup>]] les avait convoqués pour leur offrir un banquet. Rien ne contribua tant à leur réputation et à leur gloire, que le renvoi qu’ils se firent successivement l’un à l’autre du trépied d’or, et l’honorable humilité avec laquelle ils refusèrent le prix tour à tour. Des hommes de [[w:Kos_(Dodécanèse)#Kos_à_l'époque_hellénistique|''Cos'']] [[#Cos|<span id="Cos_back"><sup>'''I'''</sup></span>]] venaient, dit-on, de jeter leur filet en mer : des étrangers de ''Milet'' achetèrent le coup, avant que les pêcheurs y eussent regardé. Il se trouva, dans le filet, un trépied d’or qu’[[w:Hélène_(mythologie)|'''Hélène''']] [[#Hélène|<span id="Hélène_back"><sup>'''II'''</sup></span>]], à ce qu’on prétend, pour obéir à un ancien oracle, avait jeté dans la mer à son retour de [[w:Troie|''Troie'']] [[#Troie|<span id="Troie_back"><sup>'''III'''</sup></span>]]. Ce fut un sujet de débat, d’abord entre les pêcheurs et les étrangers, ensuite entre les deux villes, qui prirent parti dans la querelle : la guerre allait s’allumer, lorsque la [[w:Pythie|''Pythie'']] [[#Pythie|<span id="Pythie_back"><sup>'''IV'''</sup></span>]], que les deux partis avaient consultée, commanda de donner le trépied au plus sage. On l’envoya d’abord à ''Milet'', pour '''Thalès''', et ceux de ''Cos'' cédèrent sans peine à un seul particulier ce qu’ils allaient disputer par les armes à tous les ''Milésiens'' ensemble. '''Thalès''' déclara que [[w:Bias_de_Priène|'''Bias''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Bias_back|<sup>🔄</sup>]] était plus sage que lui, et le lui fit passer. '''Bias''', avec la même modestie, le fit passer à un autre; et le trépied, après avoir été envoyé successivement à tous les sept, revint une seconde fois à '''Thalès'''. Enfin, il fut transporté de ''Milet'' à [[w:Thèbes_(Grèce)|''Thèbes'']] [[#Thèbes|<span id="Thèbes_back"><sup>'''V'''</sup></span>]], et consacré à Apollon [[w:en:Ismenus|''Isménien'']]. Cependant [[w:Théophaste|'''Théophaste''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Théophaste_back|<sup>🔄</sup>]] dit qu’on envoya le trépied d’abord à '''Bias''', dans ''Priène'' ; que '''Bias''' le fit porter à '''Thalès''' ; qu’après avoir passé alternativement chez tous les sages, il revint à '''Bias''', et qu’il finit par être envoyé à ''Delphes''. Telle est la tradition commune : seulement quelques-uns prétendent qu’il s’agissait de décerner non point un trépied, mais un vase que [[w:Crésus|'''Crésus''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Crésus_back|<sup>🔄</sup>]] avait envoyé ; et, suivant d’autres, c’était une coupe, héritage de '''Bathyclès'''.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/viesdeshommesill01plut/page/n6/mode/1up?view=theater <u>Vie des Hommes Illustres de Plutarque</u>], [https://archive.org/details/viesdeshommesill01plut/page/182/mode/1up?view=theater ''Solon''], ''Chap. II'', ''§5'', [https://archive.org/details/viesdeshommesill01plut/page/185/mode/1up?view=theater p.185], traduit par [[w:Alexis_Pierron|Alexis Pierron]], professeur au lycée Louis-le-Grand, 1877<br />(également disponible une édition de 1853 [[s:Vies_des_hommes_illustres/Solon|ici]])</div>
{{Boîte déroulante début|titre=NdA trad. par Alexis Pierron de 1877|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Cos_back|<span id="Cos"><sup>I</sup></span>]] Du nom propre grec ancien Κῶς / Kôs [[wikt:en:Κῶς#Ancient_Greek|(en)]] ;<br /><p style="margin: 0 2em; text-indent: 15px">Île grecque l’archipel du [[w:Dodécanèse|''Dodécanèse'']], au Sud-Est de la [[w:Mer_Égée|''mer Égée'']], au large des côtes ''turques''.
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Hélène_back|<span id="Hélène"><sup>II</sup></span>]] Du nom propre grec ancien Ἑλένη / Helénē [[wikt:en:Ἑλένη#Ancient_Greek|(en)]] ;<br /><p style="margin: 0 2em; text-indent: 15px">Fille de [[w:Zeus|Zeus]] et de [[w:Léda (mythologie)|Léda]], considérée comme la plus belle femme du monde, uniquement surpassée par la déesse [[w:Aphrodite|Aphrodite]]. Elle est mariée à [[w:Ménélas|Ménélas]], roi de [[w:Sparte|Sparte]], et est enlevée par [[w:Pâris|Pâris]], prince [[w:Troie|''troyen'']] [[#Troie|<sup>'''III'''</sup>]], ce qui déclencha la [[w:guerre de Troie|guerre de Troie]] qui opposa ''Grecs'' et ''Troyens''.
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Troie_back|<span id="Troie"><sup>III</sup></span>]] Du nom propre grec ancien Τροίᾱ / Troíā [[wikt:en:Τροία#Ancient_Greek|(en)]] ; [[w:Troie#Toponymie|''toponymie incertaine'']] ;<br /><p style="margin: 0 2em; text-indent: 15px"> Cité semi-légendaire, située sur la colline d’''[[w:site archéologique de Troie|{{lang|tr|Hisarlık}}]]'', à l’entrée de l’''[[w:Hellespont|Hellespont]]'', non loin de la ''[[w:mer Égée|mer Égée]]'', au nord-ouest de la ''péninsule anatolienne'', dans la région ''[[w:Troade|Troade]]'' en ''[[w:Asie Mineure|Asie Mineure]]''.<br /><p style="margin: 0 2em; text-indent: 15px"> Le site a fait l’objet de nombreuses campagnes de fouilles, à la suite de celles entreprises par [[w:Heinrich Schliemann|Heinrich Schliemann]] en 1870, ponctuées par des découvertes fortement médiatisées, qui ont popularisé son identification avec la Troie homérique (qui reste un sujet de débat en l’absence de preuve décisive), le lieu principal des événements du ''[[w:cycle troyen|cycle troyen]]'' rapportés dans les ''[[w:Épopée|poèmes épiques]]'' ''[[w:Homère|homériques]]'' l’''[[w:Iliade|Iliade]]'' et l’''[[w:Odyssée|Odyssée]]''.
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Pythie_back|<span id="Pythie"><sup>IV</sup></span>]] Du nom commun grec ancien Πῡθῐ́ᾱ / Pūthĭ́ā,<br /><p style="margin: 0 2em; text-indent: 15px">➥ du nom propre Πῡθώ / Pūthṓ, « [[w:Delphes#Histoire_du_site|''Pythô'']], ancien nom de ''Delphes'' » ;<br /><p style="margin: 0 2em; text-indent: 15px">➥ + du suffixe adjectival féminin -ῐος / -ĭos [[wikt:en:-ιος#Ancient_Greek|(en)]], « relatif à, appartenant à (de) ».<br /><p style="margin: 0 2em; text-indent: 15px">[[w:Divination_dans_la_Grèce_antique|''Oracle'']] du [[w:Temple_d%27Apollon_(Delphes)|''temple d’Apollon'']] à ''Delphes''.<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] [[w:XIVe_siècle_av._J.-C.|XIV<sup>ème</sup>]]/[[w:VIIIe_siècle_av._J.-C.|VIII<sup>ème</sup>]] siècles {{Info|AEC|Avant l’Ère Commune}} — [[w:IVe_siècle_av._J.-C.|IV<sup>ème</sup> siècle {{Info|EC|de l’Ère Commune}}]])
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Thèbes_back|<span id="Thèbes"><sup>V</sup></span>]] Du nom propre grec ancien Θῆβαι / Thêbai [[w:Θῆβαι#Ancient_Greek|(en)]], désigne indistinctement la cité ''grecque'' comme [[w:Thèbes_(Égypte)|celle ''égyptienne'']] ; mais leur étymologie diffère : pour celle de la cité grecque, de l’[[w:Ionien-attique|''ionien-attique'']] Θήβη / Thḗbē ; du grec mycénien 𐀳𐀣 / te-qa (/Tʰēgʷā/) ;<br /><p style="margin: 0 2em; text-indent: 15px">Cité grecque de la région de [[w:Béotie#Antiquité|''Béotie'']], au centre de la ''Grèce''.'''<br/><br/></div>
{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">On raconte que les sept sages se trouvèrent un jour ensemble à ''Delphes'', et une autre fois à ''Corinthe'', chez '''Périandre''', qui les avait réunis pour un banquet. Rien ne contribua autant à leur réputation et à leur gloire, que la modestie empressée avec laquelle ils se renvoyèrent l’un à l’autre le trépied d’or. Des ''Milésiens'' qui se trouvaient à l’île de ''Cos'', avaient acheté d’avance de quelques pêcheurs ce que retirerait de l’eau le filet qu’ils allaient y jeter. Quand on l’eut tiré, il s’y trouva un trépied d’or qu’'''Hélène''', à ce qu’on prétend, pour obéir à un oracle, avait jeté dans la mer, à son retour de ''Troie''. Cet incident donna lieu à une vive dispute d’abord entre les pêcheurs et les étrangers, ensuite entre les deux villes, qui prirent parti dans la querelle et étaient près d’en venir aux mains, lorsque la ''Pythie'' consultée leur ordonna de porter ce trépied au plus sage. On l’envoya d’abord à '''Thalès''', et ceux de ''Cos'' cédèrent sans peine à un seul particulier ce qu’ils allaient disputer par les armes à tous les ''Milésiens'' ensemble. '''Thalès''' le renvoya à '''Bias''', qui, disait-il, était plus sage que lui ; '''Bias''', avec la même modestie, le fit passer à un autre ; et après avoir été envoyé successivement à tous les sept, il revint une seconde fois à '''Thalès''' : enfin il fut porté à ''Thèbes'', et consacré à ''Apollon Isménien''. '''Théophraste''' dit qu’on l’envoya d’abord à '''Bias''', qui demeurait à ''Priène'' ; que '''Bias''' le fit porter à '''Thalès''' ; qu’après avoir été envoyé alternativement à tous les sages, il revint à '''Bias''', et qu’enfin il fut porté à ''Delphes''. Telle est la tradition la plus commune sur ce fait ; seulement quelques auteurs disent que ce n’était pas un trépied, mais un vase que '''Crésus''' envoyait à ''Delphes''; suivant d’autres, c’était une coupe que '''Bathyclès''' avait laissée.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f22.item ''chap. II''], traduction correcte et précédée du texte grec, par une société de professeurs et d’helléniste, 1862<br />(également disponible une édition de 1844 [https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm#1a ici] et de 1829 [[s:Les_Vies_des_hommes_illustres/Vie_de_Solon|là]])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">Or ils (les sept sages) sont dits s’être trouvés aussi ensemble les uns avec les autres et à ''Delphes'' et de nouveau à ''Corinthe'', '''Périandre''' ayant préparé une certaine réunion commune d’eux et un banquet. Or le tour du trépied, et sa circulation à travers tous et sa cession se faisant avec une bienveillance pleine-d’émulation mit eux encore davantage en considération et renommée. Car des ''habitants-de-Cos'', comme on dit, jetant le filet, et des hôtes venus de ''Milet'' ayant acheté le coup qui n’était pas encore apparent, un trépied d’-or apparut étant retiré, lequel on dit '''Hélène''' naviguant pour revenir de ''Troie'' avoir jeté là, s’étant souvenue d’un certain oracle ancien. Mais une contestation ayant eu lieu d’abord aux hôtes vis-à-vis des pécheurs au sujet du trépied, ensuite les villes ayant pris-sur-elles le différend qui alla jusqu'à une guerre, la ''Pythie'' répondit aux-uns-et-aux-autres de donner le trépied au plus sage des hommes. Et d’abord il fut envoyé à '''Thalès''' à ''Milet'', les ''habitants-de-Cos'' donnant volontairement à celui-là seul le trépied, au sujet duquel ils avaient fait-la-guerre contre tous les ''Milésiens'' à-la-fois. Mais '''Thalès''' déclarant '''Bias''' plus sage que lui-même, il renvoya vers celui-là. Et de nouveau il fut envoyé par celui-là vers un autre, comme plus sage. Ensuite faisant-le-tour et étant envoyé-successivement ainsi il arriva pour la seconde fois à '''Thalès''' ; et à la fin transporté de ''Milet'' à ''Thèbes'', il fut consacré à ''Apollon Isménien''. Mais '''Théophraste''' dit le trépied avoir été envoyé d’abord à la vérité à ''Priène'' à '''Bias''', mais en-second-lieu à ''Milet'' à '''Thalès''', '''Bias''' l’ayant renvoyé ; et ainsi à travers tous (de l’un à l’autre) être venu-en-faisant-le-tour de nouveau à '''Bias''', et à la fin avoir été envoyé à ''Delphes''. Ces choses donc ont été répandues par plusieurs, excepté qu’ils disent le présent au lieu du trépied les uns être un vase à boire envoyé par '''Crésus''', les autres une coupe. '''Bathyclès''' rayant laissée (laissée par '''Bathyclès''').
</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f23.item ''chap. II''], traduction littérale et juxtalinéaire présentant le mot à mot français en regard des mots grecs correspondants, par une société de professeurs et d’helléniste, 1862</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Chapitre VI.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;"> Récit d’une entrevue de '''Thalès''' avec '''Solon''', de son stoïcisme, de son célibat et de l’adoption du fils de sa sœur, '''Cybistus'''.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;"> '''VI.''' Ἰδίᾳ δ' Ἀναχάρσεώς τε πρὸς Σόλωνα καὶ πάλιν Θάλεω συνουσίαν τινὰ καὶ λόγους ἀναγράφουσι τοιούτους. [...]<br /><p style="text-indent: 15px"> '''VII.''' Πρὸς Θαλῆν δ' εἰς Μίλητον ἐλθόντα τὸν Σόλωνα θαυμάζειν ὅτι γάμου καὶ παιδοποιΐας τὸ παράπαν ἠμέληκε. Καὶ τὸν Θαλῆν τότε μὲν σιωπῆσαι, διαλιπόντα δ' ὀλίγας ἡμέρας ἄνδρα παρασκευάσαι ξένον, ἀρτίως ἥκειν φάσκοντα δεκαταῖον ἐξ Ἀθηνῶν. Πυθομένου δὲ τοῦ Σόλωνος εἰ δή τι καινὸν ἐν ταῖς Ἀθήναις, δεδιδαγμένον ἃ χρὴ λέγειν τὸν ἄνθρωπον, « οὐδέν,» εἰπεῖν, « ἕτερον, εἰ μὴ νὴ Δία νεανίσκου τινὸς ἦν ἐκφορὰ καὶ προὔπεμπεν ἡ πόλις. Ἦν γὰρ υἱός, ὡς ἔφασαν, ἀνδρὸς ἐνδόξου καὶ πρωτεύοντος ἀρετῇ τῶν πολιτῶν· οὐ παρῆν δέ, ἀλλ' ἀποδημεῖν ἔφασαν αὐτὸν ἤδη πολὺν χρόνον.» « Ὡς δυστυχὴς ἐκεῖνος,» φάναι τὸν Σόλωνα. « Τίνα δὲ ὠνόμαζον αὐτόν;» « ἤκουσα,» φάναι, « τοὔνομα,» τὸν ἄνθρωπον, « ἀλλ' οὐ μνημονεύω· πλὴν ὅτι πολὺς λόγος ἦν αὐτοῦ σοφίας καὶ δικαιοσύνης.» Οὕτω δὴ καθ' ἑκάστην ἀπόκρισιν τῷ φόβῳ προσαγόμενον τὸν Σόλωνα καὶ τέλος ἤδη συντεταραγμένον αὐτὸν ὑποβάλλειν τοὔνομα τῷ ξένῳ, πυνθανόμενον μὴ Σόλωνος ὁ τεθνηκὼς υἱὸς ὠνομάζετο. Φήσαντος δὲ τοῦ ἀνθρώπου, τὸν μὲν ὁρμῆσαι παίειν τὴν κεφαλὴν καὶ τἆλλα ποιεῖν καὶ λέγειν ἃ συμβαίνει τοῖς περιπαθοῦσι, τὸν δὲ Θαλῆν ἐπιλαβόμενον αὐτοῦ καὶ γελάσαντα, « ταῦτά τοι,» φάναι, « ὦ Σόλων, ἐμὲ γάμου καὶ παιδοποιΐας ἀφίστησιν, ἃ καὶ σὲ κατερείπει τὸν ἐρρωμενέστατον. Ἀλλὰ θάρρει τῶν λόγων ἕνεκα τούτων· οὐ γάρ εἰσιν ἀληθεῖς.» ταῦτα μὲν οὖν Ἕρμιππος ἱστορεῖν φησι Πάταικον, ὃς ἔφασκε τὴν Αἰσώπου ψυχὴν ἔχειν.<br /><p style="text-indent: 15px">'''VIII.''' Ἄτοπος δὲ καὶ ἀγεννὴς ὁ τῷ φόβῳ τῆς ἀποβολῆς τὴν κτῆσιν ὧν χρὴ προϊέμενος· οὕτω γὰρ ἄν τις οὐ πλοῦτον, οὐ δόξαν, οὐ σοφίαν ἀγαπήσειε παραγενομένην, δεδιὼς στέρεσθαι. Καὶ γὰρ ἀρετήν, ἧς κτῆμα μεῖζον οὐδὲν οὐδ' ἥδιον, ἐξισταμένην ὑπὸ νόσων καὶ φαρμάκων ὁρῶμεν· αὐτῷ τε '''Θαλῇ''' μὴ γήμαντι πλέον οὐδὲν εἰς ἀφοβίαν, εἰ μὴ καὶ φίλων κτῆσιν ἔφυγε καὶ οἰκείων καὶ πατρίδος. Ἀλλὰ καὶ παῖδα θετὸν ἔσχε ποιησάμενος αὐτὸς τὸν τῆς ἀδελφῆς, ὥς φασι, '''Κύβισθον'''.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm <u>Plutarque, Vie de Solon</u>], ''chap. II'', ''§§6-8'', traduction par [[w:Dominique_Ricard|Dominique Ricard]], 1844<br />(également disponible une édition de 1853 [https://remacle.org/bloodwolf/historiens/Plutarque/solonpierrron.htm ici] et de 1862 [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f26.item là])</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 390px; border: 2px solid; text-indent: 15px"><br /><div style="margin: 0 2em; text-align: justify; direction: ltr;">'''VI.''' '''Solon''' connut [[w:Anacharsis|'''Anacharsis''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Anacharsis_back|<sup>🔄</sup>]] et '''Thalès''', et l’on cite des mots qui s’étaient dits dans leurs entrevues. <br /><p style="text-align: center"> [...]<br /><p style="text-indent: 15px; text-align: justify;">'''Solon''' alla à ''Milet'', pour voir '''Thalès''' : là, il lui témoigna sa surprise dans ce qu’il n’avait jamais voulu se marier et avoir des enfants. '''Thalès''' ne répondit rien sur l’heure; mais, quelques jours après, il fit paraître un étranger, qui disait arriver d’''Athènes'', et qu’il n’en était parti que depuis dix jours. '''Solon''' demanda à cet homme s’il n’y avait rien de nouveau à ''Athènes''. Celui-ci, à qui '''Thalès''' avait fait la leçon, répondit qu’il n’y avait rien de nouveau , sinon la mort d’un jeune homme dont toute la ville menait les funérailles. C’était, en effet, à ce qu’on disait, le fils d’un personnage considérable, d’une vertu éprouvée : le père n’était pas alors à ''Athènes'', et il voyageait depuis longtemps. « L’infortuné père! s’écria '''Solon'''. Mais comment s’appelait-il? — Je l’ai entendu nommer, répondit l’étranger, mais j’ai oublié son nom ; je me souviens seulement qu’on ne parlait que de sa sagesse et de sa justice. » A chacune de ces réponses, '''Solon''' sentait augmenter ses craintes; enfin, ne se possédant plus , il suggéra le nom à l’étranger, et lui demanda si le mort n’était pas le fils de '''Solon'''. « Oui. » répondit l’étranger. A cette parole, '''Solon''' se frappa la tête, et il se mit à faire et à dire tout ce qu’inspire une douleur violente. Alors '''Thalès''' lui prit la main, et lui dit en riant : « Voilà, '''Solon''', ce qui m’éloigne de me marier et d’avoir des enfants. J’ai redouté le coup sous lequel tu fléchis, toi le plus ferme des hommes. Mais rassure-toi; car il n’y a rien de vrai dans tout ce qu’on vient de te dire. » [[w:Hermippe_de_Smyrne|'''Hermippus''']] [[#Hermippe|<span id="Hermippe_back"><sup>'''I'''</sup></span>]] rapporte cette histoire d’après '''Patécus''', celui qui prétendait avoir hérité de l’âme d’[[w:Ésope|'''Ésope''']] [[#Ésope|<span id="Ésope_back"><sup>'''II'''</sup></span>]].<br /><p style="text-indent: 15px">Pourtant il y a faute de sens et de cœur à refuser d’acquérir les choses nécessaires, par la crainte de les perdre. A ce compte, on devra n’aimer ni la richesse, ni la gloire, ni la sagesse, quand on les possède, de peur d’en être privé. En effet, la vertu, le plus grand des biens et le plus doux, nous quitte quelquefois par l’action de certaines maladies ou de certains breuvages. '''Thalès''' lui-même, en ne se mariant point, n’était pas pour cela à l’abri de la crainte, à moins qu’il n'eût renoncé aussi à ses parents, à ses amis, à sa patrie. Mais il n’en était rien : il avait adopté, dit-on, '''Cybisthus''', le fils de sa sœur.
</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/viesdeshommesill01plut/page/n6/mode/1up?view=theater <u>Vie des Hommes Illustres de Plutarque</u>], [https://archive.org/details/viesdeshommesill01plut/page/182/mode/1up?view=theater ''Solon''], ''Chap. II'', ''§6'', [https://archive.org/details/viesdeshommesill01plut/page/185/mode/1up?view=theater p.185], traduit par [[w:Alexis_Pierron|Alexis Pierron]], professeur au lycée Louis-le-Grand, 1877<br />(également disponible une édition de 1853 [[s:Vies_des_hommes_illustres/Solon|ici]])</div>
{{Boîte déroulante début|titre=NdA trad. par Alexis Pierron de 1877|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Hermippe_back|<span id="Hermippe"><sup>I</sup></span>]] Du nom propre [[w:Nom_théophore|''théophore'']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#théophore_back|<sup>🔄</sup>]] grec ancien Ἕρμιππος / Hérmippos [[wikt:en:Ἕρμιππος#Ancient_Greek|(en)]] ;<br /><p style="margin: 0 2em; text-indent: 15px">➥ du nom propre Ἑρμῆς / Hermês [[wikt:en:Ἑρμῆς#Ancient_Greek|(en)]], « Hermès » ;<br /><p style="margin: 0 2em; text-indent: 15px">➥ + du nom commun ἵππος / híppos [[wikt:en:ἵππος#Ancient_Greek|(en)]], « cheval » ;<br /><p style="margin: 0 2em; text-indent: 15px">« Péripatéticien » grec, disciple de [[w:Callimaque_de_Cyr%C3%A8ne|Callimaque de ''Cyrène'']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Callimaque_back|<sup>🔄</sup>]], auteur de nombreuses biographies toutes perdues, mais listées par plusieurs auteurs.<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] seconde moitié du [[w:IIIe_siècle_av._J.-C.|III<sup>ème</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]]) [https://books.google.fr/books?id=DrvWAAAAMAAJ&newbks=1&newbks_redir=0&lpg=PA497&dq=bibliogroup%3A%22Dictionnaire%20des%20philosophes%20antiques%22&hl=fr&pg=PA655#v=onepage&q&f=false {{Info|<sup>🔍</sup>|Dictionnaire des Philosophes Antiques, publié sous la direction de Richard Goulet, Volume III, §86 - Hermippe de Smyrne}}]
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Ésope_back|<span id="Ésope"><sup>II</sup></span>]] Du nom propre grec ancien Αἴσωπος / Aísōpos [[wikt:en:Αἴσωπος#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px">➥ du nom commun αἶσα / aîsa, « destin »;<br /><p style="margin: 0 2em; text-indent: 15px">➥ + du nom commun ὄψ / óps, « voix »;<br /><br /><p style="margin: 0 2em; text-indent: 15px">Auteur grec de fable.<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] seconde moitié du [[w:VIe_siècle_av._J.-C.|VI<sup>ème</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]]) [https://books.google.fr/books?id=DrvWAAAAMAAJ&newbks=1&newbks_redir=0&lpg=PA497&dq=bibliogroup%3A%22Dictionnaire%20des%20philosophes%20antiques%22&hl=fr&pg=PA240#v=onepage&q&f=false {{Info|<sup>🔍</sup>|Dictionnaire des Philosophes Antiques, publié sous la direction de Richard Goulet, Volume III, §60 - Ésope(Αἴσωπος)}}]'''<br/><br/></div>
{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">'''V.''' Voici les particularités qu’on raconte d’une entrevue de '''Solon''' avec '''Anacharsis''', et d’un entretien qu’il eut avec '''Thalès'''.<br /><p style="text-align: center"> [...]<br /><p style="text-indent: 15px; text-align: justify;">'''VI.''' '''Solon''', étant allé à ''Milet'' pour voir '''Thalès''', lui témoigna sa surprise de ce qu’il n’avait jamais voulu se marier et avoir des enfants. '''Thalès''' ne lui répondit rien dans le moment; mais ayant laissé passer quelques jours, il fit paraître un étranger qui disait arriver d’''Athènes'', d’où il était parti depuis dix jours. '''Solon''' lui demanda s’il n’y avait rien de nouveau, lorsqu’il en était parti. Cet homme, à qui '''Thalès''' avait fait la leçon, lui répondit qu’il n’y avait autre chose que la mort d’un jeune homme dont toute la ville accompagnait le convoi. C’était, disait-on, le fils d’un des premiers et des plus vertueux citoyens, qui n'’était pas alors à ''Athènes'' et qui voyageait depuis longtemps, « Le malheureux père! s’écria Solon. Comment s’appelle-t-il? ― Je l’ai entendu nommer, répondit l’étranger; mais j’ai oublié son nom; je me souviens seulement qu’on ne parlait que de sa sagesse et de sa justice. » A chacune de ces réponses, les craintes de '''Solon''' augmentaient; enfin, troublé, hors de lui-même, il suggéra le nom à l’étranger, et lui demanda si ce jeune homme n’était pas le fils de '''Solon'''. « C’est lui-même, » dit l’autre. A cette parole, '''Solon''', se frappant la tête, se mit à faire et à dire tout ce que la douleur la plus violente peut inspirer. Alors '''Thalès''' l’arrêta et lui dit en souriant : « Voilà, '''Solon''', ce qui m’a éloigné de me marier et d’avoir des enfants; j’ai redouté le coup qui vous accable aujourd’hui, et contre lequel toute votre fermeté est impuissante. Mais rassurez-vous ; il n’y a rien de vrai dans tout ce qu’on vient de vous dire. » '''Hermippus''' rapporte cette histoire d’après le récit qu’en fait '''Patécus''', qui prétendait avoir hérité de l’âme d’'''Ésope'''.<br /><p style="text-indent: 15px; text-align: justify;">'''VII.''' Cependant c’est manquer de sens et de courage que de renoncer à acquérir des choses nécessaires par la crainte de les perdre. A ce compte, il ne faudrait aimer ni la richesse, ni la gloire, ni la sagesse, quand on les possède, de peur d’en être privé. La vertu même, le plus grand et le plus agréable des biens, se perd souvent par l’effet. de quelques maladies ou de certains breuvages. '''Thalès''' lui-même, en ne se mariant point, n’était pas à l’abri de toute crainte, à moins qu’il ne renonçât aussi à ses parents, à ses amis et à sa patrie. Mais au contraire, il avait adopté '''Cybistus''', le fils de sa sœur.
</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f26.item ''chap. II''], traduction correcte et précédée du texte grec, par une société de professeurs et d’helléniste, 1862<br />(également disponible une édition de 1844 [https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm#1a ici] et de 1829 [[s:Les_Vies_des_hommes_illustres/Vie_de_Solon|là]])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">'''V.''' Mais en particulier on rapporte une certaine entrevue et de tels discours et d’'''Anacharsis''' à '''Solon''' et une-autre-fois de '''Thalès'''.<br /><p style="text-align: center"> [...]<br /><p style="text-indent: 15px; text-align: justify;">'''VI.''' Et on raconte '''Solon''' étant venu vers '''Thalès''' à ''Milet'' s’étonner de ce qu’il avait négligé absolument le mariage et la création-d’enfants. Et '''Thalès''' alors à la vérité s’être tu, mais ayant laissé-d’intervalle peu-de jours, avoir aposté un homme étranger, disant être arrivé récemment parti-depuis-dix-jours d’''Athènes''. Et '''Solon''' s’étant informé si donc il y a quelque chose de nouveau à ''Athènes'', l’homme instruit des choses qu’il faut dire n’avoir dit aucune autre chose, si ce n’est :<br /><p style="text-indent: 15px"> « Par '''Jupiter''', il y avait le convoi d’un certain jeune-homme, et la ville l’accompagnait. Car il était fils, comme on disait, d’un homme illustre et étant-le-premier des citoyens par la vertu; mais il n’était-pas-présent, mais on disait lui être-en-voyage depuis un temps déjà long.<br /><p style="text-align: left; text-indent: 15px">― Combien cet homme-là est malheureux! avoir dit '''Solon'''. Mais quel (comment) appelaient-ils lui ?<br /><p style="text-align: left; text-indent: 15px">― J’ai entendu le nom, avoir dit l’homme (répondit l’étranger), mais je ne me le rappelle pas; excepté qu’un discours fréquent était de la sagesse et de la justice de lui. »<br /><p style="text-indent: 15px">'''Solon''' donc étant-approché ainsi de-la crainte à chaque réponse, et à la fin déjà étant tout-troublé, lui-même avoir suggéré le nom à l’étranger, demandant si le mort n’était pas nommé fils de '''Solon'''. Et l’homme ayant dit-oui, celui-ci ('''Solon''') avoir commencé à frapper sa tête, et à faire et à dire les autres choses, qu’il arrive de faire et de dire à ceux affligés-à-l’excès. Mais '''Thalès''' ayant arrêté lui, et ayant ri, avoir dit :<br /><p style="text-indent: 15px">« Ces choses donc, ô '''Solon''', écartent moi du mariage et de la création-d’enfants, lesquelles abattent même toi le très-fort. Mais aie-confiance quant-à ces discours: car ils ne sont pas vrais. »<br /><p style="text-indent: 15px">'''Hermippe''' donc dit '''Patécus''', qui disait-souvent avoir l’âme d’'''Ésope''', raconter ces choses. <br /><p style="text-indent: 15px">'''VII.''' Or il est absurde et dépourvu de courage celui rejetant par la crainte de la perte l’acquisition des choses qu’il faut; car ainsi quelqu’un n’aimerait pas la richesse, n’aimerait pas la gloire, n’aimerait pas la sagesse étant survenue à lui, craignant (par crainte) d’en être privé. Et en effet nous voyons la vertu, au prix de laquelle aucune possession n’est plus grande, ni plus agréable, déplacée (chassée) par des maladies et des breuvages; et rien de plus n’être pour l’exemption-de-crainte à '''Thalès''' lui-même ne s’étant pas marié, s’il n’avait pas évité la possession et d’amis et de parents et de patrie. Mais même il eut un fils adoptif se l’étant fait tel lui-même, celui de sa sœur, comme on dit '''Cybisthe'''.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f27.item ''chap. II''], traduction littérale et juxtalinéaire présentant le mot à mot français en regard des mots grecs correspondants, par une société de professeurs et d’helléniste, 1862</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
====== <div style="text-align: center;">Paragraphe XV.</div> ======
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;"> Testament d’inhumation de '''Thalès'''.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">'''XV.''' Καὶ φόβοι τινὲς ἐκ δεισιδαιμονίας ἅμα καὶ φάσματα κατεῖχε τὴν πόλιν, οἵ τε μάντεις ἄγη καὶ μιασμοὺς δεομένους καθαρμῶν προφαίνεσθαι διὰ τῶν ἱερῶν ἠγόρευον. Οὕτω δὴ μετάπεμπτος αὐτοῖς ἧκεν ἐκ Κρήτης Ἐπιμενίδης ὁ Φαίστιος, ὃν ἕβδομον ἐν τοῖς σοφοῖς καταριθμοῦσιν ἔνιοι τῶν οὐ προσιεμένων τὸν Περίανδρον. Ἐδόκει δέ τις εἶναι θεοφιλὴς καὶ σοφὸς περὶ τὰ θεῖα τὴν ἐνθουσιαστικὴν καὶ τελεστικὴν σοφίαν, διὸ καὶ παῖδα νύμφης ὄνομα Βάλτης καὶ Κούρητα νέον αὐτὸν οἱ τότε ἄνθρωποι προσηγόρευον. <br /><p style="text-align: center">[...]<br /><p style="text-indent: 15px; text-align: justify;">Τὸ δὲ μέγιστον, ἱλασμοῖς τισι καὶ καθαρμοῖς καὶ ἱδρύσεσι κατοργιάσας καὶ καθοσιώσας τὴν πόλιν ὑπήκοον τοῦ δικαίου καὶ μᾶλλον εὐπειθῆ πρὸς ὁμόνοιαν κατέστησε. Λέγεται δὲ τὴν Μουνυχίαν ἰδὼν καὶ καταμαθὼν πολὺν χρόνον, εἰπεῖν πρὸς τοὺς παρόντας ὡς τυφλόν ἐστι τοῦ μέλλοντος ἄνθρωπος· ἐκφαγεῖν γὰρ ἂν Ἀθηναίους τοῖς αὑτῶν ὀδοῦσιν, εἰ προῄδεσαν ὅσα τὴν πόλιν ἀνιάσει τὸ χωρίον· ὅμοιον δέ τι καὶ Θαλῆν εἰκάσαι λέγουσι· κελεῦσαι γὰρ αὐτὸν ἔν τινι τόπῳ τῆς Μιλησίας φαύλῳ καὶ παρορωμένῳ τελευτήσαντα θεῖναι, προειπὼν ὡς ἀγορά ποτε τοῦτο Μιλησίων ἔσται τὸ χωρίον. Ἐπιμενίδης μὲν οὖν μάλιστα θαυμασθείς, καὶ χρήματα διδόντων πολλὰ καὶ τιμὰς μεγάλας τῶν Ἀθηναίων, οὐδὲν ἢ θαλλὸν ἀπὸ τῆς ἱερᾶς ἐλαίας αἰτησάμενος καὶ λαβὼν ἀπῆλθεν.
</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm <u>Plutarque, Vie de Solon</u>], ''chap. II'', ''§15'', traduction par [[w:Dominique_Ricard|Dominique Ricard]], 1844<br />(également disponible une édition de 1853 [https://remacle.org/bloodwolf/historiens/Plutarque/solonpierrron.htm ici] et de 1862 [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f26.item là])</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 390px; border: 2px solid; text-indent: 15px"><br /><div style="margin: 0 2em; text-align: justify; direction: ltr;">'''XV.''' Au chagrin que ces pertes causèrent à ceux-ci [les ''Athéniens''], se joignirent des craintes superstitieuses dont la ville [''Athènes''] fut frappée, et qui venaient d’apparitions de spectres et de fantômes. Les devins déclarèrent aussi que l’état des victimes qu’ils avaient offertes annonçait des crimes et des profanations qu’il fallait expier. On fit donc venir de ''Crète'' [[w:Épiménide|'''Épiménide''']] [[#Épiménide|<span id="Épiménide_back"><sup>'''I'''</sup></span>]] le [[w:Phaistos|''Phestien'']] [[#Phaistos|<span id="Phaistos_back"><sup>'''II'''</sup></span>]], qui est mis au nombre des sept sages par ceux qui n’y comptent pas '''Périandre'''. Il passait pour un homme chéri des dieux, doué d’une grande sagesse, fort instruit des choses divines, surtout versé dans la science des inspirations et dans la connaissance des mystères; on l’appelait, même de son vivant, le nouveau [[w:Curètes|'''Curète''']], le fils de la nymphe '''Balté'''.<br /><p style="text-align: center">[...]<br /><p style="text-indent: 15px; text-align: justify;">Mais ce qui était plus important, il fit un grand nombre d’expiations et de sacrifices, il fonda plusieurs temples; et par ces différentes cérémonies il purifia entièrement la ville, en bannit l’impiété et l’injustice, et la rendit plus soumise, plus disposée à l’union et à la paix. On rapporte aussi que lorsqu’il vit le fort de [[w:Munichie|''Munychium'']] [[#Munichie|<span id="Munichie_back"><sup>'''III'''</sup></span>]], il le considéra longtemps, et dit à ceux qui l’accompagnaient : Que les hommes sont aveugles sur l’avenir ! Si les ''Athéniens'' pouvaient prévoir tous les maux que ce lieu doit un jour causer à leur ville, ils l’emporteraient à belles dents ». '''Thalès''' eut aussi, dit-on, un pressentiment à peu près semblable. Il ordonna qu’on l’enterrât dans le lieu le plus sauvage et le plus désert du territoire de ''Milet''; et il prédit aux ''Milésiens'' qu’un jour leur marché public y serait transporté. Les ''Athéniens'', pleins de reconnaissance et d’admiration pour '''Épiménide''', voulurent le combler d’honneurs et de présents; mais il ne demanda qu’une branche de l’olivier sacré, qui lui fut accordée, et il s’en retourna en ''Crète''.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://archive.org/details/viesdeshommesill01plut/page/n6/mode/1up?view=theater <u>Vie des Hommes Illustres de Plutarque</u>], [https://archive.org/details/viesdeshommesill01plut/page/182/mode/1up?view=theater ''Solon''], ''Chap. II'', ''§15'',[https://archive.org/details/viesdeshommesill01plut/page/185/mode/1up?view=theater p.185], traduit par [[w:Alexis_Pierron|Alexis Pierron]], professeur au lycée Louis-le-Grand, 1877<br />(également disponible une édition de 1853 [[s:Vies_des_hommes_illustres/Solon|ici]])</div>
{{Boîte déroulante début|titre=NdA trad. par Alexis Pierron de 1877|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Épiménide_back|<span id="Épiménide"><sup>I</sup></span>]] Du nom propre grec ancien Ἐπιμενίδης / Epimenídēs [[wikt:en:Ἐπιμενίδης#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px">Poète, philosophe et [[w:Iatromante|''iatromante'']] crétois.<br /><p style="text-align: right; margin: 0 2em;">([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l’on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] milieu du [[w:VIe_siècle_av._J.-C.|VI<sup>ème</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]])
<br /><br /><p style="margin: 0 2em; text-indent: 15px">'''[[#Phaistos_back|<span id="Phaistos"><sup>II</sup></span>]] Du nom propre grec ancien Φαιστός / Phaistós [[wikt:en:Φαιστός#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px">Ancienne ville du Sud de la [[w:Histoire_de_la_Crète#Antiquité|''Crète'']].<br /><br /><p style="margin: 0 2em; text-indent: 15px">[[#Munichie_back|<span id="Munichie"><sup>III</sup></span>]] Du nom propre grec ancien Μουνιχία / Mounikhia [[wikt:en:Μουνυχία#Grec_ancien|(en)]] ;<br /><p style="margin: 0 2em; text-indent: 15px">Nom d’une colline du [[w:Le_Pirée|''Pirée'']] et de l’[[w:Port_de_Munichie|un des ports du ''Pirée'']].'''<br/><br/></div>
{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">'''XII.''' Au chagrin que ces pertes causèrent à ceux-ci, se joignirent des craintes superstitieuses dont la ville fut frappée, et qui venaient d’apparitions de spectres et de fantômes. Les devins déclarèrent aussi que l’état des victimes annonçait des crimes et des profanations qu’il fallait expier. On fit donc venir de ''Crète'' '''Épiménide''' le ''Phestien'' qui est mis au nombre des sept sages par ceux qui n’y comptent pas '''Périandre'''. Il passait pour un homme chéri des dieux, doué d’une grande sagesse, fort instruit des choses divines, surtout versé dans la science des inspirations et dans la connaissance des mystères; on l’appelait, même de son vivant, le nouveau '''Curète''', le fils de la nymphe '''Balté'''.<br /><p style="text-align: center">[...]<br /><p style="text-indent: 15px; text-align: justify;">Mais ce qui était plus important, il fit un grand nombre d’expiations et de sacrifices; il fonda plusieurs temples; et par ces différentes cérémonies, il purifia entièrement la ville, en bannit l’impiété et l’injustice, et la rendit plus soumise, plus disposée à l’union et à la paix. On rapporte aussi que lorsqu’il vit ''Munychie'', il la considéra longtemps, et dit à ceux qui l’accompagnaient :<br /><p style="text-align: justify; text-indent: 15px"> « Que les hommes sont aveugles sur l’avenir! Si les ''Athéniens'' pouvaient prévoir tous les maux que ce lieu doit un jour causer à leur ville, il l’emporteraient à belles dents. »<br /><p style="text-align: justify; text-indent: 15px"> '''Thalès''' eut aussi, dit-on, un pressentiment à peu près semblable. Il ordonna qu’on l’enterrât dans le lieu le plus sauvage et le plus désert du territoire de ''Milet''; et il prédit aux ''Milésiens'' qu’un jour leur marché public y serait transporté. Les ''Athéniens'', pleins de reconnaissance et d’admiration pour '''Épiménide''', voulurent le combler d’honneurs et de présents; mais il ne demanda qu’une branche de l’olivier sacré, qui lui fut accordée, et il s’en retourna en ''Crète''.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f58.item ''chap. II''], traduction correcte et précédée du texte grec, par une société de professeurs et d’helléniste, 1862<br />(également disponible une édition de 1844 [https://remacle.org/bloodwolf/historiens/Plutarque/solon.htm#1a ici] et de 1829 [[s:Les_Vies_des_hommes_illustres/Vie_de_Solon|là]])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">Et certaines craintes nées de la superstition en-même-temps aussi des apparitions occupaient la ville; et les devins disaient des impiétés et des souillures ayant-besoin de purifications être indiquées par les victimes. Et ainsi vint à eux mandé (ils firent venir) de ''Crète'' '''Épiménide''' le ''Phestien'', que quelques-uns de ceux n’admettant pas '''Périandre''' comptent le septième parmi les sages. Or il avait-la-réputation d’être un homme ami-des-dieux, et habile dans la science de-l’inspiration et des-mystères. C’est-pourquoi les hommes d’alors appelaient lui et fils de la nymphe de nom (nommée) '''Balté''', et nouveau '''Curète'''.<br /><p style="text-align: center">[...]<br /><p style="text-indent: 15px; text-align: justify;">Mais le plus grand (le plus important), ayant initié-aux-mystères et ayant purifié la ville par certaines expiations et purifications et fondations, il la rendit prêtant-l’oreille à la justice et plus obéissante pour la concorde. Et il est dit, ayant vu ''Munychie'' et l’ayant examinée un temps long, avoir dit à ceux présents, que l’homme est un être aveugle sur l’avenir ; car les ''Athéniens'' avoir dû manger ''Munychie'' avec les dents d’eux-mêmes, s’ils avaient prévu en combien de choses cette place affligera la ville. Et on dit aussi '''Thalès''' avoir conjecturé quelque chose de semblable; lui avoir ordonné en effet de placer lui ayant cessé de vivre dans un certain lieu de la ''Milésie'' méprisé et dédaigné, ayant prédit que cet endroit sera (serait) un jour le marché des ''Milésiens''. '''Épiménide''' donc ayant été admiré très-grandement, et les ''Athéniens'' lui donnant des sommes nombreuses et des honneurs grands, n’ayant demandé rien qu’un rameau détaché de l’olivier sacré et l’ayant pris (reçu) s’en alla.</div>
<div style="text-align: right; margin: 0 2em 0 1em;">[https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f7.item <u>Plutarque, Vie de Solon</u>], [https://gallica.bnf.fr/ark:/12148/bpt6k6226675w/f59.item ''chap. II''], traduction littérale et juxtalinéaire présentant le mot à mot français en regard des mots grecs correspondants, par une société de professeurs et d’helléniste, 1862</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">═✳═</div>
=== [[w:Œuvres_morales|Œuvres morales]] ===
<div style="text-align: center; margin: 0 1em;">Ensemble de 78 textes de traitant de sujets extrêmement variés (religieux, éthiques, politiques, philosophiques, littéraires, historiques), et s'inscrivant dans des genres littéraires également divers (traité, différentes sortes de dialogues, lettres, réponses à des Questions ([[wikt:ζήτημα#Grec_ancien|''zetemata'']]), « dits » ([[w:Apophtegme|''apophtegmes'']])).</div>
==== Le Banquet des Sept Sages ====
<div style="text-align: center; margin: 0 1em;">Dialogue faisant intervenir 20 personnages, dont une liste des sept sages : '''Thalès''', [[w:Solon|'''Solon''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Solon_back|<sup>🔄</sup>]], [[w:Bias_de_Priène|'''Bias''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Bias_back|<sup>🔄</sup>]], [[w:Chilon|'''Chilon''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Chilon_back|<sup>🔄</sup>]], [[w:Cléobule|'''Cléobule''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Cléobule_back|<sup>🔄</sup>]], [[w:Pittacos_de_Mytil%C3%A8ne|'''Pittacos''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Pittacos_back|<sup>🔄</sup>]], [[w:Périandre|'''Périandre''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Périandre_back|<sup>🔄</sup>]].<br />À ceux-ci se rajoutent : [[w:Anacharsis|'''Anacharsis''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Anacharsis_back|<sup>🔄</sup>]], '''Ésope''', '''Dioclès''', '''Nicarque''', [[w:Cléobuline|'''Cléobuline''']] [[#Cléobuline|<span id="Cléobuline_back"><sup>'''I'''</sup></span>]], '''Mélissa''', '''Niloxène''', '''Alexidème''', '''Ardalus''', '''Cléodème''', '''Mnésiphile''', '''Chersias''', [[w:Gorgias|'''Gorgias''']] [[Philosophie/Thalès_de_Milet/Textes_et_traductions_Ier_millénaire_AEC#Gorgias_back|<sup>🔄</sup>]].</div>
{{Boîte déroulante début|titre=NdA Le Banquet des Septs Sages|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Cléobuline_back|<span id="Cléobuline"><sup>I</sup></span>]] Du nom propre grec ancien Κλεοβουλίνη / Kleoboulinè ;<br /><p style="margin: 0 2em; text-indent: 15px">➥ de Κλεόβουλος / Kleóboulos [[wikt:en:Κλεόβουλος#Ancient_Greek|(en)]], « Cléobule, le père de Cléobuline » <br /><p style="margin: 0 2em; text-indent: 15px">➥ du suffixe adjectival féminin -ῑ́νη / -ī́nē [[wikt:en:-ίνη#Ancient_Greek|(en)]], relatif à la matière, au temps, etc. : « fait de, pendant la durée de » ;<br /><p style="margin: 0 2em; text-indent: 15px">Philosophe et poétesse grecque, célèbre pour ses énigmes, fille du [[w:Tyran|''tyran'']] Cléobule, qui la surnommerait Εὔμητις / Eúmētis, « la Prudente » selon Plutarque.
'''<br/><br/></div>
{{Boîte déroulante fin}}
===== <div style="text-align: center;">Paragraphe I.</div> =====
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§1. Ἦ που προϊὼν ὁ χρόνος, ὦ '''Νίκαρχε''', πολὺ σκότος ἐπάξει τοῖς πράγμασι καὶ πᾶσαν ἀσάφειαν, εἰ νῦν ἐπὶ προσφάτοις οὕτω καὶ νεαροῖς λόγοι ψευδεῖς συντεθέντες ἔχουσι πίστιν. οὔτε γὰρ μόνων, ὡς ὑμεῖς ἀκηκόατε, τῶν ἑπτὰ γέγονε τὸ συμπόσιον, ἀλλὰ πλειόνων ἢ δὶς τοσούτων (ἐν οἷς καὶ αὐτὸς ἤμην, συνήθης μὲν ὢν '''Περιάνδρῳ''' διὰ τὴν τέχνην, ξένος δὲ '''Θάλεω'''· παρ´ ἐμοὶ γὰρ κατέλυσεν ὁ ἀνὴρ '''Περιάνδρου''' κελεύσαντος), οὔτε τοὺς λόγους ὀρθῶς ἀπεμνημόνευσεν ὅστις ἦν ὑμῖν ὁ διηγούμενος· ἦν δ´ ὡς ἔοικεν οὐδεὶς τῶν παραγεγονότων. ἀλλ´ ἐπεὶ σχολή τε πάρεστι πολλὴ καὶ τὸ γῆρας οὐκ ἀξιόπιστον ἐγγυήσασθαι τὴν ἀναβολὴν τοῦ λόγου, προθυμουμένοις ὑμῖν ἀπ´ ἀρχῆς ἅπαντα διηγήσομαι.
</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §1'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§1. '''D<span style ="font-size:85%;">IOCLÈS</span>'''. Certainement le long cours des âges, mon cher '''Nicarque''', jettera sur les faits d’épaisses ténèbres et une complète incertitude, puisque dès aujourd’hui, à propos de choses si récentes et si nouvelles, des relations mensongères et controuvées obtiennent crédit. Car d’abord le banquet en question ne se composait pas seulement des sept sages, comme vous autres l’avez ouï dire. Les convives étaient plus du double de ce nombre. J’en faisais moi-même partie, comme familier de '''Périandre''' en raison de notre profession commune, et comme hôte de '''Thalès''' : ce dernier était en effet descendu chez moi sur la recommandation de '''Périandre'''. Ensuite, on ne vous en a pas rapporté fidèlement les entretiens lorsqu’on vous a fait ce récit. Il faut que celui de qui vous le tenez n’ait pas été un des convives. Mais puisque nous avons un ample loisir et que la vieillesse est un garant trop peu sûr pour nous autoriser à remettre cet entretien, je vais, suivant votre désir unanime, vous en raconter tous les détails à partir du commencement.
</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §1'', traduction par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870<br/>(également disponible [[s:Page:Plutarque_-_Œuvres_complètes_de_Plutarque_-_Œuvres_morales_et_œuvres_diverses,_tome_1,_1870.djvu/424|ici]])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">'''D<span style ="font-size:85%;">IOCLÈS</span>'''. Quelle incertitude et quelle obscurité la succession des temps ne doit-elle pas répandre sur l’histoire, mon cher '''Nicarque''', puisque, dans des faits récents, et qui se sont passés presque sous nos yeux, le faux prend la place du vrai ? Ce banquet n’était pas, comme on vous l’a dit, composé seulement des sept sages ; les convives étaient plus du double de ce nombre. J’y assistai moi-même, et comme ami de '''Périandre''', avec qui ma profession ma lié depuis longtemps [[#Dioclès_NdT_DR|<span id="Dioclès_NdT_DR_back"><sup>1</sup></span>]], et comme hôte de '''Thalès''', à qui '''Périandre''' avait fait marquer son logement chez moi. Celui qui vous a fait le récit de ce qui s’y est passé n’en était sûrement pas, et vous a trompé sur presque tous les points. Mais, puisque nous en avons le loisir, et que notre âge avancé ne nous permet guère de différer, je vais vous satisfaire et vous en raconter tous les détails.</div>
<table cellspacing=15 style="margin: 0 4em; font-size:85%;">
<tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Dioclès_NdT_DR_back|<span id="Dioclès_NdT_DR"><sup>1.</sup></span>]] Dioclès était devin.'''
</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe II.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage de la simplicité de '''Thalès''', de sa mesure de la pyramide d’''Égypte'', et de son aversion des [[w:Tyran|''tyrans'']] et des rois.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§2. Παρεσκευάκει μὲν γὰρ οὐκ ἐν τῇ πόλει τὴν ὑποδοχὴν ὁ Περίανδρος, ἀλλ´ ἐν τῷ περὶ τὸ Λέχαιον ἑστιατορίῳ παρὰ τὸ τῆς Ἀφροδίτης ἱερόν, ἧς ἦν καὶ ἡ θυσία. μετὰ γὰρ τὸν ἔρωτα τῆς μητρὸς αὐτοῦ προεμένης τὸν βίον ἑκουσίως οὐ τεθυκὼς τῇ Ἀφροδίτῃ, τότε πρῶτον ἔκ τινων ἐνυπνίων τῆς Μελίσσης ὥρμησε τιμᾶν καὶ θεραπεύειν τὴν θεόν. Τῶν δὲ κεκλημένων ἑκάστῳ συνωρὶς ἱκανῶς κεκοσμημένη προσήχθη· καὶ γὰρ ὥρα θέρους ἦν, καὶ τὴν ὁδὸν ἅπασαν ὑπὸ πλήθους ἁμαξῶν καὶ ἀνθρώπων ἄχρι θαλάττης κονιορτὸς καὶ θόρυβος κατεῖχεν. ὁ μέντοι Θαλῆς τὸ ζεῦγος ἐπὶ ταῖς θύραις ἰδὼν καὶ μειδιάσας ἀφῆκεν. ἐβαδίζομεν οὖν ἐκτραπόμενοι διὰ τῶν χωρίων, καθ´ ἡσυχίαν, καὶ μεθ´ ἡμῶν τρίτος ὁ Ναυκρατίτης Νειλόξενος, ἀνὴρ ἐπιεικὴς καὶ τοῖς περὶ Σόλωνα καὶ Θαλῆν γεγονὼς ἐν Αἰγύπτῳ συνήθης. ἐτύγχανε δὲ πρὸς Βίαντα πάλιν ἀπεσταλμένος· ὧν δὲ χάριν οὐδ´ αὐτὸς ᾔδει, πλὴν ὑπενόει πρόβλημα δεύτερον αὐτῷ κομίζειν ἐν βιβλίῳ κατασεσημασμένον· εἴρητο γάρ, εἰ Βίας ἀπαγορεύσειεν, ἐπιδεῖξαι τοῖς σοφωτάτοις Ἑλλήνων τὸ βιβλίον. « Ἕρμαιον » ὁ Νειλόξενος ἔφη « μοι γέγονεν ἐνταῦθα λαβεῖν ἅπαντας ὑμᾶς, καὶ κομίζω τὸ βιβλίον ὡς ὁρᾷς ἐπὶ τὸ δεῖπνον. » ἅμα δ´ ἡμῖν ἐπεδείκνυε. Καὶ ὁ Θαλῆς γελάσας « εἴ τι κακόν, » εἶπεν, « αὖθις εἰς Πριήνην· διαλύσει γὰρ ὁ Βίας, ὡς διέλυσεν αὐτὸς τὸ πρῶτον. » « Τί δ´ ἦν, » ἔφην ἐγώ, « τὸ πρῶτον; » « Ἱερεῖον, » εἶπεν, « ἔπεμψεν αὐτῷ, κελεύσας τὸ πονηρότατον ἐξελόντα καὶ χρηστότατον ἀποπέμψαι κρέας. ὁ δ´ ἡμέτερος εὖ καὶ καλῶς τὴν γλῶτταν ἐξελὼν ἔπεμψεν· ὅθεν εὐδοκιμῶν δῆλός ἐστι καὶ θαυμαζόμενος. » « Οὐ διὰ ταῦτ´ » ἔφη « μόνον » ὁ Νειλόξενος, « ἀλλ´ οὐ φεύγει τὸ φίλος εἶναι καὶ λέγεσθαι βασιλέων καθάπερ ὑμεῖς, ἐπεὶ σοῦ γε καὶ τἄλλα θαυμάζει, καὶ τῆς [[wikt:en:πυραμίδος#Ancient_Greek|πυραμίδος]] τὴν μέτρησιν ὑπερφυῶς ἠγάπησεν, ὅτι πάσης ἄνευ πραγματείας καὶ μηδενὸς ὀργάνου δεηθεὶς ἀλλὰ τὴν βακτηρίαν στήσας ἐπὶ τῷ πέρατι τῆς σκιᾶς ἣν ἡ πυραμὶς ἐποίει, γενομένων τῇ ἐπαφῇ τῆς ἀκτῖνος δυεῖν τριγώνων, ἔδειξας ὃν ἡ σκιὰ πρὸς τὴν σκιὰν λόγον εἶχε τὴν πυραμίδα πρὸς τὴν βακτηρίαν ἔχουσαν. ἀλλ´, ὅπερ ἔφην, διεβλήθης μισοβασιλεὺς εἶναι, καί τινες ὑβριστικαί σου περὶ τυράννων ἀποφάσεις ἀνεφέροντο πρὸς αὐτόν, ὡς ἐρωτηθεὶς ὑπὸ Μολπαγόρου τοῦ Ἴωνος τί παραδοξότατον εἴης ἑωρακώς, ἀποκρίναιο ‘τύραννον γέροντα,’ καὶ πάλιν ἔν τινι πότῳ, περὶ τῶν θηρίων λόγου γενομένου, φαίης κάκιστον εἶναι τῶν μὲν ἀγρίων θηρίων τὸν τύραννον, τῶν δ´ ἡμέρων τὸν κόλακα· ταῦτα γάρ, εἰ καὶ πάνυ προσποιοῦνται διαφέρειν οἱ βασιλεῖς τῶν τυράννων, οὐκ εὐμενῶς ἀκούουσιν. » « Ἀλλὰ τοῦτο μέν, » εἶπεν ὁ Θαλῆς, « Πιττακοῦ ἐστιν, εἰρημένον ἐν παιδιᾷ ποτε πρὸς Μυρσίλον· ἐγὼ δὲ θαυμάσαιμ´ ἄν, » ἔφη, « οὐ τύραννον ἀλλὰ [[wikt:κυβερνήτης#Grec_ancien|'''κυβερνήτην''']] γέροντα θεασάμενος. πρὸς δὲ τὴν μετάθεσιν τὸ τοῦ νεανίσκου πέπονθα τοῦ βαλόντος μὲν ἐπὶ τὴν κύνα πατάξαντος δὲ τὴν μητρυιὰν καὶ εἰπόντος ‘οὐδ´ οὕτω κακῶς.’ διὸ καὶ Σόλωνα σοφώτατον ἡγησάμην οὐ δεξάμενον τυραννεῖν. καὶ Πιττακὸς οὗτος εἰ μοναρχίᾳ μὴ προσῆλθεν, οὐκ ἂν εἶπεν ὡς ‘χαλεπὸν ἐσθλὸν ἔμμεναι.’ Περίανδρος δ´ ἔοικεν ὥσπερ ἐν νοσήματι πατρῴῳ τῇ τυραννίδι κατειλημμένος οὐ φαύλως ἐξαναφέρειν, χρώμενος ὁμιλίαις ὑγιειναῖς ἄχρι γε νῦν καὶ συνουσίας ἀνδρῶν νοῦν ἐχόντων ἐπαγόμενος, ἃς δὲ '''Θρασύβουλος''' αὐτῷ κολούσεις τῶν ἄκρων οὑμὸς πολίτης ὑφηγεῖται μὴ προσιέμενος. γεωργοῦ γὰρ [[wikt:en:αἶρα#Ancient_Greek|αἴρας]] καὶ [[wikt:ononis|ὀνώνιδας]] ἀντὶ [[wikt:πυρός#Grec_ancien|πυρῶν]] καὶ [[wikt:κριθή#Grec_ancien|κριθῶν]] συγκομίζειν ἐθέλοντος οὐδὲν διαφέρει τύραννος ἀνδραπόδων μᾶλλον ἄρχειν ἢ ἀνδρῶν βουλόμενος· ἓν γὰρ ἀντὶ πολλῶν κακῶν ἀγαθὸν αἱ δυναστεῖαι τὴν τιμὴν ἔχουσι καὶ τὴν δόξαν, ἄνπερ ἀγαθῶν ὡς κρείττονες ἄρχωσι καὶ μεγάλων μείζονες εἶναι δοκῶσι· τὴν δ´ ἀσφάλειαν ἀγαπῶντας ἄνευ τοῦ καλοῦ προβάτων ἔδει πολλῶν καὶ ἵππων καὶ βοῶν ἄρχειν, μὴ ἀνθρώπων. ἀλλὰ γὰρ εἰς οὐδὲν προσήκοντας ἐμβέβληκεν ἡμᾶς, » ἔφη, « ὁ ξένος οὑτοσὶ λόγους, ἀμελήσας λέγειν τε καὶ ζητεῖν ἃ ἁρμόττει ἐπὶ δεῖπνον βαδίζουσιν. ἦ γὰρ οὐκ οἴει, καθάπερ ἑστιάσοντος ἔστι τις παρασκευή, καὶ δειπνήσοντος εἶναι; Συβαρῖται μὲν γὰρ ὡς ἔοικε πρὸ ἐνιαυτοῦ τὰς κλήσεις ποιοῦνται τῶν γυναικῶν, ὅπως ἐκγένοιτο κατὰ σχολὴν παρασκευασαμέναις ἐσθῆτι καὶ χρυσῷ φοιτᾶν ἐπὶ τὸ δεῖπνον· ἐγὼ δὲ πλείονος οἶμαι χρόνου δεῖσθαι τὴν ἀληθινὴν τοῦ δειπνήσοντος ὀρθῶς παρασκευήν, ὅσῳ χαλεπώτερόν ἐστιν ἤθει τὸν πρέποντα κόσμον ἢ σώματι τὸν περιττὸν ἐξευρεῖν καὶ ἄχρηστον. οὐ γὰρ ὡς ἀγγεῖον ἥκει κομίζων ἑαυτὸν ἐμπλῆσαι πρὸς τὸ δεῖπνον ὁ νοῦν ἔχων, ἀλλὰ καὶ σπουδάσαι τι καὶ παῖξαι καὶ ἀκοῦσαι καὶ εἰπεῖν ὡς ὁ καιρὸς παρακαλεῖ τοὺς συνόντας, εἰ μέλλουσι μετ´ ἀλλήλων ἡδέως ἔσεσθαι. καὶ γὰρ καὶ ὄψον πονηρὸν ἔστι παρώσασθαι, κἂν οἶνος ᾖ φαῦλος, ἐπὶ τὰς νύμφας καταφυγεῖν· σύνδειπνος δὲ κεφαλαλγὴς καὶ βαρὺς καὶ ἀνάγωγος παντὸς μὲν οἴνου καὶ ὄψου πάσης δὲ μουσουργοῦ χάριν ἀπόλλυσι καὶ λυμαίνεται, καὶ οὐδ´ ἀπεμέσαι τὴν τοιαύτην ἀηδίαν ἕτοιμόν ἐστιν, ἀλλ´ ἐνίοις εἰς ἅπαντα τὸν βίον ἐμμένει τὸ πρὸς ἀλλήλους δυσάρεστον, ὥσπερ ἑωλοκρασία τις ὕβρεως ἢ ὀργῆς ἐν οἴνῳ γενομένης. ὅθεν ἄριστα Χίλων, καλούμενος ἐχθές, οὐ πρότερον ὡμολόγησεν ἢ πυθέσθαι τῶν κεκλημένων ἕκαστον. ἔφη γὰρ ὅτι σύμπλουν ἀγνώμονα δεῖ φέρειν καὶ σύσκηνον οἷς πλεῖν ἀνάγκη καὶ στρατεύεσθαι· τὸ δὲ συμπόταις ἑαυτὸν ὡς ἔτυχε καταμιγνύειν οὐ νοῦν ἔχοντος ἀνδρός ἐστιν. ὁ δ´ Αἰγύπτιος σκελετός, ὃν ἐπιεικῶς εἰσφέροντες εἰς τὰ συμπόσια προτίθενται καὶ παρακαλοῦσι μεμνῆσθαι τάχα δὴ τοιούτους ἐσομένους, καίπερ ἄχαρις καὶ ἄωρος ἐπίκωμος ἥκων, ὅμως ἔχει τινὰ καιρόν, καὶ εἰ μὴ πρὸς τὸ πίνειν καὶ ἡδυπαθεῖν ἀλλὰ πρὸς φιλίαν καὶ ἀγάπησιν ἀλλήλων προτρέπεται, καὶ παρακαλεῖ τὸν βίον μὴ τῷ χρόνῳ βραχὺν ὄντα πράγμασι κακοῖς μακρὸν ποιεῖν. »
</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §2'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§2. La réception avait été préparée par '''Périandre''', non pas dans la ville même, mais dans son [[w:Cénacle|''cénacle'']] du port de [[w:Léchaion|''Léchée'']], près du temple de '''Vénus''' en l’honneur de laquelle il y avait même un sacrifice. Car depuis l’incestueux amour à la suite duquel sa mère avait volontairement abandonné la vie, '''Périandre''' n’avait pas sacrifié à '''Vénus''' ; et c’était alors la première fois que, d’après certains songes de '''Mélissa''' il s’était décidé à honorer la déesse et à lui rendre des hommages. Pour chacun des invités on avait amené un attelage approprié convenablement. Nous étions en été, et tout le long de la route, en raison du grand nombre de chariots et de piétons, ce n’était jusqu’à la mer que poussière et que bruit. Pourtant '''Thalès''', ayant vu l’attelage à notre porte, se mit à sourire et le renvoya. Nous partîmes donc à pied en faisant un détour, et à travers champs nous cheminâmes à loisir. Un troisième compagnon s’était joint à nous, '''Niloxène''' de ''Naucratie'', homme plein de mérite, que '''Thalès''' et '''Solon''' avaient autrefois beaucoup connu en ''Égypte''. Il se trouvait envoyé de nouveau vers '''Bias''' ; mais pour quelle mission ? Il n’en savait rien lui-même, hormis qu’il se soupçonnait porteur d’une seconde question à résoudre, contenue dans un pli cacheté; et il lui avait été dit, au cas où '''Bias''' renoncerait, de la présenter aux plus sages d’entre les Grecs. « C’est », dit '''Niloxène''', « une chance heureuse que de vous trouver ici tous, et j’apporte, comme vous voyez, cette lettre pour le banquet. » En même temps, il nous la faisait voir. '''Thalès''' se mit à rire : « Si c’est une question épineuse », dit-il, « qu’on aille encore à ''Priène'' : '''Bias''' la résoudra comme il a résolu la première. » — « Quelle était donc cette première question ? » lui demandai-je. — « Le roi d’Égypte », dit '''Thalès''', « avait envoyé à '''Bias''' une victime, en lui faisant dire d’en couper ce qu’il y avait de plus mauvais et de meilleur, et de le lui renvoyer. Notre sage, avec un discernement merveilleux, en ôta la langue et la fit porter au Roi. Voilà ce qui lui a valu une estime et une admiration si déclarée ». — « Cette raison n’est pas la seule », ajouta '''Niloxène''' ; « c’est encore, que '''Bias''' ne fuit pas, comme vous autres, l’amitié des rois eux-mêmes. Ainsi, vous, '''Thalès''', le roi d’Égypte vous admire beaucoup, et, entre autres choses, il a été, au-delà de ce qu’on peut dire, ravi de la manière dont vous avez mesuré la pyramide sans le moindre embarras et sans avoir eu besoin d’aucun instrument. Après avoir dressé votre bâton à l’extrémité de l’ombre que projetait la pyramide, vous construisîtes deux triangles par la tangence d’un rayon, et vous démontrâtes qu’il y avait la même proportion entre la hauteur du bâton et la hauteur de la pyramide qu’entre la longueur des deux ombres. Mais, comme j’ai dit, on vous accuse de détester les rois ; quelques boutades injurieuses prononcées par vous contre des ''tyrans'' ont été rapportées à [[w:Ahmôsis_II|'''Amasis''']]. Par exemple, l’Ionien '''Molpagore''' vous ayant demandé ce que vous aviez jamais vu de plus extraordinaire, vous lui auriez répondu : « C’est un tyran parvenu à la vieillesse. » Une autre fois, dans un festin, la conversation étant venue à tomber sur les bêtes féroces, vous auriez dit : « La plus méchante bête parmi les animaux sauvages, c’est le tyran, et parmi les animaux apprivoisés le flatteur. » De tels propos ne sont pas de ceux que les rois entendent avec plaisir, lors même qu’ils affectent de n’avoir rien de commun avec les tyrans. » Pour cette dernière réponse, dit '''Thalès''', elle est de '''Pittacus''' : il l’avait adressée un jour en plaisantant à '''Myrsile'''. Quant au premier propos, ce n’était pas « un tyran » que j’avais dit, mais « un [[wikt:κυβερνήτης#Grec_ancien|''pilote'']] », qui soit parvenu à la vieillesse. Toutefois, puisqu’on a changé la destination du mot, je fais comme le jeune homme qui, ayant jeté une pierre à un chien, atteignit sa belle-mère et s’écria : Même ainsi, ce n’est pas mal. » C’est pourquoi je regardai '''Solon''' comme éminemment sage lorsqu’il n’accepta pas la tyrannie ; et '''Pittacus''', s’il n’eût approché de la monarchie, n’aurait pas eu à dire : « Il est difficile d’être homme de bien. » Quant à '''Périandre''', il semble qu’ayant été saisi par le souverain pouvoir comme par une maladie de famille, il ne s’en tire pas trop mal. Il use, au moins jusqu’à présent, de sociétés salutaires. Il réunit, pour entretenir commerce avec eux, ses hommes remplis de sens ; et le conseil que lui a donné mon compatriote [[w:Thrasybule_de_Milet|'''Thrasybule''']] [[#Thrasybule|<span id="Thrasybule_back"><sup>'''I'''</sup></span>]], de décapiter l’aristocratie, il ne l’a pas accepté. Entre un laboureur qui aimerait mieux voir dans son champ de l’[[w:Ivraie|''ivraie'']] ou de l’[[w:Orobanche|''orobanche'']] que de l’orge ou du blé, et un tyran qui veut régner sur des esclaves plutôt que sur des hommes de coeur, je ne vois aucune différence. Un seul bien compense les maux nombreux attachés au pouvoir des tyrans : c’est la gloire et l’honneur qui leur sont réservés lorsque, commandant à des hommes vertueux, ils sont plus vertueux eux-mêmes, et qu’au milieu de grands ils se montrent plus grands. Ceux qui préfèrent leur sûreté en renonçant à ce beau rôle, étaient faits pour réunir sous leur main beaucoup de moutons, de chevaux et de boeufs, mais non des hommes. » « Du reste », continua '''Thalès''', « ce sont propos sans portée aucune que ceux où nous a jetés cet étranger, et nous avons omis de dire et de chercher les choses qui conviennent bien à des gens partis pour un banquet. Ne croyez-vous pas, '''Nicarque''', qu’il y ait des préparatifs à faire quand on vient prendre place à un festin, comme il y en a pour celui qui doit le donner ? Les [[w:Sybaris|''Sybarites'']] [[#Sybaris|<span id="Sybaris_back"><sup>'''II'''</sup></span>]], à ce qu’il paraît, s’y prennent un an d’avance pour adresser leurs invitations aux femmes, afin qu’elles puissent à loisir préparer leur toilette et leurs bijoux en or avant de se rendre au festin; et, selon moi, il faut plus de temps encore à un convive pour les préparatifs vraiment nécessaires, parce qu’il est plus difficile de trouver un ajustement convenable pour son moral que la vaine et inutile parure dont on s’inquiète pour son corps. Un homme sensé ne se transporte pas à un festin comme un bocal qu’il s’agit d’y remplir. Il songe à trouver là une occasion de passer tour à tour du sérieux au badinage, d’entendre et de tenir lui-même ces propos auxquels la circonstance invite les convives s’ils veulent se rendre la réunion agréable les uns aux autres. En effet on est libre de repousser un mauvais ragoût, et si le vin ne vaut rien on peut « recourir aux [[w:Naïades|''Naïades'']] »; mais un convive qui vous donne mal à la tête, qui est lourd, qui ne sait pas se conduire, vous fait perdre et vous gâte le plaisir de tout vin, de toute bonne chère, de toute musique. On n’est même pas le maître de se débarrasser aussi complétement qu’on le voudrait d’un tel désagrément. Quelques-uns en gardent tant qu’ils vivent du mécontentement les uns contre les autres : il leur semble qu’il leur reste comme un arrière-goût de viandes mal digérées, parce qu’ils conservent le souvenir d’injures ou de colères échangées dans le vin. C’est pour cela que '''Chilon''', invité hier, n’a pas voulu promettre avant d’avoir su le nom de chacun des convives : « Car on est bien obligé, a-t-il dit, de supporter un désagréable compagnon de traversée, de tente, quand il faut être sur terre ou à l’armée ; mais se mêler indifféremment à table avec les premiers venus, n’est pas le propre d’un homme sensé. » Le squelette des ''Égyptiens'', qu’ils ont la sage coutume de produire et de placer dans la salle du festin afin d’engager à se souvenir que l’on sera bientôt comme lui, survient là comme un convive assez désagréable et intempestif, mais enfin la présence s’en explique. Si cette vue n’excite pas à boire et à se réjouir, elle engage du moins à s’aimer, à se chérir les uns les autres, et elle exhorte à ne pas allonger par des tracas pénibles une existence dont la durée est si courte.
</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §2'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
{{Boîte déroulante début|titre=NdA trad. par Victor Bétolaud de 1870|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Thrasybule_back|<span id="Thrasybule"><sup>I</sup></span>]] Du nom propre grec ancien Θρᾰσῠ́βουλος / Thrăsŭ́boulos [[wikt:en:Θρασύβουλος#Ancient_Greek|(en)]] ;<br /><p style="margin: 0 2em; text-indent: 15px">➥ de l’adjectif [[wikt:θρασύς#Grec_ancien|θρᾰσύς / thrăsús]], « confiant, audacieux » ;<br /><p style="margin: 0 2em; text-indent: 15px">➥ + du nom commun [[wikt:βουλή#Grec_ancien|βουλή / boulế]], « Volonté. Décision, conseil. Conseil, sénat athénien. »; du verbe [[wikt:βούλομαι#Grec_ancien|βούλομαι / boúlomai]], « Vouloir, désirer, souhaiter. Vouloir bien, consentir à. » ;<br /><p style="margin: 0 2em; text-indent: 15px">➥ + -ος (-os).<br /><br /><p style="margin: 0 2em; text-indent: 15px">[[#Sybaris_back|<span id="Sybaris"><sup>II</sup></span>]] Du nom propre grec ancien Σῠ́βᾰρῐς / Sŭ́bărĭs [[wikt:en:Σύβαρις#Ancient_Greek|(en)]] ;<br /><p style="margin: 0 2em; text-indent: 15px">[[w:Colonisation grecque|Colonie grecque]] du sud de l’Italie (en [[w:Calabre|Calabre]] actuelle), fondée au [[w:VIIIe_siècle_av._J.-C.|VIII<sup>ème</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]] dans le cadre du mouvement d’établissement et d’[[w:Colonisation_grecque|''essaimage'']] des Grecs vers l’Occident, particulièrement en [[w:Grande-Grèce|''Grande-Grèce'']]. Réputée dès l’Antiquité pour sa richesse devenue proverbiale, ainsi que pour son emprise sur les peuples voisins et différentes cités grecques de son voisinage, elle est détruite à l’issue d’une [[w:Guerre entre Sybaris et Crotone|guerre]] qui l’oppose à [[w:Crotone|''Crotone'']] à la fin du [[w:VIe_siècle_av._J.-C.|VI<sup>ème</sup> siècle {{Info|AEC|Avant l’Ère Commune}}]], et enfouie sous les eaux du fleuve ''Crathis'' (aujourd’hui [[Crati]]), avant de voir son site réoccupé, soixante ans plus tard, par la colonie [[w:Panhellénisme|''panhellénique'']] de [[w:Thourioï|''Thourioï'']].'''<br/><br/></div>
{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">'''Périandre''' avait fait préparer le banquet, non à la ville même, mais au ''port de Léchée'' [[#Léchée_NdT_DR|<span id="Léchée_NdT_DR_back"><sup>1</sup></span>]], dans une salle voisine du ''temple de Vénus'', à qui l’on devait offrir un sacrifice. Depuis que sa mère, victime d’un malheureux amour [[#Cratée_NdT_DR|<span id="Cratée_NdT_DR_back"><sup>2</sup></span>]], s’était donné la mort, il n’avait pas encore sacrifié à cette déesse, et c’était la première fois qu’il y pensait, d’après un songe de '''Mélisse''' [[#Mélisse_NdT_DR|<span id="Mélisse_NdT_DR_back"><sup>3</sup></span>]]. Nous étions dans les plus grandes chaleurs de l’été. Le grand nombre des voitures et des gens de pied qui fréquentaient le chemin qui conduit à la mer, l’avaient couvert de poussière et le rendaient fort incommode pour les voyageurs. On avait amené, pour chaque convive, un char commode et proprement orné. '''Thalès''', en voyant le sien à ma porte, se mit à sourire et le refusa. Nous primes donc, à travers les champs, un sentier détourné, et nous allâmes, en nous promenant, suivis de '''Niloxène''' de ''Naucrate'' [[#Niloxène_NdT_DR|<span id="Niloxène_NdT_DR_back"><sup>4</sup></span>]], homme du plus grand mérite, que '''Thalès''' et '''Solon''' avaient autrefois beaucoup connu en ''Égypte''. Il était envoyé, pour la seconde fois, vers '''Bias''', sans savoir lui-même quel était l’objet de sa mission. Il se doutait seulement que la lettre dont '''Amasis''' l’avait chargé contenait une seconde question à résoudre. Il avait ordre, en cas que '''Bias''' refusât d’y répondre, de la proposer aux plus sages d’entre les ''Grecs''. Dès qu’il m’eut aperçu, il me dit en me montrant sa lettre : « J’ai du bonheur aujourd’hui. Cette lettre vous trouve tous réunis. Je la porte au banquet, comme vous voyez.
- Si c’est une question épineuse, dit '''Thalès''' en souriant, retournez à ''Priene'' [[#Priene_NdT_DR|<span id="Priene_NdT_DR_back"><sup>5</sup></span>]], '''Bias''' la résoudra, comme il a résolu la première.
- Quelle était cette première question, demandai-je à '''Thalès''' ?
- Le roi d’Égypte, me répondit-il, avait envoyé une victime à '''Bias''', en lui faisant dire d’en couper ce qu’il y avait de meilleur et de plus mauvais, et de le lui renvoyer. Notre sage, fort habilement en ôta la langue, qu’il lui fit porter. Voilà ce qui lui a mérité l’estime et l’admiration de ce prince.
- Ajoutez encore à cette première raison, dit '''Niloxène''', que '''Bias''' ne dédaigne pas, comme vous, l’amitié des rois ; car '''Amasis''' n’a pas moins d’estime pour vous ; il admire surtout la manière dont vous mesurâtes, avec la plus grande facilité et sans aucun instrument mathématique, la hauteur de la pyramide. En dressant votre bâton à l’extrémité de l’ombre qu’elle faisait sur la terre, le rayon solaire qui touchait le sommet de la pyramide et l’extrémité du bâton forma deux triangles ; et vous démontrâtes qu’il y avait la même proportion entre la hauteur du bâton et celle de la pyramide qu’entre la longueur des ombres projetées par l’une et par l’autre. Mais, comme je viens de le dire, on vous accuse, auprès de lui, d’être l’ennemi des rois, et on lui a rapporté plusieurs propos injurieux que vous avez tenus contre les tyrans [[#tyrans_NdT_DR|<span id="tyrans_NdT_DR_back"><sup>6</sup></span>]] ; entre autres que l’''Ionien'' '''Molpagore''' [[#Molpagore_NdT_DR|<span id="Molpagore_NdT_DR_back"><sup>7</sup></span>]] vous ayant demandé ce qui vous paraîtrait plus extraordinaire dans la vie, vous lui répondîtes : de voir vieillir un tyran. Une autre fois, comme on vint à parler, dans un repas, du naturel des animaux, vous dîtes que le plus méchant des animaux sauvages était le tyran, et des animaux domestiques, le flatteur. Les rois, quoiqu’ils affectent de ne rien avoir de commun avec les tyrans, n’aiment pas cependant ces sortes de discours. Cette dernière réponse, dit '''Thalès''', est de '''Pittacus''' ; il la fit un jour, en plaisantant, à ''Myrsile'' [[#Myrsile_NdT_DR|<span id="Myrsile_NdT_DR_back"><sup>8</sup></span>]]. Dans la première, je parlais d’un pilote, et non pas d’un tyran. Mais puisqu’on en a fait application au tyran, je dirai comme ce jeune homme qui, jetant une pierre à son chien, en avait atteint sa belle-mère : « Le coup n’est pas perdu. » Aussi jamais '''Solon''' ne montra-t-il plus de sagesse, à mon gré, que lorsqu’il refusa la tyrannie ; et si '''Pittacus''' n’eût pas été contraint de l’accepter, il n’eût point dit qu’il est à charge d’être vertueux [[#Pittacus_NdT_DR|<span id="Pittacus_NdT_DR_back"><sup>9</sup></span>]]. Il est vrai que '''Périandre''', qui a succédé à l’autorité des tyrans, paraît jusqu’ici opposer à ce mal héréditaire un remède puissant, par le soin qu’il a de rechercher les entretiens et les avis salutaires des hommes vertueux , et par l’horreur qu’il a témoignée pour le conseil barbare que notre compatriote '''Thrasybule''' lui donnait de faire mourir les grands. Un tyran qui veut commander à des esclaves, plutôt qu’à des hommes, ressemble à un laboureur qui aimerait mieux voir son champ couvert de passereaux et de sauterelles que d’orge et de froment. Le seul bien qui puisse compenser tant de maux attachés au pouvoir des tyrans, c’est d’avoir, même sur les plus grands et les plus vertueux de leurs sujets, la supériorité de l’honneur et de la vertu. Ceux qui préfèrent la sûreté à la gloire sont faits pour commander à des troupeaux, et non pour gouverner des hommes. « Mais '''Niloxène''' nous a jetés dans une conversation absolument étrangère à notre objet, et nous a fait négliger ce qui devait nous occuper en allant au banquet. Ne pensez-vous pas que les conviés ont, aussi bien que leur hôte, des apprêts à faire. Les ''Sybarites'', dit-on, prient les femmes à souper un an d’avance, afin qu’elles puissent préparer à loisir leurs habits et leurs bijoux [[#Sybarites_NdT_DR|<span id="Sybarites_NdT_DR_back"><sup>10</sup></span>]]. Pour moi, je pense qu’il faut encore plus de temps à un convive pour faire tous les préparatifs convenables, parcequ’il est bien plus difficile d’orner son esprit comme il faut, que de donner à son corps une parure vaine et superflue. Un homme sensé doit aller à un festin, non pour y remplir son estomac, comme un vase, mais pour écouter et tenir à son tour des propos utiles ou amusants, suivant les circonstances. C’est le seul moyen de rendre le repas agréable aux convives. En effet, on peut laisser un mauvais ragoût, et recourir à l’eau quand le vin n’est pas bon ; mais un convive désagréable, importun et fatigant, fait perdre tout le plaisir de la bonne chère et de la musique. On ne peut se délivrer de l’ennui qu’il cause, et souvent même une parole vive ou offensante qu’il se sera permise dans la liberté de la table, fait naître des aversions et des ressentiments qui ne finissent qu’avec la vie. Aussi '''Chilon''', invité hier à ce banquet, ne voulut-il accepter qu’après qu’on lui eut nommé tous les convives. Il disait avec raison, que quand on est sur mer ou dans un camp, il faut nécessairement supporter les compagnons qui nous sont associés, quelque fâcheux qu’ils soient ; mais dans un festin, il n’est pas d’un homme sensé de se mêler indifféremment avec toutes sortes de personnes. Le squelette que les ''Égyptiens'' placent ordinairement à côté d’eux dans leurs repas, en s’exhortant à penser qu’ils seront bientôt dans le même état, est, à la vérité, un compagnon de table assez triste et assez déplacé. Il est néanmoins utile, sinon pour les exciter au plaisir, du moins pour les porter à la bienveillance et à l’amitié réciproque, et pour les avertir de ne pas remplir d’aigreur et de querelles le temps si court de la vie [[#squelette_NdT_DR|<span id="squelette_NdT_DR_back"><sup>11</sup></span>]]. »
</div>
<table cellspacing=15 style="margin: 0 4em; font-size:85%;">
<tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Léchée_NdT_DR_back|<span id="Léchée_NdT_DR"><sup>1</sup></span>]] L’isthme de ''Corinthe'' avait deux ports, l’un sur la côte orientale, appelé ''Cenchrées'' ; et l’autre sur la côte occidentale, nommé ''Léchée''. Pausanias, qui a donné une description si détaillée de la ''Grèce'', parle d’un ''temple de Vénus'', bâti sur le port de ''Cenchrées'', et dont la statue était de marbre ; mais il ne fait pas mention de celui que cite Plutarque, et qu’il place près du port occidental.
'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Cratée_NdT_DR_back|<span id="Cratée_NdT_DR"><sup>2</sup></span>]] La mère de Périandre se nommait Cratée. On peut voir dans Parthenius la manière dont elle conçut et nourrit une passion incestueuse pour son fils, les moyens qu'elle prit pour la satisfaire sans être connue, et comment elle fut découverte. Les remords qu’elle en eut l’obligèrent de se donner la mort.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Mélisse_NdT_DR_back|<span id="Mélisse_NdT_DR"><sup>3</sup></span>]] Mélisse était fille de Proclès, roi d’[[w:Épidaure_(cité_antique)|''Épidaure'']]. On prétend que Périandre en devint éperdument amoureux pour l’avoir vue dans l’habillement ordinaire aux femmes du ''Péloponnèse''. Cette passion toutefois ne l’empêcha pas de partager son cœur entre elle et plusieurs concubines. Elles parvinrent à l’irriter contre elle au point qu’un jour, par un mouvement de jalousie, il la frappa d’un coup de pied, sans songer qu’elle était enceinte, et la fit mourir.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Niloxène_NdT_DR_back|<span id="Niloxène_NdT_DR"><sup>4</sup></span>]] Niloxène signifie hôte du ''Nil'' : ce nom semble indiquer que c’est un personnage supposé.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Priene_NdT_DR_back|<span id="Priene_NdT_DR"><sup>5</sup></span>]] Ville d’''Ionie'', colonie des ''Thébains'' et patrie de Bias.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#tyrans_NdT_DR_back|<span id="tyrans_NdT_DR"><sup>6</sup></span>]] Par le mot [[wikt:τύραννος#Grec_ancien|τύραννος]], que nous ne pouvons rendre en français que par celui de tyran, les ''Grecs'' entendaient, non pas seulement, comme nous, un prince injuste et cruel ; mais, en général, tout homme qui s’était emparé de l’autorité monarchique dans un état libre, sans qu’elle lui fût légitimement acquise.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Molpagore_NdT_DR_back|<span id="Molpagore_NdT_DR"><sup>7</sup></span>]] Ce Molpagore est peut-être le père d’Aristagore, que Darius établit tyran à ''Milet''.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Myrsile_NdT_DR_back|<span id="Myrsile_NdT_DR"><sup>8</sup></span>]] Myrsile n’est guère mieux connu que Molpagore. Strabon le met au nombre de ces ''Lesbiens'' ambitieux, qui, du temps de Pittacus, s’étaient emparés de l’autorité souveraine à ''Lesbos'', et dont le poète [[w:Alcée_de_Mytilène|Alcée]] avait flétri la mémoire.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Pittacus_NdT_DR_back|<span id="Pittacus_NdT_DR"><sup>9</sup></span>]] Pittacus en se voyant forcé, dans sa vieillesse, de reprendre le gouvernement des affaires, prononça cette maxime.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Sybarites_NdT_DR_back|<span id="Sybarites_NdT_DR"><sup>10</sup></span>]] Cet usage des ''Sybarites'' n’avait lieu que dans les festins publics.'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#squelette_NdT_DR_back|<span id="squelette_NdT_DR"><sup>11</sup></span>]] Cet usage, d'’abord particulier aux ''Egyptiens'', avait ensuite passé chez les ''Grecs'', de qui les ''Romains'' l'’empruntèrent.
'''
</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe III.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage de la reconnaissance de la sagesse de '''Cléobuline''' ''« Eumétis »'' par '''Thalès''', de l’humilité de ce dernier et de son [[w:Cynisme|''cynisme'']].</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§3. Ἐν τοιούτοις λόγοις γενόμενοι κατὰ τὴν ὁδὸν ἀφικόμεθα πρὸς τὴν οἰκίαν, καὶ λούσασθαι μὲν ὁ Θαλῆς οὐκ ἠθέλησεν, ἀληλιμμένοι γὰρ ἦμεν· ἐπιὼν δὲ τούς τε δρόμους ἐθεᾶτο καὶ τὰς παλαίστρας καὶ τὸ ἄλσος τὸ παρὰ τὴν θάλατταν ἱκανῶς διακεκοσμημένον, ὑπ´ οὐδενὸς ἐκπληττόμενος τῶν τοιούτων, ἀλλ´ ὅπως μὴ καταφρονεῖν δοκοίη μηδ´ ὑπερορᾶν τοῦ Περιάνδρου τῆς φιλοτιμίας. τῶν δ´ ἄλλων τὸν ἀλειψάμενον ἢ λουσάμενον οἱ θεράποντες εἰσῆγον εἰς τὸν ἀνδρῶνα διὰ τῆς στοᾶς. Ὁ δ´ Ἀνάχαρσις ἐν τῇ στοᾷ καθῆστο, καὶ παιδίσκη προειστήκει τὴν κόμην ταῖς χερσὶ διακρίνουσα. ταύτην ὁ Θαλῆς ἐλευθεριώτατά πως αὐτῷ προσδραμοῦσαν ἐφίλησε καὶ γελάσας « οὕτως, » ἔφη, « ποίει καλὸν τὸν ξένον, ὅπως ἡμερώτατος ὢν μὴ φοβερὸς ᾖ τὴν ὄψιν ἡμῖν μηδ´ ἄγριος. » Ἐμοῦ δ´ ἐρομένου περὶ τῆς παιδὸς ἥτις εἴη, « τὴν σοφήν, » ἔφη, « καὶ περιβόητον ἀγνοεῖς Εὔμητιν; οὕτω γὰρ ταύτην ὁ πατὴρ αὐτός, οἱ δὲ πολλοὶ πατρόθεν ὀνομάζουσι Κλεοβουλίνην. » Καὶ ὁ Νειλόξενος εἶπεν « ἦ που τὴν περὶ τὰ αἰνίγματα δεινότητα καὶ σοφίαν, » ἔφη, « τῆς κόρης ἐπαινεῖς· καὶ γὰρ εἰς Αἴγυπτον ἔνια τῶν προβαλλομένων ὑπ´ αὐτῆς διῖκται. » « Οὐκ ἔγωγ´, » εἶπεν ὁ Θαλῆς· « τούτοις γὰρ ὥσπερ ἀστραγάλοις, ὅταν τύχῃ, παίζουσα χρῆται καὶ διαβάλλεται πρὸς τοὺς ἐντυχόντας. ἀλλὰ καὶ φρόνημα θαυμαστὸν καὶ νοῦς ἔνεστι πολιτικὸς καὶ φιλάνθρωπον ἦθος, καὶ τὸν πατέρα τοῖς πολίταις πραότερον ἄρχοντα παρέχει καὶ δημοτικώτερον. » « Εἶεν, » ὁ Νειλόξενος ἔφη, « καὶ φαίνεται βλέποντι πρὸς τὴν λιτότητα καὶ ἀφέλειαν αὐτῆς· Ἀνάχαρσιν δὲ πόθεν οὕτω τημελεῖ φιλοστόργως; » « Ὅτι, » ἔφη, « σώφρων ἀνήρ ἐστι καὶ πολυμαθής, καὶ τὴν δίαιταν αὐτῇ καὶ τὸν καθαρμόν, ᾧ χρῶνται Σκύθαι περὶ τοὺς κάμνοντας, ἀφθόνως καὶ προθύμως παραδέδωκε. καὶ νῦν οἶμαι περιέπειν αὐτὴν τὸν ἄνδρα καὶ φιλοφρονεῖσθαι, μανθάνουσάν τι καὶ προσδιαλεγομένην. » Ἤδη δὲ πλησίον οὖσιν ἡμῖν τοῦ ἀνδρῶνος ἀπήντησεν Ἀλεξίδημος ὁ Μιλήσιος (ἦν δὲ Θρασυβούλου τοῦ τυράννου νόθος) καὶ ἐξῄει τεταραγμένος καὶ σὺν ὀργῇ τινι πρὸς αὑτὸν οὐδὲν ἡμῖν γε σαφὲς διαλεγόμενος. ὡς δὲ τὸν Θαλῆν εἶδε, μικρὸν ἀνενεγκὼν καὶ καταστάς « οἵαν ὕβριν, » εἶπεν, « εἰς ἡμᾶς Περίανδρος ὕβρικεν, ἐκπλεῦσαι μὲν οὐκ ἐάσας ὡρμημένον ἀλλὰ προσμεῖναι δεηθεὶς τὸ δεῖπνον, ἐλθόντι δὲ νέμων κλισίαν ἄτιμον, Αἰολεῖς δὲ καὶ νησιώτας (καὶ τίνας γὰρ οὐχί;) Θρασυβούλου προτιμῶν· Θρασύβουλον γὰρ ἐν ἐμοὶ τὸν πέμψαντα προπηλακίσαι βουλόμενος καὶ καταβαλεῖν ὡς δὴ περιορῶν δῆλός ἐστιν. » « Εἶτ´, » ἔφη, « σὺ δέδιας μὴ καθάπερ Αἰγύπτιοι τοὺς ἀστέρας ὑψώματα καὶ ταπεινώματα λαμβάνοντας ἐν τοῖς τόποις οὓς διεξίασι γίγνεσθαι βελτίονας ἢ χείρονας ἑαυτῶν λέγουσιν, οὕτως ἡ περὶ σὲ διὰ τὸν τόπον ἀμαύρωσις ἢ ταπείνωσις γένηται; καὶ τοῦ Λάκωνος ἔσῃ φαυλότερος, ὃς ἐν χορῷ τινι κατασταθεὶς εἰς τὴν ἐσχάτην χώραν ὑπὸ τοῦ ἄρχοντος ‘εὖ γ´,’ εἶπεν, ‘ἐξεῦρες, ὡς καὶ αὕτα ἔντιμος γένηται.’ οὐ καταλαβόντας, » ἔφη, « τόπον μετὰ τίνας κατακείμεθα δεῖ ζητεῖν, μᾶλλον δ´ ὅπως εὐάρμοστοι τοῖς συγκατακειμένοις ὦμεν, ἀρχὴν καὶ λαβὴν φιλίας εὐθὺς ἐν αὐτοῖς ζητοῦντες, μᾶλλον δ´ ἔχοντες τὸ μὴ δυσκολαίνειν ἀλλ´ ἐπαινεῖν ὅτι τοιούτοις συγκατεκλίθημεν· ὡς ὅ γε τόπῳ κλισίας δυσχεραίνων δυσχεραίνει τῷ συγκλίτῃ μᾶλλον ἢ τῷ κεκληκότι, καὶ πρὸς ἀμφοτέρους ἀπεχθάνεται. » « Λόγος, » ἔφη, « ταῦτ´ ἄλλως ἐστίν » ὁ Ἀλεξίδημος, « ἔργῳ δὲ καὶ τοὺς σοφοὺς ὑμᾶς ὁρῶ τὸ τιμᾶσθαι διώκοντας, » καὶ ἅμα παραμειψάμενος ἡμᾶς ἀπῆλθε. Καὶ ὁ Θαλῆς πρὸς ἡμᾶς τὴν ἀτοπίαν τοῦ ἀνθρώπου θαυμάζοντας, « ἔμπληκτος, » ἔφη, « καὶ ἀλλόκοτος φύσει, ἐπεὶ καὶ μειράκιον ὢν ἔτι, μύρου σπουδαίου Θρασυβούλῳ κομισθέντος, εἰς ψυκτῆρα κατεράσας μέγαν καὶ προσεγχέας ἄκρατον ἐξέπιεν, ἔχθραν ἀντὶ φιλίας Θρασυβούλῳ διαπεπραγμένος. » Ἐκ τούτου περιελθὼν ὑπηρέτης « κελεύει σε Περίανδρος, » ἔφη, « καὶ Θαλῆν παραλαβόντα τοῦτον ἐπισκέψασθαι τὸ κεκομισμένον ἀρτίως αὐτῷ πότερον ἄλλως γέγονεν ἤ τι σημεῖόν ἐστι καὶ τέρας· αὐτὸς μὲν γὰρ ἔοικε τεταράχθαι σφόδρα, μίασμα καὶ κηλῖδα τῆς θυσίας ἡγούμενος. » ἅμα δ´ ἀπῆγεν ἡμᾶς εἴς τι οἴκημα τῶν περὶ τὸν κῆπον. ἐνταῦθα νεανίσκος ὡς ἐφαίνετο νομευτικός, οὔπω γενειῶν ἄλλως τε τὸ εἶδος οὐκ ἀγεννής, ἀναπτύξας τινὰ διφθέραν ἔδειξεν ἡμῖν βρέφος ὡς ἔφη γεγονὸς ἐξ ἵππου, τὰ μὲν ἄνω μέχρι τοῦ τραχήλου καὶ τῶν χειρῶν ἀνθρωπόμορφον, τὰ λοιπὰ δ´ ἔχον ἵππου, τῇ δὲ φωνῇ καθάπερ τὰ νεογνὰ παιδάρια κλαυθμυριζόμενον. ὁ μὲν οὖν Νειλόξενος, « Ἀλεξίκακε » εἰπών, ἀπεστράφη τὴν ὄψιν, ὁ δὲ Θαλῆς προσέβλεπε τῷ νεανίσκῳ πολὺν χρόνον, εἶτα μειδιάσας (εἰώθει δ´ ἀεὶ παίζειν πρὸς ἐμὲ περὶ τῆς τέχνης) « ἦ που τὸν καθαρμόν, ὦ Διόκλεις, » ἔφη, « κινεῖν διανοῇ καὶ παρέχειν πράγματα τοῖς ἀποτροπαίοις, ὥς τινος δεινοῦ καὶ μεγάλου συμβάντος; » « Τί δ´, » εἶπον, « οὐ μέλλω; στάσεως γάρ, ὦ Θαλῆ, καὶ διαφορᾶς τὸ σημεῖόν ἐστι, καὶ δέδια μὴ μέχρι γάμου καὶ γενεᾶς ἐξίκηται, πρὶν ἢ τὸ πρῶτον ἐξιλάσασθαι μήνιμα, τῆς θεοῦ δεύτερον ὡς ὁρᾷς προφαινούσης. » Πρὸς τοῦτο μηδὲν ἀποκρινάμενος ὁ Θαλῆς ἀλλὰ γελῶν ἀπηλλάττετο. καὶ τοῦ Περιάνδρου πρὸς τὰς θύρας ἀπαντήσαντος ἡμῖν καὶ διαπυθομένου περὶ ὧν εἴδομεν, ἀφεὶς ὁ Θαλῆς με καὶ λαβόμενος τῆς ἐκείνου χειρὸς ἔφη, « ἃ μὲν Διοκλῆς κελεύει δράσεις καθ´ ἡσυχίαν· ἐγὼ δέ σοι παραινῶ νέοις οὕτω μὴ χρῆσθαι νομεῦσιν ἵππων, ἢ διδόναι γυναῖκας αὐτοῖς. » Ἔδοξε μὲν οὖν μοι τῶν λόγων ἀκούσας ὁ Περίανδρος ἡσθῆναι σφόδρα· καὶ γὰρ ἐξεγέλασε καὶ τὸν Θαλῆν περιβαλὼν κατησπάσατο. κἀκεῖνος « οἶμαι δ´, » εἶπεν, « ὦ Διόκλεις, καὶ πέρας ἔσχε τὸ σημεῖον· ὁρᾷς γὰρ ἡλίκον κακὸν γέγονεν ἡμῖν, Ἀλεξιδήμου συνδειπνεῖν μὴ θελήσαντος. » </div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §3'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§3. Ce fut en tenant de tels propos chemin faisant, que nous arrivâmes à la maison. '''Thalès''' ne voulut pas se baigner : « Je me suis frotté d’huile. » dit-il. Il se promena donc de côté et d’autre, regardant les champs de course, les palestres, et le bois sacré, voisin de la mer, que l’on avait bien convenablement disposé. Ce n’était pas qu’il fût frappé par aucun de ces préparatifs, mais il voulait ne pas avoir l’air de mépriser '''Périandre''' et de faire peu de cas de l’empressement avec lequel celui-ci honorait ses hôtes. Pour les autres convives, à mesure qu’ils s’étaient parfumés ou baignés, les serviteurs les introduisaient par la galerie dans la salle du banquet. Or '''Anacharsis''' s’était installé dans cette galerie, et devant lui une jeune fille se tenait, lui séparant les cheveux avec ses mains. Lorsqu’entra '''Thalès''', elle s’élança très librement à sa rencontre, et '''Thalès''', après l’avoir embrassée, lui dit en riant : « Continue à rendre bien beau notre étranger, afin qu’étant devenu la douceur même il ne conserve pas au milieu de nous une mine à faire peur et un aspect sauvage. » Je lui demandai quelle était cette jeune enfant : « Quoi ! » me dit-il, « vous ne connaissez pas la savante et célèbre '''Eumétis''' ! car c’est ainsi que son père la nomme : le plus communément on l’appelle '''Cléobuline''', du nom paternel. » Et '''Niloxène''' : « C’est sans doute à cause de son talent et de son habileté pour les énigmes, que vous faites l’éloge de cette jeune fille : car quelques-unes de celles qu’elle a proposées sont parvenues jusqu’en ''Égypte''. » — « Ce n’est pas à cause de cela », répondit '''Thalès''' : « les énigmes sont pour elle des joujoux dont elle s’amuse à l’occasion pour faire sa partie avec ceux qui se rencontrent. Mais ce qui est admirable en elle c’est sa profondeur d’esprit, son sens politique, l’aménité de son caractère, et le talent qu’elle a de rendre plus douce l’autorité de son père et d’inspirer à celui-ci des sentiments plus humains à l’égard du peuple. » — « Soit », dit '''Niloxène''' ; « et cela se reconnaît à voir sa modestie et sa simplicité. Mais d’où vient qu’elle prend un soin si amoureux de la toilette d’'''Anacharsis''' ? » — Parce que c’est, répondit '''Thalès''', « un sage, un homme des plus instruits, et parce qu’il lui a communiqué, avec de nombreux détails et de grand coeur, l’ensemble des pratiques sanitaires et des purifications que les ''Scythes'' appliquent au traitement des malades. Et dans ce moment je suppose qu’elle l’entoure de soins et d’amitiés parce qu’elle s’instruit de quelque chose en conversant avec lui. » Comme nous étions déjà près de la salle, '''Alexidème''' le ''Milésien'' vint à notre rencontre. C’était un bâtard du tyran '''Thrasybule'''. Il était sorti tout troublé, et avec une sorte de fureur il se parlait à lui-même, mais ses paroles n’avaient rien de clair pour nous. Quand il eut vu '''Thalès''', il se remit un peu ; puis, s’arrêtant tout court : « Quel affront '''Périandre''' vient de nous faire ! Je voulais mettre à la voile : il ne l’a pas permis ; il m’a supplié de rester à son festin, et quand j’arrive, il me donne une des dernières places, faisant passer des [[w:Éoliens|''Éoliens'']], des insulaires (je ne sais qui il ne me préfère pas), les faisant passer, dis je, avant '''Thrasybule''', car c’est '''Thrasybule''' en ma personne, c’est celui par lequel je suis envoyé qu’il a l’intention de traîner dans la boue et de ravaler comme le méprisant : la chose est bien claire. » — « Eh quoi ! » lui dit '''Thalès''', « êtes-vous comme les ''Égyptiens'', qui prétendent que les astres, suivant qu’ils prennent une position élevée ou basse en parcourant leur orbite, ont une condition meilleure ou pire qu’ils ne l’avaient ? Craignez-vous, pareillement, qu’autour de vous, en raison de la place où vous serez, il ne se produise obscurité ou dépression ? Serez-vous moins résigné que certain ''Spartiate'' ? À je ne sais quelle représentation il avait été placé au dernier rang par le maître des cérémonies : « Voilà qui va bien », lui dit-il : « tu as trouvé moyen de rendre honorable ce lieu même. Quand nous avons pris une place nous ne devons pas chercher au-dessous de qui nous sommes installés, mais plutôt comment nous nous mettrons en bon accord avec nos voisins. À leur occasion nous ferons voir tout d’abord, ou plutôt nous l’éprouverons réellement, un désir d’initiative et de prise de possession en matière d’amitié, et nous manifesterons ce désir en nous félicitant, loin d’en montrer du dépit, de ce que l’on nous a placés en une telle compagnie. Mais celui qui se plaint du rang qu’on lui donne à table montre plus de mécontentement contre son commensal que contre son hôte, et il se rend odieux à l’un et à l’autre. » — « Paroles que tout cela, » dit '''Alexidème''', « et paroles sans portée ! Mais je vois que de fait, vous autres sages, vous recherchez aussi les honneurs. » En même temps il s’éloigna de nous et disparut. Une conduite si étrange nous semblait étonnante. « C’est », nous dit '''Thalès''', « un homme écervelé et naturellement bizarre. Vous allez en juger. Il était encore tout jeune ; on avait apporté à '''Thrasybule''' un parfum d’un très haut prix. '''Alexidème''' le versa dans un grand vase à rafraîchir, y mêla du vin pur, et avala le tout, rendant son père odieux au lieu de le faire aimer. » Au même moment parut un serviteur : « Vous êtes invité par '''Périandre''' », me dit-il, « à venir, en vous faisant accompagner de '''Thalès''' que voici, examiner l’objet qu’on lui a récemment apporté, afin que vous disiez si c’est une création toute fortuite, ou bien un présage et une monstruosité; car, pour ce qui est de '''Périandre''', il a l’air grandement troublé, pensant que c’est une souillure et une profanation pour son sacrifice. » En même temps, il nous emmena vers une des salles qui donnaient sur le jardin. Là un jeune homme paraissant appartenir à la classe des bergers, qui n’avait pas encore de barbe et dont la physionomie ne manquait pas de noblesse, déploya une espèce de couverture en cuir, et nous montra un petit enfant né, disait-il, d’une cavale. Par le haut, jusqu’au cou et aux mains, cette créature était de forme humaine ; mais le reste était d’un cheval, et sa voix avait quelque chose des vagissements poussés par les petits enfants qui viennent de naître. « Dieu préservateur ! » s’écria '''Niloxène''', et il détourna les yeux. Mais '''Thalès''' fixa longtemps son regard sur le jeune pâtre; puis s’étant mis à sourire, (car il avait l’habitude de plaisanter toujours avec moi sur ma profession) : « Eh bien, '''Dioclès''', » dit-il, « songez-vous à préparer quelque expiation, et à donner de la besogne aux dieux préservateurs, comme vous trouvant en présence de quelque événement grave et considérable ? » — « Pourquoi non ? » répondis-je : « j’y vois le présage de troubles et de discordes qui s’étendront, j’en ai peur, jusqu’à un mariage et une génération avant que le courroux de la déesse ait été apaisé, puisqu’elle fait, vous le savez, une seconde manifestation ». À ces paroles '''Thalès''' ne répondit rien : il se contenta de rire et de s’en aller. Et comme '''Périandre''' était à la porte, s’avançant pour nous interroger sur ce que nous venions de voir, '''Thalès''' me quitta et le prit par la main : « Ce que '''Dioclès''' prescrira, vous l’exécuterez à loisir », lui dit-il ; « mais moi j’ai un conseil à vous donner : pour faire paître vos juments ne prenez pas de jeunes garçons, ou bien à ceux-ci donnez des femmes. » Ces paroles me semblèrent causer, des qu’il les eut entendues, une vive satisfaction à '''Périandre''', car il éclata de rire et serra très affectueusement '''Thalès''' dans ses bras. '''Thalès''' alors : « '''Dioclès''' », me dit-il, « si je conjecture bien, le prodige reçoit déjà son accomplissement. Car vous voyez quel grand malheur nous est arrivé, '''Alexidème''' n’ayant pas voulu souper avec nous. »</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §3'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">Après avoir ainsi conversé pendant le chemin, nous arrivâmes au lieu destiné pour le banquet. '''Thalès''' ne voulut point entrer dans le bain, parcequ'’il s'’était déja parfumé, mais il se promena dans les dehors, s'’arrêta à voir les luttes et les courses ; il alla voir le bocage voisin de la mer, qu'’on avait décoré avec beaucoup de soin, non qu'’il fût frappé de tout cet appareil, mais pour ne point paraître mépriser '''Périandre''' et dédaigner sa magnificence. Tous les autres convives, à mesure qu'’ils sortaient du bain, étaient introduits par des esclaves dans la salle du banquet. '''Anacharsis''' seul était assis sous le portique, une jeune fille, debout, lui arrangeait les cheveux. Dès qu'’elle vit '''Thalès''', elle accourut très librement au-devant de lui ; ce philosophe l'’embrassa, et lui dit en riant :
« Parez cet hôte du mieux que vous pourrez, afin que le plus doux des hommes n'’ait plus un extérieur sauvage et effrayant. » Je lui demandai quelle était cette jeune personne : « Eh quoi ! me répondit-il, vous ne connaissez pas la sage et fameuse '''Eumétis''' ? C'’est le nom que '''Cléobule''' lui donne, mais les autres l'’appellent '''Cléobuline''', du nom de son père.
- Est-ce, dit '''Niloxène''', à cause de sa subtilité et de
son adresse à composer des énigmes, que vous faites ainsi son éloge ? Quelques unes de celles qu'’on lui attribue ont pénétré jusqu'’en Egypte.
- Non, répliqua '''Thalès''' ; ces énigmes ne sont que des jouets dont elle s'’amuse dans l'’occasion pour éprouver la perspicacité de ceux qu'’elle rencontre. Ce qu'’elle a de vraiment admirable, c'’est sa grande prudence, sa capacité pour les affaires, son humanité, et l'’attention qu'’elle a de rendre le gouvernement de son père doux et bienfaisant.
- Il est vrai, reprit '''Niloxène''', que sa modestie et sa simplicité annoncent combien elle est populaire. Mais d'’où viennent ces soins et cet intérêt pour '''Anacharsis''' ?
- Parceque c'’est un homme sensé et très instruit, répondit '''Thalès''', qu'’il s'’est fait un plaisir de lui apprendre en détail le régime et le traitement que les ''Scythes'' emploient dans les maladies. Je suis sûr que dans ce moment même où elle le pare avec tant de soin, elle s'’entretient utilement avec lui, et cherche à s'’instruire. »
Nous approchions de la salle, lorsque nous rencontrâmes '''Alexidème''' de ''Milet'', fils naturel du tyran '''Thrasybule'''.
Il sortait tout troublé, et d'’un ton de colère murmurait quelques mots que nous ne pûmes entendre. Dès qu'’il vit '''Thalès''', il se remit un peu ; et en lui adressant la parole, il lui dit : « Quel indigne affront '''Périandre''' vient de nous faire ! J'’allais partir, il me retient, il me prie de rester à son festin ; et quand j'’arrive, il m'’y donne la dernière place : il préfère un ''éolien'', un insulaire, enfin je ne sais qui, à '''Thrasybule''', car il est évident que c'’est '''Thrasybule''' que '''Périandre''' méprise, et brave ouvertement dans la personne de son envoyé [[#Thrasybule_NdT_DR|<span id="Thrasybule_NdT_DR_back"><sup>1</sup></span>]].
- Eh quoi ! lui dit '''Thalès''', craignez-vous que la place que vous occuperez à table ne vous rende plus grand ou plus petit, comme les ''Égyptiens'' disent que les astres brillent plus ou moins, suivant que le cercle qu'’ils parcourent est plus ou moins élevé ? Et vous estimeriez-vous moins que ce ''Lacédémonien'', qui, dans une assemblée publique, placé par le magistrat au dernier rang, lui dit :
Vous avez trouvé le moyen de rendre cette place honorable [[#place_honorable_NdT_DR|<span id="place_honorable_NdT_DR_back"><sup>2</sup></span>]] ? Doit-on en effet examiner après qui l'on est placé ? Ne faut-il pas plutôt s'accommoder de ceux qu'on a pour
voisins, afin d'avoir une occasion naturelle de se lier
avec eux, et loin de se fâcher du rang qu'on occupe, té-
moigner sa satisfaction de se trouver auprès d'eux ? Celui
qui se plaint de la place qu'on lui assigne semble plus mécontent de son voisin que de son hôte, et se rend
odieux à l'un et à l'autre .
-Belles paroles que cela, repartit Alexidème. Mais ,
dans le fait, je vois que vous autres sages, vous recher- chezles honneurs aussi bien que nous. » En même temps,
il nous quitte brusquement, et s'en va.
Une conduite si étrange nous étonna tous : « Ce jeune
homme, nous dit Thalès, a montré dès l'enfance un caractère dur et emporté. Unjour qu'on avait fait présent
à Thrasybule d'un parfum de grand prix, il le versa dans
une coupe mêlé avec du vin, et l'avala, payant ainsi d'in-
gratitude la tendresse de son père. >>>
Au même instant, un des gens de Périandre vint me
prier d'aller avec Thalès voir quelque chose d'extraordi-
naire qu'on venait de lui apporter, afin de juger si c'é-
tait un jeu de la nature ou un prodige menaçant ; il nous
dit qu'il en était tout troublé, et qu'il craignait que son
sacrifice n'en fùt souillé. En même temps, il nous con-
duit dans une salle qui donnait sur le jardin. Nous y trou-
vâmes un jeune homme sans barbe, d'une figure intéres-
sante, qui avait l'air d'un berger. Il lève une espèce de
peau, et nous fait voir un enfant qu'il disait être né d'une
cavale, qui avait la tête, le cou et les mains d'un homme,
et dans tout le reste, était fait comme un cheval. Sa voix
ressemblait à celle d'un enfant qui vient de naître : « Dieu
préservateur ! s'écria Niloxène, en détournant la vue. >>>
Mais Thalès, qui a coutume de plaisanter avec moi sur
mon art , après avoir longtemps considéré ce jeune homme,
me dit en souriant : « Ne pensez-vous pas déja, Dioclès,
à faire des expiations ? Et pour détourner un présage si
terrible , n'allez-vous pas donner bien de l'ouvrage aux
dieux préservateurs ?
-Pourquoi non ? lui répondis-je. Ce prodige, Thalès,
est un signe menaçant de troubles et de discorde ; et je
crains bien que l'épouse et les enfants de Périandre n'en
éprouvent les tristes suites, puisque enfin, comme vous voyez, avant que la déesse soit apaisée, elle donne une
nouvelle marque de son courroux. »
A ces mots, Thalès sourit et sortit sans rien répondre.
Il vit , à la porte de la salle, Périandre venir au-devant de
nous, pour savoir notre sentiment. Il me quitta, lui prit
la main, et lui dit : « Dioclès vous parlera ; vous ferez à
loisir ce qu'il vous dira. Pour moi, je pense que vous ne devez pas avoir, pour garder vos juments, des bergers
aussi jeunes, ou que vous devez les marier. »
Cediscours parut faire grand plaisir à Périandre , car il en rit beaucoup, et embrassa affectueusement Thalès.
Celui-ci s'’adressant à moi : « Je crois, '''Dioclès''', me dit-il, que le prodige a déja eu son accomplissement. Vous voyez le malheur qui vient de nous arriver ; '''Alexidème''' a refusé de souper avec nous. »
</div>
<table cellspacing=15 style="margin: 0 4em; font-size:85%;">
<tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#Thrasybule_NdT_DR_back|<span id="Thrasybule_NdT_DR"><sup>1</sup></span>]]Dans les ''Propos de table'', on trouve une aventure pareille, arrivée chez Timon, frère de Plutarque ; mais le personnage n’est pas nommé.
'''
</td>
<tr>
</tr>
<td valign=top style="text-align: justify; text-indent: 15px">'''[[#place_honorable_NdT_DR_back|<span id="place_honorable_NdT_DR"><sup>2</sup></span>]] Plutarque, dans les ''apophthegmes des Lacédémoniens'', nomme ce ''Spartiate'' Dæmonidas, et attribue un mot semblable au fameux Agésilas.
'''
</td>
</tr>
</table>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe IV.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage du caractère désinvolte de '''Thalès'''.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§4. Ἐπεὶ δ´ εἰσήλθομεν, ἤδη μεῖζον ὁ Θαλῆς φθεγξάμενος « ποῦ δ´ » εἶπεν « ὁ ἀνὴρ κατακλινάμενος ἐδυσχέρανεν; » ἀποδειχθείσης δὲ τῆς χώρας περιελθὼν ἐκεῖ κατέκλινεν ἑαυτὸν καὶ ἡμᾶς « ἀλλὰ κἂν ἐπριάμην » εἰπών « Ἀρδάλῳ κοινωνεῖν μιᾶς τραπέζης. » ἦν δὲ Τροιζήνιος ὁ Ἄρδαλος, αὐλῳδὸς καὶ ἱερεὺς τῶν Ἀρδαλείων Μουσῶν, ἃς ὁ παλαιὸς Ἄρδαλος ἱδρύσατο ὁ Τροιζήνιος.<br /><p style="text-align: centre">[...]<br /><p style="text-align: justify; text-indent: 15px">καὶ ὁ Θαλῆς ἐμὲ προσαγορεύσας ἐπάνω τοῦ Βίαντος κατακείμενον « τί οὐκ ἔφρασας, » εἶπεν, « ὦ Διόκλεις, Βίαντι τὸν Ναυκρατίτην ξένον ἥκοντα μετὰ προβλημάτων βασιλικῶν αὖθις ἐπ´ αὐτόν, ὅπως νήφων καὶ προσέχων ἑαυτῷ τὸν λόγον δέχηται; » Καὶ ὁ Βίας « ἀλλ´ οὗτος μέν, » ἔφη, « πάλαι δεδίττεται ταῦτα παρακελευόμενος, ἐγὼ δὲ τὸν Διόνυσον οἶδα τά τ´ ἄλλα δεινὸν ὄντα καὶ Λύσιον ἀπὸ σοφίας προσαγορευόμενον, ὥστ´ οὐ δέδια τοῦ θεοῦ μεστὸς γενόμενος μὴ ἀθαρσέστερον ἀγωνίσωμαι. » Τοιαῦτα μὲν ἐκεῖνοι πρὸς ἀλλήλους ἅμα δειπνοῦντες ἔπαιζον·</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §4'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§4. Après que nous fûmes entrés, '''Thalès''' ayant déjà élevé plus haut la voix: « Où donc », dit-il, « l’avait-on placé, cet homme qui s’en est formalisé ? » Quand on lui eut montré l’endroit il fit le tour de la salle, et ce fut là-même qu’il se plaça et nous installa. « En vérité », ajouta-t-il, « j’aurais payé pour partager la même table qu’'''Ardalus'''. » Cet '''Ardalus''' était un joueur de flûte [[w:Trézène_(ville)|''Trézénien'']] [[#Trézène|<span id="Trézène_back"><sup>'''I'''</sup></span>]], prêtre des ''muses Ardalides'' auxquelles l’antique [[w:Ardalos|'''Ardalus''']] de ''Trézène'' avait dressé des statues.<br /><p style="text-align: centre">[...]<br /><p style="text-indent: 15px">Moi, j’étais au-dessus de '''Bias''', et '''Thalès''' m’ayant interpellé : « '''Dioclès''' », me dit-il, « pourquoi n’avez-vous pas dit à '''Bias''' que l’étranger de ''Naucratie'' est venu une seconde fois le trouver avec des questions de la part de son prince, afin que ce soit à jeun qu’il reçoive ces communications et qu’il y applique son esprit ? » Et '''Bias''' : « Il y a longtemps », dit-il, « que '''Dioclès''' me menace de m’y contraindre ; mais je sais que '''Bacchus''', entre autres attributions merveilleuses, possède une sagacité qui l’a fait surnommer le dieu qui délie, de sorte que je ne crains pas, étant rempli de la divinité, que la confiance m’abandonne au moment de la lutte. » C’est ainsi que, pendant le repas, ils échangeaient entre eux des plaisanteries.</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §4'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
{{Boîte déroulante début|titre=NdA trad. par Victor Bétolaud de 1870|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Trézène_back|<span id="Trézène"><sup>I</sup></span>]] Du nom propre grec ancien Τροιζήν / Troizḗn [[wikt:en:Τροιζήν#Ancient_Greek|(en)]] ;<br /><p style="margin: 0 2em; text-indent: 15px">[[w:polis|Cité grecque]] du [[w:Péloponnèse|''Péloponnèse'']], sur la côte nord de l’[[w:Argolide|Argolide]].'''<br/><br/></div>
{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;"></div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe VII.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Réflexions de '''Thalès''' sur le défi de sagacité posé par le roi des ''Éthiopiens'' au roi d’''Égypte'', [[w:Ahmôsis_II|'''Amasis''']], consistant à boire la mer. Ce dernier fait appel à '''Bias''' pour la résoudre, et celui-ci souhaite l’examiner en commun avec les sages. '''Chilon''' explique qu’il ne s’agit pas de faire disparaître tant d’eau salée, mais de rendre la domination d’'''Amasis''' potable et douce à ses sujets (§6).</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§7. [...] Ἐπὶ τούτῳ δ´ ὁ '''Θαλῆς''' ἔφησεν, εὐδαιμονίαν ἄρχοντος νομίζειν, εἰ τελευτήσειε γηράσας κατὰ φύσιν.</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §7'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§7. [...] Après lui '''Thalès''' prit la parole : « J’estime que le bonheur pour un souverain, c’est s’il meurt de vieillesse et naturellement. ».</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §7'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;"></div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe IX.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Réflexions de '''Thalès''' sur le défi de sagacité posé par le roi d’''Égypte'', [[w:Ahmôsis_II|'''Amasis''']], au roi des ''Éthiopiens'', consistant en une série de questions : « Qu’y a-t-il de plus ancien ? Le temps. — De plus grand ? Le monde. — De plus habile ? La vérité. — De plus beau ? La lumière. — De plus commun ? La mort. — De plus utile ? Dieu. — De plus nuisible ? Le mauvais Génie. — De plus puissant ? La Fortune. — De plus facile ? Le plaisir. ». '''Amasis''' fait encore appel à '''Bias''' pour analyser les réponses du roi des ''Éthiopiens'', qui les examinent également en commun avec les sages.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§9. Τούτων πάλιν ἀναγνωσθέντων, ὦ Νίκαρχε, γενομένης σιωπῆς Θαλῆς ἠρώτησε τὸν Νειλόξενον εἰ προσήκατο τὰς λύσεις ὁ Ἄμασις. ἐκείνου δ´ εἰπόντος ὅτι τὰς μὲν ἀπεδέξατο ταῖς δ´ ἐδυσκόλαινε, « καὶ μὴν οὐδέν, » εἶπεν ὁ Θαλῆς, « ἀνεπίληπτόν ἐστιν, ἀλλ´ ἔχει πάντα διαμαρτίας μεγάλας καὶ ἀγνοίας. οἷον εὐθὺς ὁ χρόνος πῶς ἂν εἴη πρεσβύτατον, εἰ τὸ μὲν αὐτοῦ γεγονὸς τὸ δ´ ἐνεστώς ἐστι τὸ δὲ μέλλον; ὁ γὰρ μεθ´ ἡμᾶς ἐσόμενος χρόνος καὶ πραγμάτων τῶν νῦν καὶ ἀνθρώπων νεώτερος ἂν φανείη. τὸ δὲ τὴν ἀλήθειαν ἡγεῖσθαι σοφίαν οὐδὲν ἐμοὶ δοκεῖ διαφέρειν τοῦ τὸ φῶς ὀφθαλμὸν ἀποφαίνειν. εἰ δὲ τὸ φῶς καλόν, ὥσπερ ἐστὶν, ἐνόμιζε, πῶς τὸν ἥλιον αὐτὸν παρεῖδε; τῶν δ´ ἄλλων ἡ μὲν περὶ θεῶν καὶ δαιμόνων ἀπόκρισις θράσος ἔχει καὶ κίνδυνον, ἀλογίαν δὲ καὶ πολλὴν ἡ περὶ τῆς τύχης· οὐ γὰρ ἂν μετέπιπτε ῥᾳδίως οὕτως, ἰσχυρότατον οὖσα τῶν ὄντων καὶ ῥωμαλεώτατον. οὐ μὴν οὐδ´ ὁ θάνατος κοινότατόν ἐστιν· οὐ γάρ ἐστι πρὸς τοὺς ζῶντας. ἀλλ´ ἵνα μὴ δοκῶμεν εὐθύνειν τὰς τῶν ἑτέρων ἀποφάσεις, ἰδίας ταῖς ἐκείνου παραβάλωμεν· ἐμαυτὸν δὲ παρέχω πρῶτον, εἰ βούλεται Νειλόξενος, ἐρωτᾶν καθ´ ἕκαστον. ὡς οὖν ἐγένοντο τότε, κἀγὼ νῦν διηγήσομαι τὰς ἐρωτήσεις καὶ τὰς ἀποκρίσεις· ‘Τί πρεσβύτατον;’ [[wikt:en:θεός#Ancient_Greek|‘θεός,’]] » ἔφη Θαλῆς· « ‘ἀγέν νητον γάρ ἐστι.’ ‘Τί μέγιστον;’ ‘τόπος· τἄλλα μὲν γὰρ ὁ κόσμος, τὸν δὲ κόσμον οὗτος περιέχει.’ ‘Τί κάλλιστον;’ ‘κόσμος· πᾶν γὰρ τὸ κατὰ τάξιν τούτου μέρος ἐστί.’ ‘Τί σοφώτατον;’ ‘χρόνος· τὰ μὲν γὰρ εὕρηκεν οὗτος ἤδη, τὰ δ´ εὑρήσει.’ ‘Τί κοινότατον;’ ‘ἐλπίς· καὶ γὰρ οἷς ἄλλο μηδέν, αὕτη πάρεστι.’ ‘Τί ὠφελιμώτατον;’ ‘ἀρετή· καὶ γὰρ τἄλλα τῷ χρῆσθαι καλῶς ὠφέλιμα ποιεῖ.’ ‘Τί βλαβερώτατον;’ ‘κακία· καὶ γὰρ τὰ πλεῖστα βλάπτει παραγενομένη.’ ‘Τί ἰσχυρότατον;’ ‘ἀνάγκη· μόνον γὰρ ἀνίκητον.’ ‘Τί ῥᾷστον;’ ‘τὸ κατὰ φύσιν, ἐπεὶ πρὸς ἡδονάς γε πολλάκις ἀπαγορεύουσιν.’ » </div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §9'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§9. Cette lecture ainsi reproduite, mon cher '''Nicarque''', il se fit un moment de silence. Après quoi '''Thalès''' demanda à '''Niloxène''' si '''Amasis''' avait accepté de telles solutions. Il répondit que ce monarque avait accepté les unes et qu’il avait été mécontent des autres. « C’est qu’en effet », dit '''Thalès''', « il n’en est aucune qui soit irréprochable, et toutes sont grandement entachées d’erreur et d’ignorance. Ainsi, d’abord, comment le temps pourrait-il être ce qu’il y a de plus ancien, puisque, une partie étant écoulée, je le veux bien, une autre est le présent, une autre est l’avenir ? Le temps qui doit venir après nous est évidemment plus jeune que les hommes d’aujourd’hui, que les événements actuels. Croire que ce qu’il y a de plus habile, ce soit la vérité, c’est, à mon avis, ne pas émettre une autre opinion que celle-ci : l’oeil et la lumière sont tout un. Si du reste l’''Éthiopien'' a cru, ce qui est réel, la lumière plus belle que tout, pourquoi a-t-il négligé de nommer le soleil lui-même ? Des autres réponses, celle qui concerne la Divinité et le Génie est aussi téméraire que dangereuse ; et ce qu’il dit de la Fortune est tout à fait déraisonnable : car elle ne changerait pas avec tant de facilité, si elle était ce qu’il y a de plus puissant et de plus fort au monde. De même, la mort n’est pas ce qu’il y a de plus commun, puisqu’elle n’est pas commune aux vivants. Mais pour que nous ne semblions pas nous borner à redresser les réponses des autres, il faut y opposer nos propres solutions. Je m’y offre le premier, si '''Niloxène''' veut reprendre chaque question ». Telles que furent faites alors et les demandes et les réponses, je vais vous les reproduire aujourd’hui : Qu’y a-t-il de plus ancien ? C’est dieu, répondit '''Thalès''', attendu qu’il est incréé. — De plus grand ? L’espace : car si le monde contient le reste, à son tour il est contenu dans l’espace. — De plus beau ? Le monde : car tout ce qui est bien ordonné en fait partie. ― De plus habile ? Le temps : car c’est lui qui a découvert et qui découvrira tout. — De plus commun ? L’espérance : car ceux même qui n’ont rien autre chose la possèdent. — De plus utile ? La vertu : car elle rend toutes les autres choses utiles par le bon usage qu’elle en fait. — De plus nuisible ? Le vice : car il corrompt tout par sa présence. — De plus puissant ? La nécessité : car elle est seule invincible. De plus facile ? Ce qui est selon la nature : car, pour ce qui est du plaisir, il amène souvent la lassitude.</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §9'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;"></div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe XI.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Réflexion de '''Thalès''' sur les gouvernements où la loi est égale pour tous.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§11. Ἐπὶ τούτῳ '''Θαλῆς''' τὴν μήτε πλουσίους ἄγαν μήτε πένητας ἔχουσαν πολίτας.</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §11'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§11. Après lui '''Thalès''' : « que c’est celle qui n’a ni des citoyens trop riches, ni des citoyens trop pauvres. »</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §11'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;"></div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe XII.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Réflexion de '''Thalès''' sur la manière dont une maison doit être réglée.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§12. Τοῦτον οὖν ἄριστον ὁ '''Σόλων''' εἶπεν αὑτῷ δοκεῖν οἶκον, ὅπου τὰ χρήματα μήτε κτωμένοις ἀδικία μήτε φυλάττουσιν ἀπιστία μήτε δαπανῶσι μετάνοια πρόσεστιν. Ὁ δὲ '''Βίας''' ἐν ᾧ τοιοῦτός ἐστιν ὁ δεσπότης δι´ αὑτὸν οἷος ἔξω διὰ τὸν νόμον. Ὁ δὲ '''Θαλῆς''' ἐν ᾧ πλείστην ἄγειν τῷ δεσπότῃ σχολὴν ἔξεστιν.</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §12'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§12. '''Solon''' déclara que, selon lui, « la meilleure maison est celle où le bien qui s’y trouve est possédé sans injustice, conservé sans défiance, dépensé sans repentir. » '''Bias''' : « celle où, à l’intérieur, le maître est, par respect pour lui-même, ce qu’il est au dehors par respect pour la loi. » '''Thalès''' : « celle où le maître peut avoir un très grand loisir. »</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §12'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;"></div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe XIV.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage de l’''espièglerie'' de '''Thalès'''.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§14. [...] '''Ἐπιστήσαντος''' δὲ τοῦ λόγου τὸ συμπόσιον ὁ μὲν '''Θαλῆς''' ἐπισκώπτων εὖ φρονεῖν ἔφη τὸν '''Ἐπιμενίδην''' ὅτι μὴ βούλεται πράγματα ἔχειν ἀλῶν τὰ σιτία καὶ πέττων ἑαυτῷ, καθάπερ '''Πιττακός'''. « ἐγὼ γάρ, » εἶπε, « τῆς ξένης ἤκουον ᾀδούσης πρὸς τὴν μύλην, ἐν [[w:Eresós|''Ἐρέσῳ'']] γενόμενος, ἄλει, μύλα, ἄλει· καὶ γὰρ '''Πιττακὸς''' ἄλει μεγάλας ''Μυτιλάνας'' βασιλεύων. »</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §14'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§14. [...] Ces paroles ayant mis en arrêt les convives, '''Thalès''' dit en raillant qu’'''Epiménide''' avait bien raison de ne pas vouloir se donner l’embarras de moudre et de cuire lui-même son manger, comme faisait '''Pittacus''' : « Car je me souviens », ajouta-t-il, « qu’étant à ''Lesbos'', j’entendis mon hôtesse chanter à sa meule : Va ton train, meule, va ton train, puisque '''Pittacus''', le roi de la grande ''Mitylène'', s’occupe bien à moudre. »</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §14'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;"></div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe XV.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage d’une doctrine de '''Thalès''' sur l’importance vitale de l’agriculture.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§15. [...] « Οὐδαμῶς, » ὁ '''Κλεόδωρος''', « ἔμοιγ´, » εἶπεν, « εἰ δεῖ τὸ φαινόμενον εἰπεῖν, καὶ μάλιστα παρακειμένης τραπέζης, ἣν ἀναιροῦσιν αἰρομένης τροφῆς φιλίων θεῶν βωμὸν οὖσαν καὶ ξενίων. ὡς δὲ '''Θαλῆς''' λέγει τῆς γῆς ἀναιρεθείσης σύγχυσιν τὸν ὅλον ἕξειν κόσμον, οὕτως οἴκου διάλυσις ἐστι· συναναιρεῖται γὰρ αὐτῇ πῦρ ἑστιοῦχον ἑστία κρατῆρες ὑποδοχαὶ ξενισμοί, φιλανθρωπότατα καὶ πρῶτα κοινωνήματα πρὸς ἀλλήλους, μᾶλλον δὲ σύμπας ὁ βίος, εἴ γε διαγωγή τίς ἐστιν ἀνθρώπου πράξεων ἔχουσα διέξοδον, ὧν ἡ τῆς τροφῆς χρεία καὶ παρασκευὴ τὰς πλείστας παρακαλεῖ. [...] »</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §15'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§15. [...] « S’il faut dire ce que je pense », reprit '''Cléodème''', « ce n’est nullement mon avis, et surtout quand est dressée la table, que l’on supprime si la nourriture est supprimée et qui est l’autel des dieux amis et hospitaliers. Et s’il est vrai, comme dit '''Thalès''', que la suppression de la terre dût entraîner le désordre et la ruine du monde entier, de même anéantir la table ce serait anéantir la maison. Avec la table disparaîtraient le feu qui consacre le foyer, le foyer lui-même, les coupes, les réceptions, les hospitalités, qui sont les plus affectueux et les premiers rapports de communauté entre les hommes; ou plutôt disparaîtrait la vie entière, s’il est vrai que la vie soit une sorte de courant formé par la série des actes de l’homme, actes dont le plus grand nombre est commandé par le besoin et la préparation de la nourriture.</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §15'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;"></div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe XVII.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage d’une parole sage de '''Thalès''' : Ne croire ni ses ennemis sur les choses croyables, ni ses amis sur les choses incroyables.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§17. τέλος δὲ γελάσας πρὸς ἡμᾶς « βούλομαι μέν, » ἔφη, « πρὸς τὸ παρὸν φράσαι τὸ προσηγγελμένον· ὀκνῶ δ´ ἀκούσας '''Θαλέω''' ποτ´ εἰπόντος ὅτι δεῖ τὰ μὲν εἰκότα λέγειν, τὰ δ´ ἀμήχανα σιωπᾶν. » Ὑπολαβὼν οὖν ὁ '''Βίας''' « ἀλλὰ καὶ τοῦτ´, » ἔφη, « '''Θαλέω''' τὸ σοφόν ἐστιν, ὅτι δεῖ τοῖς μὲν ἐχθροῖς καὶ περὶ τῶν πιστῶν ἀπιστεῖν, τοῖς δὲ φίλοις καὶ τὰ ἄπιστα πιστεύειν, ἐχθροὺς μέν, ἔγωγ´ ἡγοῦμαι, τοὺς πονηροὺς καὶ ἀνοήτους, φίλους δὲ τοὺς χρηστοὺς καὶ φρονίμους αὐτοῦ καλοῦντος. οὐκοῦν, »</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §17'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§17. [...] A la fin il s’adressa à nous en éclatant de rire : « Je voudrais vous faire connaître, sans plus attendre, ce que '''Gorgias''' vient de me conter; et pourtant j’hésite, parce que j’ai autrefois entendu dire à '''Thalès''' qu’il faut dire les choses vraisemblables et taire les impossibles. « Mais, reprit '''Bias''', « c’est à '''Thalès''' aussi qu’appartient cette sage parole : qu’il faut ne pas croire ses ennemis même sur les choses croyables, et croire ses amis même sur celles qui ne le sont pas : par ennemis il entendait, je suppose, les méchants et les sots, par amis, les gens vertueux et sensés. »</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §17'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;"></div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe XXI.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage d’une doctrine de '''Thalès''' sur la résidence de l'âme dans toutes les parties du monde les plus essentielles.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§21. Μετὰ δὲ τοῦτον ὁ '''Ἀνάχαρσις''' εἶπεν ὅτι τοῦ '''Θαλέω''' καλῶς ὑπολαμβάνοντος ἐν πᾶσιν εἶναι τοῖς κυριωτάτοις μέρεσι τοῦ κόσμου καὶ μεγίστοις ψυχήν, [...].</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §21'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§21. Après '''Pittacus''', '''Anacharsis''' prit la parole : « Puisque, comme '''Thalès''' l’a magnifiquement établi, une âme réside dans toutes les parties du monde les plus essentielles, [...].</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://remacle.org/bloodwolf/historiens/Plutarque/banquet.htm Των επτα σοφων συμποσιον - Le banquet des sept sages], §21'', texte établi par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;"></div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome I, [https://www.google.fr/books/edition/Oeuvres_morales_de_Plutarque/QnRQAAAAcAAJ?hl=fr&gbpv=0 Le banquet des sept sages]'' pp.325, 326, traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">― ✳ ―</div>
==== Du démon de '''Socrate''' ====
<div style="text-align: center; margin: 0 1em;"></div>
===== <div style="text-align: center;">Paragraphe VI.</div> =====
<div style="text-align: center; margin: 0 1em;">Témoignage de l’aversion de '''Thalès''' pour les [[w:Tyran|''tyrans'']].</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid;"><br /><div style="text-align: justify; margin: 0 2em; text-indent: 15px">§6. Ταῦτα τοῦ '''Θεοκρίτου''' λέγοντος ὁ '''Λεοντίδης''' ἐξῄει μετὰ τῶν φίλων, ἡμεῖς δ´ εἰσελθόντες ἠσπαζόμεθα τὸν '''Σιμμίαν''' ἐπὶ τῆς κλίνης καθεζόμενον οὐ κατατετευχότα τῆς δεήσεως, οἶμαι, μάλα σύννουν καὶ διαλελυπημένον· ἀποβλέψας δὲ πρὸς ἅπαντας ἡμᾶς ‘ὦ '''Ἡράκλεις''',’ εἶπεν ‘ἀγρίων καὶ βαρβάρων ἠθῶν· εἶτ´ οὐχ ὑπέρευ '''Θαλῆς''' ὁ παλαιὸς ἀπὸ ξένης ἐλθὼν διὰ χρόνου τῶν φίλων ἐρωτώντων ὅ τι καινότατον ἱστορήκοι ’τύραννον‘ ἔφη ’γέροντα.‘ καὶ γὰρ ᾧ μηδὲν ἰδίᾳ συμβέβηκεν ἀδικεῖσθαι, τὸ βάρος αὐτὸ καὶ τὴν σκληρότητα τῆς ὁμιλίας δυσχεραίνων ἐχθρός ἐστι τῶν ἀνόμων καὶ ἀνυπευθύνων δυναστειῶν.[...]</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome II, [https://remacle.org/bloodwolf/historiens/Plutarque/demonsocrategr.htm Περι του Σωκρατους Δαιμονιου - Le Démon de Socrate], §6'', traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§6. Pendant que [[w:Théocrite|'''Théocritos''']] [[#Théocrite|<span id="Théocrite_back"><sup>'''I'''</sup></span>]] parlait, '''Léontidas''' sortit avec ses amis, et nous entrâmes chez '''Simmias''', que nous saluâmes affectueusement. Il était assis sur son lit, et j’attribuai à l’insuccès de sa demande son air pensif et affligé. Après nous avoir regardés tous : « Par '''Hercule''' ! s’écria-t-il, quelles mœurs sauvages et barbares ! Eh bien ! n’avait-il pas cent fois raison le '''Thalès''' des anciens jours ? Comme il était revenu d’un long voyage à l’étranger, ses amis lui demandaient ce qu’il avait vu de plus curieux : « Un tyran parvenu à la vieillesse », répondit-il. Car ceux même qui n’ont pas éprouvé de la part d’un despote une injustice personnelle, supportent avec peine le poids et la dureté d’un semblable régime. On déteste tout pouvoir qui est en dehors de la loi et qui ne veut rendre de comptes à personne. [...]</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome III, [[s:Page:Plutarque_-_Œuvres_complètes_de_Plutarque_-_Œuvres_morales_et_œuvres_diverses,_tome_3,_1870.djvu/74|Περι του Σωκρατους Δαιμονιου - Le Démon de Socrate]], [[s:Page:Plutarque_-_Œuvres_complètes_de_Plutarque_-_Œuvres_morales_et_œuvres_diverses,_tome_3,_1870.djvu/83|§6]]'', traduites par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
{{Boîte déroulante début|titre=NdA de trad. Victor Bétolaud de 1870|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Théocrite_back|<span id="Théocrite"><sup>I</sup></span>]] Du nom propre grec ancien Θεόκριτος / Theókritos [[wikt:en:Θεόκριτος#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;">➥ de l’adjectif et du nom commun θεός / theós [[wikt:en:θεός#Ancient_Greek|(en)]], « divin, dieu, divinité »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ + du verbe κρίνω / krínō, « 1. (transitif) Séparer, diviser, distinguer entre deux choses ou personnes ou parmi un groupe de choses ou de personnes. 2. (transitif) Commander, organiser. 3. S’enquérir, enquêter. 4. Sélectionner, choisir, préférer. 5. (transitif) Trancher un différend ou un concours ; (intransitif) Porter un jugement, prendre une décision : • (voix moyenne, voix passive) Décider d’un concours ; (voix moyenne et voix passive) Se disputer, se disputer, se quereller. 6. Décider ou juger [+accusatif et infinitif = que quelque chose fait quelque chose], [+accusatif et accusatif = que quelque chose est quelque chose]. 7. Discerner entre le bien et le mal. 8. Juger, prononcer. 9. Traduire en justice, accuser. 10. Condamner, critiquer. 11. Sécréter, cacher, dissimuler. »;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ + le suffixe adjectival récessif -τος / -tos [[wikt:en:-τος#Ancient_Greek|(en)]];<br /><p style="margin: 0 2em; text-indent: 15px;">''Poète'', auteur de [[w:Mime|''mimes'']] (imitations comiques du langage ou des gestes), d’[[w:Poésie_pastorale|''idylles pastorales'']] et de [[w:Épopée|''contes épiques'']].<br /><p style="text-align: right; margin: 0 2em;">([[w:Circa|{{Info|''ca.''|Circa, locution latine que l’on emploie pour indiquer l’approximation d’une date}}]] [[w:310_av._J.-C.|-310]]<sup>[[w:IVe_siècle_av._J.-C.|⏳]]</sup>, à [[w:Théocrite#cite_ref-2|''Syracuse'']] — {{Info|''ca.''|Circa, locution latine que l’on emploie pour indiquer l’approximation d’une date}} [[w:250_av._J.-C.|-250]]<sup>[[w:IIIe_siècle_av._J.-C.|⏳]]</sup>)'''<br /><br />
</div>{{Boîte déroulante fin}}
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">§6. Pendant que '''Théocritos''' discourait ainsi, '''Léontidas''' sortit avec ses amis ; nous entrâmes et saluâmes '''Simmias''', qui était assis sur son lit, tout soucieux et triste, parce que sa demande avait été rejetée sans doute. En nous regardant tous, il s’écria : « '''Héraclès''' ! les moeurs sauvages et barbares ! Ah ! que '''Thalès''' l’ancien avait raison de répondre, lorsqu’après un long voyage à l’étranger ses amis lui demandaient ce qu’il avait remarqué de plus extraordinaire : « Un tyran âgé ». Même un homme qui a eu la chance de n’être pour son compte victime d’aucune injustice exècre déjà le poids et la dureté de ce commerce et est ennemi des dictatures, des dominations arbitraires.[...]</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome II, [https://remacle.org/bloodwolf/historiens/Plutarque/demonsocrate.htm Περι του Σωκρατους Δαιμονιου - Le Démon de Socrate], §6'', traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">― ✳ ―</div>
==== Les [[w:Alimentation_en_Grèce_antique#Banquets|''Symposiaques'']] [[#Symposiaques|<span id="Symposiaques_back"><sup>'''I'''</sup></span>]], ou questions de table ====
<div style="text-align: center; margin: 0 1em;"></div>
{{Boîte déroulante début|titre=NdA Symposiaques|fondtitre=#ffffff|alignT=right|styleTitre=color:#3366BB;|styleFrame=border-color:white}}
<div style="text-align: justify; border: 2px solid #3366BB; text-indent: 15px; border-radius:15px; font-size:85%;">
<p style="margin: 0 2em; text-indent: 15px;"><br/>'''[[#Symposiaques_back|<span id="Symposiaques"><sup>I</sup></span>]] Du nom commun grec ancien συμπόσιον / sympósion [[wikt:en:συμπόσιον#Ancient_Greek|(en)]], « Seconde partie d’un repas pendant laquelle un groupe restreint de convives buvaient et discutaient sur un sujet. » ; <br /><p style="margin: 0 2em; text-indent: 15px;">➥ du nom commun σῠμπότης / sŭmpótēs [[wikt:en:συμπότης#Ancient_Greek|(en)]], « compagnon de boisson » ; <br /><p style="margin: 0 4em; text-indent: 15px;">➥ du préfixe σῠν- / sŭn- [[wikt:en:συν-#Ancient_Greek|(en)]], « avec, ensemble » ;<br /><p style="margin: 0 4em; text-indent: 15px;">➥ + du nom commun ποτής / potḗs [[wikt:en:ποτής#Ancient_Greek|(en)]], « boisson » ;<br /><p style="margin: 0 2em; text-indent: 15px;">➥ + du suffixe -ῐον / -ĭon [[wikt:en:-ιον#Ancient_Greek|(en)]] ;<br /><p style="margin: 0 2em; text-indent: 15px;">Entretiens dans un banquet, propos de table.
'''<br /><br />
</div>{{Boîte déroulante fin}}
===== <div style="text-align: center;">Livre III</div> =====
<div style="text-align: center; margin: 0 1em;"></div>
====== <div style="text-align: center;">Question VI. Sur le temps où il est à propos de se rapprocher d’une femme.</div> ======
<div style="text-align: center; margin: 0 1em;">Témoignage du statut marital de '''Thalès''' et de sa relation avec sa mère</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid;"><br /><div style="text-align: justify; margin: 0 2em; text-indent: 15px">Καθάπερ οὖν '''Θαλῆς''' ὁ σοφὸς ὑπὸ τῆς μητρὸς ἐνοχλούμενος γῆμαι κελευούσης πῶς ὑπεξέφυγε παρήγαγε λέγων πρὸς αὐτὴν ἐν ἀρχῇ μέν « οὔπω καιρὸς ὦ μῆτερ, » ὕστερον δ´ « οὐκέτι καιρὸς ὦ μῆτερ », οὕτως ἄρα καὶ πρὸς ἀφροδίσια κράτιστον {ἔσται} ἔχειν ἕκαστον, ὥστε κατακλινόμενον λέγειν «οὔπω καιρός», ἀνιστάμενον δ´ « οὐκέτι καιρός ».</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome III, [https://remacle.org/bloodwolf/historiens/Plutarque/sympos3.htm#VI Προβλημα Ϛ. Περὶ καιροῦ συνουσίας. - Question VI. Quel est le temps le plus propre à l'amour?]'', traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div></div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§3. Ainsi donc, comme le sage '''Thalès''', fatigué par sa mère qui l’engageait à se marier, trouva le moyen de lui échapper et de lui donner le change en lui disant une première fois : « Il n’est pas encore temps, ma mère », et, lorsqu’elle insistait encore après qu’il avait passé l’âge : « Il n’est plus temps » ; de même, pour ce qui regarde les plaisirs de l’amour, le mieux sera que chacun se détermine à dire, en se mettant au lit : « Il n’est pas temps encore », et, en sortant du lit : « il n’est plus temps ».</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome III, [[s:Page:Plutarque_-_Œuvres_complètes_de_Plutarque_-_Œuvres_morales_et_œuvres_diverses,_tome_3,_1870.djvu/268|Question VI. Sur le temps où il est à propos de se rapprocher d’une femme]], [[s:Page:Plutarque_-_Œuvres_complètes_de_Plutarque_-_Œuvres_morales_et_œuvres_diverses,_tome_3,_1870.djvu/271|§3]]'', traduites par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">Le sage '''Thalès''', pressé par sa mère de se marier, lui répondit avec beaucoup d’adresse. Au commencement, il lui dit : Ma mère, il n’est pas encore temps. Quand il eut passé la fleur de son âge, et qu’elle lui fit de nouvelles instances, il lui répondit : Il n’est plus temps. De même, par rapport à la question proposée, le mieux serait que chacun pût se dire le soir en se couchant : Il n'm’est pas encore temps ; et le matin, quand il se lève : Il n’est plus temps. »</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome III, [https://remacle.org/bloodwolf/historiens/Plutarque/sympos3.htm#VI Προβλημα Ϛ. Περὶ καιροῦ συνουσίας. - Question VI. Quel est le temps le plus propre à l'amour?]'', traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">― ✳ ―</div>
==== De la malignité d’'''Hérodote''' ====
<div style="text-align: center; margin: 0 1em;"></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">― ✳ ―</div>
==== Les opinions des Philosophes ====
<div style="text-align: center; margin: 0 1em;"></div>
===== <div style="text-align: center;">Livre I</div> =====
<div style="text-align: center; margin: 0 1em;"></div>
<div style="text-align: center; margin: 0 auto;">― ● ―</div>
===== <div style="text-align: center;">Livre II</div> =====
<div style="text-align: center; margin: 0 1em;"></div>
<div style="text-align: center; margin: 0 auto;">― ● ―</div>
===== <div style="text-align: center;">Livre III</div> =====
<div style="text-align: center; margin: 0 1em;"></div>
<div style="text-align: center; margin: 0 auto;">― ● ―</div>
===== <div style="text-align: center;">Livre IV</div> =====
<div style="text-align: center; margin: 0 1em;"></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">― ✳ ―</div>
==== Les animaux de terre ont-ils plus d'adresse que ceux de mer? ====
<div style="text-align: center; margin: 0 1em;"></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">― ✳ ―</div>
==== D’'''Isis''' et d’'''Osiris'''====
<div style="text-align: center; margin: 0 1em;"></div>
===== <div style="text-align: center;">Paragraphe IX.</div> =====
<div style="text-align: center; margin: 0 1em;">Témoignage d’un voyage de '''Thalès''' en ''Égypte'', de rencontres avec des prêtres et de récit sur leur divinités.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid;"><br /><div style="text-align: justify; margin: 0 2em; text-indent: 15px">§9. [...] '''Ἑκαταῖος''' δ´ ὁ ''Ἀβδηρίτης'' φησὶ τούτῳ καὶ πρὸς ἀλλήλους τῷ ῥήματι χρῆσθαι τοὺς ''Αἰγυπτίους'', ὅταν τινὰ προσκαλῶνται· προσκλητικὴν γὰρ εἶναι τὴν φωνήν. Διὸ τὸν πρῶτον θεόν, ὃν τῷ παντὶ τὸν αὐτὸν νομίζουσιν, ὡς ἀφανῆ καὶ κεκρυμμένον ὄντα προσκαλούμενοι καὶ παρακαλοῦντες ἐμφανῆ γενέσθαι καὶ δῆλον αὐτοῖς ''Ἀμοῦν'' λέγουσιν.<br /><p style="text-indent: 15px">§10. Ἡ μὲν οὖν εὐλάβεια τῆς περὶ τὰ θεῖα σοφίας '''Αἰγυπτίων''' τοσαύτη {ἦν}, μαρτυροῦσι δὲ καὶ τῶν ''Ἑλλήνων'' οἱ σοφώτατοι, '''Σόλων''' '''Θαλῆς''' '''Πλάτων''' '''Εὔδοξος''' '''Πυθαγόρας''', ὡς δ´ ἔνιοί φασι, καὶ '''Λυκοῦργος''' εἰς ''Αἴγυπτον'' ἀφικόμενοι καὶ συγγενόμενοι τοῖς ἱερεῦσιν.[...]</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome V, [https://remacle.org/bloodwolf/historiens/Plutarque/isisetosiris.htm Περι Ισιδος και Οσιριδος - Traité d’Isis et d’Osiris], §34'', traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1870<br />(également disponible une édition de 1844 [https://remacle.org/bloodwolf/historiens/Plutarque/isisetosiris1.htm ici])</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§9. [...] '''Hécatée''' d’''Abdère'' dit que les ''Égyptiens'' emploient ce mot pour s’appeler les uns les autres, attendu qu’il est essentiellement appellatif. C’est pourquoi, s’adressant au premier Dieu, le même, selon eux, que l’Univers, comme à un être invisible et caché, ils l’exhortent avec supplications, en l’appelant "Amoun", à se faire voir et à se découvrir à eux. Voilà jusqu’à quel point était grande la réserve qui caractérisait la philosophie religieuse des ''Égyptiens''.<br /><p style="text-indent: 15px">§10. C’est ce que témoignent les plus éclairés d’entre les ''Grecs'': '''Solon''', '''Thalès''', '''Platon''', '''Eudoxe''', '''Pythagore''', et aussi, d’après quelques-uns, '''Lycurgue'''. Ils étaient allés en ''Égypte'' et avaient eu des conférences avec les prêtres. [...]</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome V, [https://remacle.org/bloodwolf/historiens/Plutarque/isisetosiris.htm Περι Ισιδος και Οσιριδος - Traité d’Isis et d’Osiris], §§9, 10'', traduites par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870<br/>(également disponible [[s:Sur_Isis_et_Osiris|ici]])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">§9. [...] '''Hécatée''' d’''Abdère'' dit que les ''Egyptiens'' s’en servent pour s’appeler les uns les autres; que ce nom est de sa nature appellatif ; que ce peuple , qui croit que le premier des dieux, qu’il confond avec l’univers, est un dieu caché et inconnu, l’invoque et le prie de se découvrir à eux, en lui disant ''Amoun'' ;<br /><p style="text-indent: 15px">§10. tant ce peuple portait de retenue et de réserve dans sa philosophie religieuse ! C’est ce qu'attestent unanimement les plus sages d’entre les ''Grecs'', '''Solon''', '''Thalès''', '''Platon''', '''Eudoxe''', '''Pythagore''', et, suivant quelques uns, '''Lycurgue''' lui-même, qui tous voyagèrent en ''Egypte'', et y conférèrent avec les prêtres du pays.[...]</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome V, [https://remacle.org/bloodwolf/historiens/Plutarque/isisetosiris1.htm Περι Ισιδος και Οσιριδος - Traité d’Isis et d’Osiris], §§9, 10'', traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto;">― • ―</div>
===== <div style="text-align: center;">Paragraphe XXXIV.</div> =====
<div style="text-align: justify; text-indent: 15px; margin: 0 1em;">Témoignage de la théorie de '''Thalès''' de l’eau principe de tous les êtres.</div>
:'''Texte grec'''
<div style="text-align: justify; margin-top: 2em; overflow: auto; height: 270px; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§34. Ἥλιον δὲ καὶ Σελήνην οὐχ ἅρμασιν ἀλλὰ πλοίοις ὀχήμασι χρωμένους περιπολεῖν φασιν αἰνιττόμενοι τὴν ἀφ´ ὑγροῦ τροφὴν αὐτῶν καὶ γένεσιν. Οἴονται δὲ καὶ '''Ὅμηρον''' ὥσπερ '''Θαλῆν''' μαθόντα παρ´ ''Αἰγυπτίων'' ὕδωρ ἀρχὴν ἁπάντων καὶ γένεσιν τίθεσθαι· τὸν γὰρ '''Ὠκεανὸν''' '''Ὄσιριν''' εἶναι, τὴν δὲ '''Τηθὺν''' '''Ἶσιν''' ὡς τιθηνουμένην πάντα καὶ συνεκτρέφουσαν. [...]</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome V, [https://remacle.org/bloodwolf/historiens/Plutarque/isisetosiris.htm Περι Ισιδος και Οσιριδος - Traité d’Isis et d’Osiris], §34'', traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1870<br />(également disponible une édition de 1844 [https://remacle.org/bloodwolf/historiens/Plutarque/isisetosiris1.htm ici])</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
:'''Traductions'''
<div style="text-align: justify; margin-top: 2em; height: 520px; overflow: auto; border: 2px solid; text-indent: 15px"><br /><div style="text-align: justify; margin: 0 2em;">§34. Ils disent que le soleil et la lune parcourent leur route perpétuelle non pas sur des chars, mais sur des bâtiments de navigation: signifiant par là, que c’est le principe humide qui les entretient et qui leur a donné naissance. Ils croient aussi que c’est des ''Egyptiens'' qu’'''Homère''', et après lui '''Thalès''', ont appris à établir l’eau comme principe générateur de tous les êtres. Ils veulent qu’'''Osiris''' soit l’'''Océan''', qu’'''Isis''' soit '''Téthys''', laquelle nourrit et entretient tout ce qui existe.</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome V, [https://remacle.org/bloodwolf/historiens/Plutarque/isisetosiris1.htm Περι Ισιδος και Οσιριδος - Traité d’Isis et d’Osiris], §34'', traduites par [[w:Victor_Bétolaud|Victor Bétolaud]], 1870<br/>(également disponible [[s:Sur_Isis_et_Osiris|ici]])</div>
<div class="center" style="border-bottom: 1px solid #444; width: 30%; margin: 0 auto;"></div>
<div style="text-indent: 15px; text-align: justify; margin: 0 2em;">§34. Ils disent que le soleil et la lune parcourent les cieux, portés, non sur des chars, mais sur des vaisseaux, pour signifier que tout est nourri et mis en mouvement par l’eau. Ils pensent que c’est des ''Egyptiens'' qu’'''Homère''' et '''Thalès''' avaient pris cette opinion, que l’eau est le principe de tous les êtres, qu’'''Osiris''' est l’'''Océan''', et qu’'''Isis''' est '''Thétis''', qui nourrit et alimente toutes les substances.</div>
<div style="text-align: right; margin: 0 2em 0 1em;"><u>Œuvres complètes de Plutarque, Œuvres Morales</u>, ''Tome V, [https://remacle.org/bloodwolf/historiens/Plutarque/isisetosiris1.htm Περι Ισιδος και Οσιριδος - Traité d’Isis et d’Osiris], §34'', traduites par [[w:Dominique_Ricard|Dominique Ricard]], 1844</div>
<div class="center" style="border-bottom: 1px solid #FFF; width: 30%; margin: 0 auto;"></div></div>
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Valère_Maxime|'''Valère Maxime''']] ''([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l'on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] [[w:Ier_siècle|I<sup>er</sup> siècle {{Info|EC|de l’Ère Commune}}]])'' [[s:Auteur:Valère_Maxime|<sup>📚</sup>]] ==
=== Actions et paroles mémorables, VII, § 2 ===
:8. Il y a aussi un mot admirable de Thalès. On lui demandait si les actions des hommes échappaient à la connaissance des dieux. "Leurs pensées non plus", répondit-il. Aussi faut-il nous appliquer à avoir, je ne dis pas seulement les mains, mais encore le cœur pur, dans la persuasion que la divinité est témoin des mouvements les plus secrets de nos âmes.
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Tatien_le_Syrien|'''Tatien''']] le [[w:Assyrie_(province_romaine)|''Syrien'']] ''(vers [[w:120|120]], en [[w:Halicarnasse|''Halicarnasse'']] en [[w:Assyrie_(province_romaine)|Assyrie]] — vers [[w:173|173]], en Assyrie)'' <sup>[[w:IIe_siècle|⏳]]</sup> [[s:Auteur:Tatien_le_Syrien|<sup>📚</sup>]] ==
=== Discours aux Grecs, 41 ===
= [[w:Lucien_de_Samosate|'''Lucien de Samosate''']] ''(vers [[w:120|120]], à [[w:Samosate|Samosate]] — vers [[w:180|180]], en [[w:Égypte_romaine_et_byzantine|Égypte]])'' <sup>[[w:IIe_siècle|⏳]]</sup> [[s:Auteur:Lucien_de_Samosate|<sup>📚</sup>]] =
=== Dialogues des morts ===
https://gallica.bnf.fr/ark:/12148/bpt6k6227866x/f7.item
https://gallica.bnf.fr/ark:/12148/bpt6k6227866x/f103.double
=== Hippias ou le bain ===
:(2) Mon but est de prouver que les constructeurs de machines qui méritent le plus notre admiration sont ceux qui, distingués par leur science théorique, ont laissé en outre à la postérité des monuments de leur art et des œuvres de leur génie, tandis que les hommes, qui se sont seulement exercés dans la parole méritent plutôt le nom de sophistes que celui de savants. C'est sur la liste traditionnelle de ces artistes que nous voyons figurer Archimède et Socrate de Cnide, qui inventèrent, l'un les moyens de soumettre à Ptolémée la ville de Memphis, sans recourir à un siège, mais en détournant et en divisant le cours du Nil ; l'autre, ceux d'incendier les galères des ennemis. Avant eux, Thalès de Milet, ayant promis à Crésus de faire passer à pied sec à son armée les eaux du fleuve Halys, imagina de les détourner en une seule nuit derrière le camp ; et pourtant ce n'était pas un mécanicien de profession, mais un sage d'un esprit inventif et à l'intelligence duquel on pouvait s'en rapporter.
=== Exemples de longévité ===
:(18) Solon, Thalès et Pittacus, que l'on compte au nombre des Sept sages, vécurent chacun cent années.
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Clément_d%27Alexandrie|'''Clément''']] d'[[w:Histoire_d%27Alexandrie#Annexion|''Alexandrie'']] ''(vers [[w:150|150]]'' <sup>[[w:IIe_siècle|⏳]]</sup>'', à [[w:Athènes#Antiquité|Athènes]] — vers [[w:215|215]]'' <sup>[[w:IIIe_siècle|⏳]]</sup>'', à [[w:Kayseri|Kayseri]])'' [[s:Auteur:Clément_d’Alexandrie|<sup>📚</sup>]] ==
=== Stromates, I, 65 ===
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Claude_Élien|'''Claude Élien''']] ''(vers [[w:175|175]]''<sup>[[w:IIe_siècle|⏳]]</sup>'', à [[w:Préneste|Préneste]] — vers [[w:235|235]]''<sup>[[w:IIIe_siècle|⏳]]</sup>'', en [[w:Rome_antique|Rome]])'' [[s:Auteur:Élien_le_sophiste|<sup>📚</sup>]] ==
=== Histoires diverses ===
:On a vu des philosophes à la tête des affaires publiques : d'autres, se bornant à cultiver leur raison, ont passé leur vie dans le repos. Entre les premiers sont Zaleucus et Charondas qui réformèrent, l'un, le gouvernement des Locriens, l'autre, d'abord celui des Catanéens, puis, après qu'il eut été exilé de Catane, celui des Rhéginiens. Archytas servit utilement les Tarentins. Les Athéniens durent tout à Solon. Bias et Thalès rendirent les mêmes services à l'Ionie, Chilon à Lacédémone, Pittacus à Mitylène, Cléobule à Rhodes.
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Sextus_Empiricus|'''Sextus Empiricus''']] ''([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l'on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] [[w:IIe_siècle|II<sup>ème</sup> siècle {{Info|EC|de l’Ère Commune}}]])'' [[s:Auteur:Sextus_Empiricus|<sup>📚</sup>]] ==
Hypot III, 30, et Liv I contre les phys., sect. 319
https://gallica.bnf.fr/ark:/12148/bpt6k9796311p/f305.item.r=thales
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Lactance|'''Lactance''']] ''(vers [[w:250|250]]''<sup>[[w:IIIe_siècle|⏳]]</sup>'', à [[w:Henchir_Kssiba#Histoire|Civitas Popthensis]] — vers [[w:325|325]]''<sup>[[w:IVe_siècle|⏳]]</sup>'', en [[w:Gaule#La_Gaule_dans_l'Antiquité_tardive|Gaule]])'' ==
Épit. 4 (https://gallica.bnf.fr/ark:/12148/bpt6k282068z/f300.image.r=thales)
Inst. 111, 16 (https://gallica.bnf.fr/ark:/12148/bpt6k282068z/f621.item.r=thales)
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Jamblique|'''Jamblique''']] ''(vers [[w:250|250]]''<sup>[[w:IIIe_siècle|⏳]]</sup>'', à [[w:Qinnasrīn|Chalcis ad Belum]] — vers [[w:333|333]]''<sup>[[w:IVe_siècle|⏳]]</sup>'')'' ==
=== Vie de Pythagore ===
==== chap. II ====
(https://web.archive.org/web/20110721184914/http://www.aurumsolis.info/index.php?option=com_phocadownload&view=category&download=1%3Aiamblichus-the-pythagorean-life&id=19%3Awritings-from-the-founders&Itemid=143&lang=en)
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Eusèbe_de_Césarée|'''Eusèbe''']] de [[w:Césarée#Césarée_au_début_du_christianisme|''Césarée'']] ''(vers [[w:265|265]]'' <sup>[[w:IIIe_siècle|⏳]]</sup>'', à Césarée — [[w:340|340]]'' <sup>[[w:IVe_siècle|⏳]]</sup>'', à Césarée)'' [[s:Auteur:Eusèbe_de_Césarée|<sup>📚</sup>]] ==
Preparation Évangélique, XI, 2
Prepar. évang. I, 8, page 22-25
https://gallica.bnf.fr/ark:/12148/bpt6k9796311p/f310.image.r=thales
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Diogène_Laërce|'''Diogène Laërce''']] ''([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l'on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] [[w:IIIe_siècle|III<sup>ème</sup> siècle {{Info|EC|de l’Ère Commune}}]])'' [[s:Auteur:Diogène_Laërce|<sup>📚</sup>]] ==
''Ce texte est un extrait de la traduction de Robert Genaille (1933)''
Thalès[1], au dire d’Hérodote, de Douris et de Démocrite, était fils d’Examios et de Cléobuline, et membre de la famille des Thélides, Phéniciens descendant en droite ligne d’Agénor[2] et de Cadmus[3], s’il faut en croire Platon. Le premier, il porta le nom de sage, au temps où Damasias était archonte à Athènes[4]. C’est sous le même archontat que fut créée l’expression : « les sept sages » (cf. Démocrite de Phalère, Registre des Archontes). Thalès fut inscrit comme citoyen de Milet quand il vint dans cette ville avec Nélée chassé de Phénicie. Une autre tradition très courante veut qu’il soit natif de Milet et qu’il descende d’une bonne famille. Il s’occupa de politique avant d’étudier la nature. On croit qu’il ne laissa aucun écrit, car l’Astrologie nautique qu’on lui attribue est de Phocos de Samos.
Callimaque[5] croit qu’il découvrit la Petite Ourse et le raconte en vers iambiques :
Il mesura, dit-on, les étoiles du Chariot
Sur quoi les Phéniciens règlent leur navigation.
D’autres auteurs disent qu’il écrivit seulement deux ouvrages, un sur le solstice et un sur l’équinoxe, car il pensait le reste inaccessible. Il passe pour avoir le premier étudié l’astrologie et prédit les éclipses de soleil et les solstices (cf. Eudème, Histoire de l’astrologie)[6]. Xénophane et Hérodote le louent à ce propos, et leur témoignage est confirmé par celui d’Héraclite et de Démocrite. On dit encore (cf. le poète Choirilos) qu’il fut le premier à affirmer l’immortalité des âmes.
Le premier il dessina la course du soleil d’un solstice à l’autre, et démontra que comparée au soleil, la lune en est la cent vingtième partie. C’est encore lui qui fixa à trente jours la durée du mois, et qui écrivit le premier traité sur la Nature.
Aristote et Hippias disent aussi qu’il accordait une âme aux choses qu’on croit inanimées ; il en donnait pour preuve l’ambre et la pierre de Magnésie.
Selon Pamphile[7], il apprit des Égyptiens la géométrie, inscrivit dans un cercle le triangle rectangle, et pour cette découverte immola un bœuf. D’autres, comme Apollodore le calculateur, attribuent cette invention à Pythagore. Thalès a encore développé et précisé l’invention du Phrygien Euphorbe citée par Callimaque dans ses Iambes et concernant le triangle scalène, et tout ce qui touche aux considérations sur les lignes.
Il semble encore avoir été en politique un homme de bon conseil. Ainsi, quand Crésus[8] envoya une ambassade aux Milésiens pour demander leur alliance, il s’y opposa, et son intervention sauva la ville, puisque Cyrus l’emporta.
Héraclite cite une opinion de Clytos selon laquelle Thalès aurait eu une vie retirée et solitaire. Les uns disent qu’il se maria et eut un fils nommé Kibissos. D’autres prétendent qu’il resta célibataire et adopta le fils de sa sœur, qu’on lui demanda un jour pourquoi il ne cherchait pas à avoir des enfants, et qu’il répondit : « Par amour pour les enfants. » Sa mère l’exhortait à se marier, il lui répondit : « Non, par Zeus, il n’est pas encore temps. » Elle l’y invita une nouvelle fois quand il eut pris de l’âge, mais il lui dit : « Il n’est plus temps. »
D’après Hiéronyme de Rhodes (Notes, livre II), il voulut montrer combien il était facile de s’enrichir ayant prévu pour l’année une abondante récolte d’huile, il prit à loyer une oliveraie et gagna beaucoup d’argent[9].
Il soupçonna que l’eau était le principe des choses, que le monde était animé et rempli de démons. On dit qu’il découvrit les saisons de l’année, et qu’il la divisa en trois cent soixante-cinq jours. Il ne suivit les leçons d’aucun maître, sauf en Égypte, où il fréquenta les prêtres du pays. A ce propos, Hiéronyme dit qu’il mesura les Pyramides en calculant le rapport entre leur ombre et celle de notre corps. Si l’on en croit Minuès, il vivait au temps de Thrasybule, qui fut tyran de Milet[10].
L’histoire du trépied trouvé par des pêcheurs et dédié aux sages par le peuple de Milet est bien connue.
Des jeunes gens d’Ionie achetèrent à des pêcheurs milésiens leur coup de filet. Ils tirèrent de l’eau un trépied. On se querella et les Milésiens envoyèrent une ambassade à Delphes. Voici quel fut l’oracle de la divinité :
Race de Milet, tu interroges Phébus au sujet d’un trépied ?
Au plus sage de tous, je donne ce trépied[11].
Ils le donnent alors à Thalès, qui le donne à un autre, et cet autre à un autre, et ainsi de suite jusqu’à Solon, qui, déclarant que seul le dieu était le plus sage de tous, rendit le trépied à Delphes.
Callimaque, dans ses Iambes, rapporte cette histoire autrement ; il la tient de Léandre de Milet. Il dit qu’un certain Bathyclès d’Arcadie laissa en mourant une coupe pour qu’elle fût donnée à l’homme le plus sage. Elle fut donc donnée à Thalès, et après être passée de main en main et avoir fait le tour des sages, elle revint à Thalès. Celui-ci en fit don alors à Apollon de Didyme, en ces termes selon le poème de Callimaque :
Thalès me donne au protecteur du peuple du Nil,
Thalès qui a reçu deux fois ce présent,
ce qui, en prose, se dit ainsi : « Thalès de Milet, fils d’Examios, à Apollon delphien, ce présent qu’il a reçu deux fois des Grecs. » Celui qui portait la coupe de sage en sage, le fils de Bathyclès, s’appelait Thyrion (cf. Éleusis, Livre sur Achille, et Alexon de Mynde, Fables, livre IX).
Eudoxe de Cnide et Évanthès de Milet disent de leur côté qu’un ami de Crésus reçut du roi un vase d’or, pour le donner au plus sage des Grecs, qu’il le donna à Thalès et que ce vase parvint jusqu’à Chilon. Celui-ci consulta la Pythie, pour savoir qui était plus sage que lui. Elle répondit que c’était Myson (je parlerai de lui : Eudoxe le met parmi les sages à la place de Cléobule et Platon à la place de Périandre.) Voici la réponse que lui fit la Pythie :
Il y a un habitant de l’Oeta, Myson, né à Chénée,
Qui plus que toi est riche de sages pensées.
L’homme qui consulta l’oracle pour Chilon s’appelait Anacharsis. Dédale le Platonicien et Cléarque disent que la coupe fut envoyée par Crésus à Pittacos, et que c’est ainsi qu’elle passa de main en main. D’après Andron, d’autre part (Livre du trépied), les Argiens décidèrent que le trépied serait attribué comme prix de vertu au plus sage des Grecs. Aristodème de Sparte fut choisi et c’est lui qui donna le trépied à Chilon.
Alcée est aussi partisan d’Aristodème dont il parle dans les vers suivants :
:Comme jadis Aristodème, dit-on,
:Prononça à Sparte cette parole bien juste :
:C’est de l’argent, un homme, oui de l’argent,
:Car l’homme vertueux n’est jamais pauvre.
D’autres disent encore que Périandre envoya à Thrasybule, tyran de Milet, un navire chargé, que ce navire fit naufrage dans la mer de Cos, et que quelque temps après le trépied fut trouvé par des pêcheurs. Phanodicos dit que le trépied fut trouvé dans la mer Attique, porté à la ville, et que l’assemblée du peuple s’étant réunie le fit porter à Bias. Pourquoi cela, je le dirai quand je parlerai de Bias. Selon d’autres auteurs, le trépied avait été fabriqué par Héphaïstos et donné en présent de la part de ce dieu à Pélops lors de son mariage. Il vint ensuite à Ménélas, fut enlevé avec Hélène par Alexandre, jeté dans la mer de Cos à l’instigation de la Spartiate qui prévoyait qu’il serait un sujet de querelle. Plus tard, en ce lieu, des Lébédiens achetèrent le produit d’un coup de filet et c’est le trépied qui fut tiré de l’eau. Il y eut querelle avec les pêcheurs, on vint jusqu’à Cos, et comme on ne s’accordait pas, on s’adressa à Milet, qui était la capitale. Les Milésiens envoyèrent des députés qui ne furent pas écoutés, aussi firent-ils la guerre aux gens de Cos. Comme de chaque côté il mourait beaucoup de gens, l’oracle déclara qu’il fallait donner le trépied au plus sage. Les deux camps s’entendirent alors pour l’attribuer à Thalès, qui par la suite le consacra à Apollon de Didyme. Pour en revenir à la réponse de l’oracle aux gens de Cos, elle disait ceci :
La querelle entre Ioniens et Méropes ne cessera pas
Avant que le trépied d’or qu’Héphaïstos jeta dans la mer
N’ait quitté votre ville pour la maison de l’homme
Qui connaît le présent, l’avenir et le passé.
La réponse aux Milésiens fut la suivante :
Race de Milet, tu interroges Phoebus au sujet d’un trépied...
comme il a été dit plus haut.
En voilà assez sur ce sujet[12].
Hermippe, dans ses Vies, rapporte à Thalès ce qui est dit par d’autres de Socrate : il aimait à dire qu’il remerciait la fortune de trois choses : d’être un humain et non une bête, d’être un homme et non une femme, enfin d’être un Grec, et non un barbare. On raconte encore qu’étant sorti de chez lui pour contempler les astres, il tomba dans un puits[13]. Une vieille femme survenant se moqua de lui en ces mots : « Comment, Thalès, toi qui n’es pas capable de voir ce qui est à tes pieds, t’imagines-tu pouvoir connaître ce qui est dans le ciel ? »
Timon[14] a bien connu aussi la science de Thalès en astronomie, et dans ses Silles, il le loue en ces termes :
Comme Thalès, un des sept sages, qui fut savant astronome.
L’Argien Lobon dit que ses écrits font un total de quelque deux cents vers, et que sous sa statue on écrivit :
Thalès de Milet repose ici dans le sol qui l’a nourri,
Il fut un sage, et le premier des astrologues.
Voici un de ses poèmes :
Le trop parler n’est pas marque d’esprit.
Trouvez une seule chose sage,
Choisissez une seule chose belle,
Et vous clouerez le bec à bien des bavards.
On lui attribue encore les sentences suivantes : de tous les êtres, le plus ancien, c’est Dieu, car il n’a pas été engendré ; le plus beau, c’est le monde, car il est l’ouvrage du dieu ; le plus grand, c’est l’espace, car il contient tout ; le plus rapide, c’est l’esprit, car il court partout ; le plus fort, c’est la nécessité, car elle vient à bout de tout ; le plus sage, c’est le temps, parce qu’il découvre tout. La mort, dit-il, ne diffère en rien de la vie. On lui répond : « Pourquoi, alors, ne te donnes-tu pas la mort ? » ; « Parce que vie ou mort, c’est tout un », réplique-t-il. Quelqu’un lui demande ce qui du jour ou de la nuit fut créé d’abord ; il répond : « La nuit est en avance d’un jour. » On lui demande si les mauvaises actions d’un homme échappent au regard des dieux. Il répond : « Ils voient même les mauvaises pensées. » Un homme adultère lui demandait s’il pouvait jurer qu’il n’avait pas commis d’adultère. Il répondit : « Le parjure n’est pas pire que l’adultère. »
On lui demandait ce qui était difficile : « Se connaître » dit-il ; ce qui était facile : donner un conseil à autrui ; ce qui était le plus doux : jouir ; ce que c’était que la divinité : un être sans commencement ni fin ; encore une chose difficile : voir un tyran âgé ; comment supporter aisément l’infortune : en voyant ses ennemis plus malheureux encore ; comment vivre vertueusement : en ne faisant pas ce que nous reprochons à autrui ; qui est heureux : l’homme bien portant, riche, courageux et instruit.
Il disait encore que l’on doit penser à ses amis aussi bien en leur absence qu’en leur présence, que la beauté ne vient pas d’un beau visage, mais de belles actions. « Ne t’enrichis pas injustement, conseillait-il, et veille à ne pas être cité en justice pour de mauvaises paroles contre tes proches et tes amis. Comme tu traites tes parents, tes enfants te traiteront. »
Du Nil[15] il disait qu’il débordait quand ses eaux étaient repoussées par les vents étésiens qui soufflent contre son cours.
Apollodore dans ses Chroniques dit que Thalès naquit la première année de la trente-cinquième olympiade[16]. Il mourut dans sa soixante-dix-huitième année ou, comme le dit Sosicrate, dans sa quatre-vingt-dixième année, car ce fut dans la cinquante-huitième olympiade. Il vécut du temps de Crésus, auquel il promit de faire traverser l’Hallys[17] sans pont, en détournant le cours du fleuve.
Il y eut cinq autres personnages du nom de Thalès (cf. Démétrios de Magnésie, Homonymes) : un rhéteur de Callatie, au style prétentieux, un peintre de Sicyone, de noble origine, un troisième, très ancien, du temps d’Hésiode, d’Homère et de Lycurgue, un quatrième, mentionné par Douris dans son traité de la peinture, un cinquième, plus jeune et peu connu, cité par Denys dans ses Critiques.
Pour en revenir à notre sage, il mourut en regardant les jeux gymniques, pour avoir eu trop chaud et trop soif et par suite de sa fatigue et de son grand âge. Voici son épitaphe :
:Ce tombeau, certes, est bien petit,
:Mais la renommée de l’homme est allée au ciel.
:C’est celui de Thalès le très sage.
J’ai écrit sur lui les vers suivants dans le premier livre de mes épigrammes ou « vers de mètres divers[18] :
:Tandis qu’il regardait les jeux, ô Zeus Hélios,
:Tu as ravi du stade le sage Thalès.
:Je te loue de l’avoir rapproché du ciel. Il était si vieux
:Que de la terre il ne pouvait plus voir les astres.
Thalès est l’auteur du fameux « connais-toi toi-même » qu’Antisthène (Livre des Filiations) attribue à Phémonoé, en déclarant que Chilon se l’appropria mensongèrement.
Sur les sept sages, qu’il est juste de citer maintenant l’un après l’autre, voici la tradition. Damon de Cyrène, qui blâme tous les philosophes dans ses écrits, s’attaque surtout aux sept sages. Anaximène dit que tous étaient poètes. Dicéarque dit qu’ils n’étaient ni sages ni philosophes, mais hommes d’esprit et législateurs. Archétimos de Syracuse a décrit leurs assemblées chez Cypsélos[19] et dit qu’il y assista personnellement. Euphoros dit que tous, sauf Thalès, fréquentèrent Crésus.
D’autres disent qu’ils se réunirent à Panionium, à Corinthe et à Delphes. On rapporte même leurs paroles, et qui a prononcé telle ou telle. Exemple :
Le Spartiate Chilon fut sage,
Lui qui dit : Rien de trop,
Tout est bien qui vient en son temps !
On n’est pas d’accord sur leur nombre. Léandre, au lieu de Cléobule et de Myson, met Léophante, fils de Gorsias, ou Lébédios d’Éphèse et Épiménide de Crète. Platon, dans le Protagoras[20], met Myson à la place de Périandre. Éphoros met Anacharsis à la place de Myson et d’autres ajoutent Pythagore.
Selon Dicéarque, il y en a quatre sur qui tout le monde est d’accord : Thalès, Bias, Pittacos et Solon. Le même auteur en nomme six autres, parmi lesquels il en choisit trois : Aristodème, Pamphile, le Lacédémonien Chilon, Cléobule, Anacharsis et Périandre. D’autres ajoutent Acousilaos, Caba ou Scala, un Argien.
Hermippe, dans son livre sur les sages, dit qu’ils furent dix-sept et que chacun en choisit sept selon ses préférences. Ce sont Solon, Thalès, Pittacos, Bias, Chilon, Cléobule, Périandre, Anacharsis, Acousilaos, Épiménide, Léophante, Phérécyde, Aristodème, Pythagore, Lasos, fils de Charmantidas ou de Sisambrinos ou, selon Aristoxène, de Chabrinus, Hermonée, Anaxagore.
Hippobotos (Catalogue des Philosophes) les inscrit ainsi : Orphée, Linos, Solon, Périandre, Anacharsis, Cléobule, Myson, Thalès, Bias, Pittacos, Épicharme et Pythagore.
Voici des lettres attribuées à Thalès[21] :
==== Thalès à Phérécyde ====
« J’apprends que vous vous disposez à présenter aux Grecs le premier traité ionien des choses divines. Vous agiriez peut-être plus sagement en lisant votre ouvrage à vos amis, qu’en communiquant à n’importe quelles gens des écrits qui ne peuvent guère leur être utiles.
« Si cela vous plaît, j’aimerais profiter de vos recherches et, si vous m’y invitez, je viendrai vous trouver au plus tôt. Car Solon d’Athènes et moi, qui avons déjà traversé deux fois la mer pour aller visiter la Crète, et pour aller en Égypte nous entretenir avec les prêtres et les astronomes du lieu, nous sommes assez sages pour ne pas hésiter à la traverser de nouveau pour aller vous voir.
« Je parle de Solon, parce qu’il viendra avec moi si vous le permettez. Vous êtes un sédentaire, vous allez rarement en Ionie, vous n’aimez guère aller voir les étrangers, et vous ne songez, j’imagine, qu’à écrire.
« Mais nous qui n’écrivons pas, nous parcourons volontiers la Grèce et l’Italie. »
==== Thalès à Solon ====
« Si vous quittez Athènes, vous aurez, je crois, tout avantage à venir vous établir à Milet, parmi les colons athéniens. Il n’y a là pour vous aucun danger. Si vous hésitez, sous prétexte que nous, Milésiens, sommes gouvernés par un tyran (je sais que vous haïssez tout pouvoir absolu), songez du moins que vous aurez plaisir à vivre avec nous qui sommes vos amis. Je sais que Bias vous a écrit et vous invite à aller à Priène. Si vous trouvez préférable d’habiter la ville de Priène, j’irai vivre là-bas avec vous. »
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Ausone|'''Ausone''']] ''([[w:309|309]]/[[w:310|310]], à [[w:Bazas|Bazas]] ou à [[w:Bordeaux#Burdigala,_cité_romaine_(Ier_siècle_-_Ve_siècle)|Bordeaux]] — [[w:394|394]]/[[w:395|395]], entre [[w:Langon_(Gironde)|Langon]] et [[w:La_Réole|La Réole]])'' <sup>[[w:IVe_siècle|⏳]]</sup> [[s:Auteur:Ausone|<sup>📚</sup>]] ==
=== Le Jeu des Sept Sages ===
:Thalès a trouvé [texte grec] pour nous défendre de nous porter cautions, parce qu'il y a du danger à répondre ainsi pour d'autres[iv]. Nous donnons-là un avis qui ne plaira pas beaucoup aux emprunteurs.
:THALÈS : Je suis Thalès de Milet ; j'ai dit, comme le poète Pindare, que l'eau est, le principe de toute chose. C'est à moi que des pêcheurs donnèrent autrefois [un trépied d'or] qu'ils avaient tiré de la mer : ils m'avaient choisi pour obéir au dieu de Délos, qui envoyait ce présent à un sage. Je refusai de le recevoir, je le leur rendis pour le porter à d'autres que je croyais plus dignes. Envoyé à tous les sept Sages, et renvoyé par eux, il nie fut rapporté. Je le reçus alors pour le consacrer à Apollon : car si Phébus a voulu qu'on choisit un sage, ce n'était pas d'un homme, mais d'un dieu qu'il fallait l'entendre. Je suis donc ce Thalès : mais un motif m'amène sur la scène. Comme les deux sages qui m'ont précédé, je viens défendre la sentence dont je suis l'auteur. Elle déplaira, mais non certes aux esprits prudents que l'expérience a instruits et rendus plus avisés. Nous avons dit : [texte grec], ou, en latin : Cautionne, mais tu t'en trouveras mal. Je pourrais parcourir mille exemples pour vous montrer des cautions et des répondants bien et dûment convaincus de repentir. Mais je ne veux nommer personne. Que chacun de, vous ré-fléchisse, et compte en lui-même combien de gens ont perdu ou souffert de s'être ainsi portés cautions pour d'autres. Toutefois, si un pareil service a du charme pour vous, n'y renoncez ni les uns ni les autres.
:Alors que les uns applaudissent, et que les autres, si je les blesse, me sifflent.
:THALÈS DE MILET.
:AVANT d'oser une mauvaise action, à défaut de Témoin redoute ta conscience. La vie s'éteint, mais la gloire de la mort ne meurt point. Ce que tu veux faire, abstiens-toi de le dire. C'est un supplice de craindre ce qu'on ne peut empêcher. Si tu blâmes avec raison, ton hostilité même est profitable ; si tu loues mal à propos, ton amitié même est nuisible. Rien de trop. - Arrêtons-nous, et qu'ici même il n'y ait rien de trop.
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== [[w:Proclus|'''Proclus''']] ''(le 7 ou 8 février [[w:412|412]], à [[w:Constantinople|Constantinople]] — le 17 avril [[w:485|485]], à [[w:Histoire_d%27Athènes#Antiquité_tardive|Athènes]])''<sup>[[w:Ve_siècle|⏳]]</sup> [[s:Auteur:Proclus|<sup>📚</sup>]] ==
=== Commentaire sur le premier livre d'Euclide, 65, 3 ===
ὥσπερ οὖν παρὰ τοῖς Φοίνιξιν διὰ τὰς ἐμπορείας καὶ τὰ συναλλάγματα τὴν ἀρχὴν ἔλαβεν ἡ τῶν ἀριθμῶν ἀκριβὴς γνῶσις, οὕτω δὴ καὶ παρ' Αἰγυπτίοις ἡ γεωμετρία διὰ τὴν εἰρημένην αἰτίαν εὕρηται. Θαλῆς δὲ πρῶτον εἰς Αἴγυπτον ἐλθὼν μετήγαγεν εἰς τὴν Ἑλλάδα τὴν θεωρίαν ταύτην καὶ πολλὰ μὲν αὐτὸς εὗρεν, πολλῶν δὲ τὰς ἀρχὰς τοῖς μετ' αὐτὸν ὑφηγήσατο τοῖς μὲν καθολικώτερον ἐπιβάλλων, τοῖς δὲ αἰσθητικώτερον.
<div style="text-align: center; margin: 0 auto; color: #3366BB">⁂</div>
== « [[w:Souda|'''Suidas''']] » ''([[w:Floruit|{{Info|''fl.''|Floruit, locution latine que l'on emploie pour indiquer la période au cours de laquelle une personne a été active}}]] fin du [[w:IXe_siècle|IX<sup>ème</sup> siècle {{Info|EC|de l’Ère Commune}}]])'' [[s:Auteur:Suidas|<sup>📚</sup>]] ==
=== La Souda ===
Θαλῆς, Ἐξαμύου καὶ Κλεοβουλίνης, Μιλήσιος, ὡς δὲ Ἡρόδοτος Φοῖνιξ: γεγονὼς πρὸ Κροίσου, ἐπὶ τῆς λε# ὀλυμπιάδος, κατὰ δὲ Φλέγοντα γνωριζόμενος ἤδη ἐπὶ τῆς ζ#. ἔγραψε περὶ μετεώρων ἐν ἔπεσι, Περὶ ἰσημερίας, καὶ ἄλλα πολλά. ἐτελεύτησε δὲ γηραιός, θεώμενος γυμνικὸν ἀγῶνα, πιληθεὶς δὲ ὑπὸ τοῦ ὄχλου καὶ ἐκλυθεὶς ὑπὸ τοῦ καύματος. πρῶτος δὲ Θαλῆς τὸ τοῦ σοφοῦ ἔσχεν ὄνομα καὶ πρῶτος τὴν ψυχὴν εἶπεν ἀθάνατον ἐκλείψεις τε καὶ ἰσημερίας κατείληφεν. ἀποφθέγματα δὲ αὐτοῦ πλεῖστα: καὶ τὸ θρυλλούμενον: γνῶθι σαυτόν. τὸ γάρ, ἐγγύα, πάρα δ' ἄτα, Χίλωνός ἐστι μᾶλλον, ἰδιοποιησαμένου αὐτό: καὶ τό, μηδὲν ἄγαν.
pnam8pq2yfdfpn06cevgo3ujpdtnyf7
Les débats de Gérard de Suresnes/Puissance et gloire
0
82212
768397
768215
2026-06-23T06:57:59Z
Texou
99491
/* Le débat sur les catastrophes naturelles */
768397
wikitext
text/x-wiki
== Le débat sur l'affaire Bill Clinton ==
=== Contexte ===
On parlait de séisme radiophonique fin avril 1998 ? Voici sa réplique, le 28 septembre 1998. Après un dérapage de Mickael à l'antenne, le voici débarqué. Les matinales ne trouvant pas leur rythme de croisière et Max ayant le crédit que l'on sait depuis la rentrée 1998, l'improbable arrive : il reprend la nuit. Tranche qu'il ne lâchera plus jusqu'en janvier 2006.
Ce retour, il se fait dans la même configuration que l'essai de fin août 1998, avec Reego qui a désormais un contrat et un rôle assigné. Mais il y a plus fort : parmi la fine équipe, un nouvel assistant d'antenne vient de débarquer. Cet assistant, intérimaire et donc payé à ce titre, n'est autre que gérard Cousin, alias gérard de Suresnes. Fidèle au surréalisme de cette histoire, l'animateur décalé a fini par triompher, bien sûr grâce au soutien constant de Max, et le voilà salarié de la station Fun radio pour toute la saison 1998-1999. Je laisse Thibault Raisse décrire les détails de ce contrat et l'impact social qu'il a sur la vie de ce jeune homme, absolument majeur. On notera juste ici, pour comprendre de futures allusions, que le mariage envisagé avant l'été n'a pas eu lieu. Sandy évoquera plus tard des questions d'argent, ce qui est probable, mais il existe sans doute d'autres raisons moins connues, Sandy ayant une famille probablement réservée sur la rapidité des événements.
Si Gérard est assistant, c'est qu'il va intervenir très régulièrement aux côtés de Max : pour les conseils bien sûr, avec Sandy, pour des libres antennes, parfois le dimanche, et une foultitude de fois dans la semaine pour jouer des sketchs divers. Il est donc beaucoup mobilisé et son salaire se justifie, clairement. D'ailleurs, en inauguration, il sera présent dès le 28 septembre 1998.
Au cœur du projet, figurent évidemment les débats. Le premier, qui s'inspirera largement de l'essai estival, se tient le 1er octobre. Max est là, pour soutenir son ami, assurer la propulsion du programme. D'autant que d'emblée, le ton change : beaucoup moins consensuel que les matinales, Gérard aborde des sujets d'actualité, donc potentiellement risqués, d'autant qu'il n'est jamais à l'abri d'un dérapage.
Le sujet du soir, c'est l'affaire Bill Clinton. Terrible affaire qui secoue toute la presse internationale depuis quelques mois. Le président américain, démocrate, se voit accusé par une ancienne stagiaire de la Maison Blanche, Monica Lewinski, de harcèlement sexuel. L'affaire fait grand bruit et désordre. Le président passera à quelques voies de la destitution par le Congrès américain. En octobre, l'affaire touche à sa fin, mais gérard va donc s'emparer du sujet. C'est dire comment Max reste près de lui pour éviter un débordement qui serait dramatique. Le sujet, maîtrisé comme Gérard en était capable, devient un prétexte à une conversation digne du café du commerce, mêlée de surréalisme assumé et de comique de situations. Nous ne redévelopperons pas ici l'affaire, mais il faut se rappeler qu'elle a marqué toute la presse internationale de cette année-là et bien avant les grands scandales sur les rapports entre les célébrités et les femmes qui ont explosé dans la décennie 2020. Elle constitue en tout cas un précédent, qu'on retrouvera dans une autre forme à peine différente en 2011 et impliquant l'ancien patron du Fond monétaire international, Dominique Strauss Kahn, ce qui lui coûtera d'ailleurs la candidature à l'élection présidentielle en France.
Les fondamentaux routiniers qui se sont installés au premier trimestre 1998 puis dans l'essai de fin août reviennent : un avant-débat houleux avec le courrier, ,a présence de Sandy, les sketchs de Gérard, puis deux débats où domine le surréalisme, l'humour et la comédie. Auditeurs et équipe, désormais installés et régulièrement renforcés par des personnalités célèbres ou membres de la radio, conduisent les choses avec brillo dans des mécaniques qu'on a déjà évoquées et qu'on présentera pour celles qui ne font que commencer.
Cet avant-débat pourtant, il est particulièrement interrogeant sur Gérard et son état. Max se plaint déjà de son arrivée en retard, en taxi, avec ses menaces d'annulation. Mais surtout, ce soir-là, il démarre très énervé, rendant Sandy elle-même, à ses côtés, et Max perplexes. Il s'en prend toujours à son équipe, mais sous l'angle de la jalousie de sa relation amoureuse. C'est l'occasion pour Max de rappeler le cadre applicable, et notamment qu'il est désormais amené à avoir une attitude professionnelle. Parmi les composantes de cette attitude, on apprend que Sandy n'est plus admise dans le studio pour ne plus le distraire. Elle participera bien entendu à de nombreuses émissions, mais par téléphone, même si c'est dans un bureau non loin de là. Au final, c'est du grand spectacle, avec toutefois racadrage vigoureux de Max, entre humour et réalité. Dans ce sketch, Gérard s'avère quelque peu déstructuré, voire inctonrôlable. Max lui-même est en difficulté parfois pour refroidir le bouillant personnage.
=== Les personnages ===
* Franck Bargine : Max
* Gérard Cousin : Gérard de Suresnes
* Phildar et Manu
* Igor : Reego
* Olivier Bouchet : Olivier de la pro
* Mégane : Crevette
* Carambar : Cuvette
* Sandy Threadkell : Point d'interrogation
* Goldo : Tétard
* Mladen Derek : Coussin d'air
=== Transcription ===
'''Gérard''' : Bonsoir, donc bonsoir à Reego sur Internet, bonsoir aux deux caves au standard.
'''Reego''' : Bonsoir Gérard.
'''Gérard''' : Donc bonsoir Olivier de la Pro. Donc on va accueillir Crevette, 21 ans...
'''Cuvette''' : Non, Cuvette, Cuvette, Cuvette.
'''Gérard''' : Non, Crevette !
'''Cuvette''' :On m'a dit Cuvette, moi.
'''Gérard''', ''[furieux]'' : Oh c'est... ça commence comment là ?
'''Phildar''' : Non parce qu'il y a un Crevette et un Cuvette.
'''Gérard''' : Non mais faut pas qu'on confonde tentacule et encule ta sœur, ok ? On commence pas comme ça, ok ?
'''Crevette''' : Bonsoir Gérard, je suis là, c'est Crevette.
'''Gérard''' : Alors Crevette, 21 ans de Rouen, on peut écouter Fun Radio sur 90.5. C'est bizarre parce que à Rouen, on m'a dit qu'il y avait pas de fréquence.
'''Crevette''' : Eh ben c'est tout nouveau.
'''Max''' : C'est revenu, ça va revenir, ouais, c'est-à-dire qu'il y a une fréquence pirate.
'''Gérard''' : Ok. Grosse caisse, 22 ans de Nantes, 90.5.
'''Grosse caisse''' : Ouais, salut. Ça va ?
'''Gérard''' : Qu'est-ce que ça peut te foutre ?
'''Grosse caisse''' : Bon, c'est parce que je t'aime bien, c'est tout.
'''Max''' : Ah, pour une fois qu'il est sympa, t'es vraiment dégueulasse avec les gens, Gérard. Tu perds de la popularité au niveau...
'''Gérard''' : Donc, point d'interrogation, je pense qu'on va l'avoir dans peu de temps. Donc, apparemment non, elle veut pas répondre. Donc, Tétard. La Bourboule sur 104 ?
'''Tétard''' : Et demi.
'''Gérard''' : Non, sur 104.
'''Tétard''' : Ah bon, excuse-moi, je suis un peu en avance.
'''Gérard''' : Ouais, t'es... d'accord. Je pense qu'à mon avis, on va s'amuser là, ce soir. Ouais, on va s'amuser, hein, Phildar et Manu au standard.
'''Manu''' : Bah ouais, on se marre déjà bien, nous.
'''Gérard''' : Ouais, ouais. On va s'amuser avec les anciens qu'on a eus, Tony et Arnett. Et toute la bande. Si, si, si. Non, non, mais...
'''Max''' : Moi, je pense que je vais pas pouvoir rester dans le studio, malheureusement.
'''Gérard''' : Petit Slip, 18 ans, 101.9.
'''Petit slip''' : Salut, GG, bon retour.
'''Gérard''' : Ouais, voilà. Comme d'hab. Ça m'aurait étonné.
'''Max''', ''[hilare]'' : C'est pas les mêmes, Gérard. C'est toi qui es une mauvaise langue.
'''Phildar''' : C'est la liste qu'on t'a montrée tout à l'heure. Ça, c'est des noms. Ça, c'est des noms, tu vois. Merguez, petit slip, voilà.
'''Max''' : Je t'ai demandé de te mettre là. ''[les personnes changent de place, Gérard prenant une place plus près de Reego et sur une chaise permettant à Gérard de parler devant son micro sans effort, le sujet étant récurrent chez Max]''.
'''Cuvette''' : Bonsoir, Gérard.
'''Manu''' : Il t'écoute pas, hein. Il est en train de se préparer, il faut du temps.
'''Gérard''' : Et Cuvette, on peut écouter... Sur Limoul.
'''Cuvette''' : Non, Lyon.
'''Gérard''' : Bon, alors... Hop ! ''[il froisse le papier et la lance vers le standard, hilare]''. Vous me refaites la fiche. Ça commence ! Non, mais c'est bien, tu vois ?
'''Max''' : Mais t'es super énervé.
'''Gérard''' : Non, non, non, non, non.
'''Max''' : Mais tu te rends pas compte le nombre d'erreurs qu'ils font chaque soir, c'est pas pour ça que je...
'''Gérard''' : Ouais, mais attends. Faut peut-être quand même... ''[il reprend une nouvelle feuille tendue par Phildar]''. Ouais, sur Lyon, sur 87.5. Alors, c'est 98.9.
'''Max''' : Ah, oui, ça, c'est vrai. ''[applaudissements]''. Je te signale, Phildar, au passage, que t'es en train, depuis tout à l'heure, de lui balancer les fréquences de Skyrock et de NRJ.
'''Manu''' : Je crois qu'il y en a une d'Europe 2 aussi.
'''Gérard''' : Bon, enfin, bref, c'est pas...
'''Max''', ''[sarcastique]'' : C'est pas grave de donner des fréquences des autres radios. Non, c'est pas grave pour Gérard, comme d'habitude.
'''Gérard''' : Non, mais, de toute manière... On verra bien. On verra bien comment que ça se passe, de toute manière...
'''Max''' : Mais calme, ce soir, avec le sourire. Tu vas me faire le maestro, tu vas me... L'animateur radio.
'''Gérard''' : Le mastro, c'est toi qui fais la prog. Je veux pas, ni d'Olivier, ni de...
'''Max''' : Ah, si. Ah, non, mais je fais pas les deux. Je fais pas les deux.
'''Gérard''' : Tu fais les deux.
'''Max''' : Non, faut que j'écoute.
'''Gérard''' : Si tu fais les deux... Non, mais tu permets ? Pour l'instant, je parle à mon chef.
'''Max''' : Si je fais les deux, quoi ? Qu'est-ce qu'il se passe ?
'''Gérard''' : Tu fais les deux. Tu me fais les deux prog. Je veux pas de ces trois caves.
'''Max''' : Non, parce que si je suis là, tu vas profiter pour gueuler plus et me regarder, tu vas me demander de faire ton boulot. Moi, je n'interviens pas.
'''Gérard''' : Non, mais si tu vois que ça se passe mal, t'interviens quand même.
'''Max''' : T'es animateur radio, t'es payé pour ça.
'''Gérard''' : Bon, alors donc, tu restes pour les deux. C'est tout.
'''Cuvette''' : Gérard ? Oui, je voulais te dire que je suis vraiment ravi de te connaître parce que j'ai jamais eu l'occasion de discuter avec toi. C'est Cuvette, à l'appareil.
'''Gérard''' : On commence ? Donc, le premier débat, c'est sur l'affaire Bill Kinton. Vous avez tous entendu parler.
'''Térard''' : Tu pourrais rappeler les faits, Gérard ?
'''Gérard''' : Bon, tu permets, toi ? Tu vas pas commencer ! Alors, que pensez-vous de l'affaire Bill Kinton et l'affaire Morica Levins ?
'''Cuvette''' : J'ai aimé les hommes d'influence qu'il y avait derrière tout ça.
'''Tétard''' : C'est pas une bonne actrice, Morica.
'''Cuvette''' : Mais Levinson est meilleur.
'''Gérard''' : Bon, s'il vous plaît, vous répondez. Que pensez-vous de l'affaire Bill Kinton et Morica Levins ? Alors, Crevette !
'''Crevette''' : Alors, je trouve que Bill Clinton, il a pas trop assuré à ce niveau-là. Que la Monica Levins, elle aurait mieux fait de s'abstenir. Et puis, tout serait rentré dans l'ordre.
'''Gérard''' : Dans quel sens ?
'''Crevette''' : Tu veux que je te fasse des dessins en plus ? Ben, ça me paraît évident.
'''Gérard''' : Ouais, mais attends, mais attends. Ça te paraît évident, mais comment ? Mais attends, mais attends. Tu suis les informations ou pas ?
'''Crevette''' : Évidemment, mais tu les suis aussi. Donc, tu dois savoir que ça paraît évident que c'est pas cool, quoi.
'''Gérard''' : Ouais, mais dans ce cas-là, que pensez-vous de l'affaire ? Que pensez-vous de cette histoire ?
'''Tétard''' : Ouais, ben déjà, moi, je pense que Morishka Lewins, là, déjà, c'est un boudin.
'''Gérard''' : Monika !
'''Tétard''' : Pardon, pardon, Monika, Lewins, déjà, c'est un boudin.
'''Gérard''' : Ben, comment que tu peux le savoir ?
'''Tétatd''' : Parce que je l'ai vue à la télé, tiens. Franchement, elle est pas belle. Enfin, ça dépend des références que t'as, mais elle est pas très belle.
''Gérard ''' : Ben, attends, qu'est-ce que tu veux réagir par les références que j'ai ? Attends, tu veux réagir par rapport avec Sandy, c'est ça ?
'''Tétard''', ''[caricaturalement outré]'' : Pas du tout.
'''Petit slip''' : Elle est très belle, Sandy, Gérard. Alors, moi, je pense que si Morishka et Eltsine boivent trop de vodka, c'est son problème.
'''Gérard''' : Bon, alors, toi, je pense que tu vas pas continuer longtemps.
'''Petit slip''' : Ouais, pourquoi ?
'''Gérard''' : Parce que, apparemment, t'as pas compris la question.
'''Petit slip''' : Tu peux la répéter, s'il te plaît ?
'''Gérard''' : Non, là, je répète pas les questions. Alors, déjà, tu me l'attrapes lui...
'''Phildar''' : Non, mais attends, parce que je crois qu'il a confondu...
'''Gérard''' : Non, non, non, non, non, non, non, non. On va pas commencer la première. On va pas commencer comme ça. Ils vont pas me prendre la tête à me dire... Tu peux me répéter la question sans arrêt. Alors, ça, il est hors de question. ''[applaudissements de Phildar]''.
'''Cuvette''' : Moi, je suis genre... Ben, je vote plus pour Clinton, depuis, moi.
'''Gérard''' : Ouais, ben, on s'en fout de voter pour qui tu veux. Je te demande...
'''Max''' : T'as pas à voter pour Bill Kinton alors qu'il est Français, commeent il peut voter pour Bill Kinton ?
Qu'est-ce que tu penses de l'enfer... Euh... Qu'est-ce que tu penses de cette histoire ?
'''Cuvette''' : Ben, je te dis, moi, depuis, je vote plus.
'''Gérard''' : Ouais, mais attends, t'as été à New York ?
'''Cuvette''' : Ben, je... Ben, non, mais...
'''Gérard''' : Non, ben, alors, si t'as pas été à New York, je vois pas comment tu peux voter pour lui.
'''Crevette''' : Pourquoi t'as été à New York, toi ?
'''Gérard''' : Oui, moi, j'ai été à New York, j'ai été voir... J'ai été voir Godzilla.
'''Crevette''' : Alors, tu peux voter pour Bill Clinton ? T'as le droit de voter ?
'''Gérard''' : Non, mais moi, je vote pour personne. De toute manière, j'en ai rien à foutre. De toute manière, tu votes et que ça soit n'importe quoi, de toute manière, on en chie.
'''Tétard''' : T'as été à New York avec Godzilla ?
'''Gérard''' : Bon, toi, tu vas commencer à te calmer. C'est un conseil que je te donne. Bon, le point d'interrogation, s'il vous plaît, il peut aller dans le bureau ?
'''Max''' : Allez, on peut avancer dans le débat, là, que de... À chaque fois que vous ouvrez... Même les auditeurs, vous ouvrez plein de petites parenthèses à droite à gauche, mais essayez de revenir dans le débat pour que ça soit intéressant.
'''Gérard''' : Bon, par contre, s'il y a des réactions, là, sur la première question, sur le Minitel, je voudrais bien...
'''Max''' : Pour l'instant, il y a trois connectés. C'est tellement intéressant, ce que tu racontes, puisque ça n'avance pas dans le débat. Tu changes de sujet... Si vous, les auditeurs, pouvez, par contre, essayer de revenir à chaque fois, aidez-nous à rester dans le débat, plutôt que de vous en écarter toutes les deux secondes, ça nous arrangerait.
'''Petit slip''' : Moi, je vais bien donner mon avis. C'est petit slip. Donc, je pense que si Bill Clinton se fait sucer par Monica Lewinsky, c'est son droit, quoi. C'est sa vie privée.
'''Gérard''' : Ben voilà. Pourquoi tu ne m'as pas répondu quand je te l'ai posée, la question ?
'''Petit slip''' : Oh, ben, je ne sais pas. Je devais être ailleurs.
'''Gérard''' : Oh, mais attends. Si tu es ailleurs, mon pote, autant que tu restes chez toi à écouter...
'''Crevette''' : Deuxième question.
'''Gérard''' : Non, mais attends. Attends. Attends, petit slip. Si vous commencez à me prendre la tête, on n'a pas fini la première question. Tout le monde n'a pas fait le premier tour. Si, si, Crevette, tu commences à me prendre la tête, à dire, ouais, deuxième question, toi, tu vas retourner chez toi, tu vas aller dormir. Ça va aller vite. Non, non, mais moi, je vais vous dire une chose, que maintenant, ça va aller vite. Si vous ne voulez pas répondre aux premières questions, moi, ça va aller vite. Vous allez retourner chez vous.
'''Tétard''' : C'est bon, on a répondu.
'''Gérard''' : Ouais, mais pas tous... L'interrogation ?
'''Point d'interrogation''' : Allô ? Oui, donc c'est point d'interrogation.
'''Gérard''' : Bon, alors, que pensez-vous... Je répète la question, mais c'est la dernière fois, parce que je ne vais pas faire ça constamment.
'''Phildar''' : Excuse-moi, Gérard, elle appelle d'où ?
'''Manu''' : Et c'est quoi sa fréquence ?
'''Phildar''' : Parce qu'on n'a pas, sur la note, on n'a pas fiché.
'''Piont d'interrogation ''' : J'appelle de nulle part.
'''Manu''' : Et c'est quoi la fréquence de nulle part ?
'''Gérard''' : La fréquence de nulle part, c'est 0, 0, 1, c'est ça ? Ouais, c'est ça, oui. Ouais, trou du cul, tu vas voir taleur le trou du cul, ce qu'il va te faire, toi.
'''Manu''' : Il n'a pas dit trou du cul, il a dit comme ton QI.
'''Gérard''' : Bon, alors, que pensez-vous de l'affaire Bill Kinton et Monica Libiski ? Attends, c'est la dernière fois que je pose la question, parce qu'après, on enchaîne.
'''Point''' : Oui, donc, je vais te répondre. Donc, l'affaire Bill Clinton, je pense que c'est n'importe quoi, parce qu'ils font des cassettes vidéo, ils font des tas de trucs sur Bill Clinton, et ils ont même fait des poupées, Bill Clinton. Donc, je trouve que c'est vraiment n'importe quoi. Donc, voilà.
'''Gérard''' : Ok. Donc, je pense qu'il y a Reego qui me met l'IRC, c'est-à-dire ?
'''Reego''' : Oui, parce qu'il y a des réactions sur l'IRC. Alors, tout à l'heure, on me disait que Bill Clinton fait ce qu'il veut. S'il veut baiser un boudin, ça le regarde, n'est-ce pas, GG, on me dit. Et on me dit aussi que... c'est Ramsteff, il préfère l'Ara à la vodka que Monica le whisky.
'''Gérard''' : Oui, il fait ce qu'il veut. Ce n'est pas mon problème, merci Reego. Donc, on passe à la deuxième question...
Tu m'as oublié Gérard. Grosse Caisse.
'''Gérard''' : Non, mais attends, Grosse Caisse, on t'a posé... De toute manière, je voudrais bien avoir les fréquences réelles, parce que ça m'étonnerait que Nantes, on écoute Fun Radio sur 90.5.
'''Manu''' : Si, c'est ça, mais enchaîne, Gérard.
'''Phildar''' : On va chercher, vas-y. Déjà, tu demandes à Grosse Caisse, et après, toi, tu réponds.
'''Grosse Caisse''' : Oui, je pense que ce n'est pas de la faute de Bill Clinton, il est tombé dans un piège. C'est Monica qui l'a dragué, et là, il a le droit de la niquer, ça lui fait plaisir.
'''Gérard''' : Non, mais attends... Tu crois qu'à ton avis, c'est lui qui aurait fait ça ?
'''Grosse caisse''' : Bah oui, c'est lui.
'''Gérard''' : Tu ne penses pas que ce serait elle qui serait venue vers lui ?
'''Grosse''' : Bah si, de toute façon, il y avait l'attrait du fric, c'est une salope, c'est tout.
'''Gérard''' : Bah oui, mais attends, parce que là, on ne va pas... On va pas rentrer là-dedans, parce que...
'''Tétard''' : Et on va rentrer en plein dedans.
'''Gérard''' : Non, non, mais parce que... Là, je pense qu'à mon avis, c'est... C'est de sa faute à elle. Non, mais ce n'est pas de sa faute à lui, c'est de sa faute à elle.
'''Crevette''' : Et l'amour dans tout ça ?
'''Grosse caisse''' : Il n'y a pas d'amour, il y a du cul là-dedans.
'''Gérard''' : Non, mais attendez, on va continuer. Donc, que pensez-vous... Pensez-vous que ce soit utile de vendre des cassettes vidéo ? Donc, si vous avez suivi les infos quand ça s'est passé, ils ont passé des cassettes vidéo justement à ce propos-là. Alors moi, je vous demande... Qu'en pensez-vous ? Alors on va y aller gentiment. On va demander à Crevette.
'''Crevette''' : C'est quoi sur les cassettes, c'est quand on le voit baiser avec Monica, c'est ça ?
'''Gérard''' : Mais non mais attends Crevette, l'histoire de la cassette vidéo. Mais sur la cassetter... t'avais qu'à suivre les informations ! Si tu suis pas les informations, tu peux pas... dans ces cas-là, je ne vois pas pourquoi tu as appelé pour réagir. ''[elle tente de reprendre la parole, ce qui agace Gérard, pris dans sa tirade]''. Mais attends, Crevette, s'il te plaît ! Je peux te répondre ? Si tu ne comprends pas le thème du débat, on parle de l'affaire Bill Kinton. Pensez-vous que c'est utile de vendre des cassettes vidéo ? Si tu n'as pas suivi le thème du débat, si tu n'as pas suivi les informations, pourquoi tu veux réagir là-dessus ? Arrêtez de renifler comme des boucs ! Parce que ça commence à m'énerver !
'''Phildar''' : Je crois que c'est point d'interrogation, je suis désolé.
'''Point''' : Non, non, non, c'est pas moi.
'''Cuvette''' : Non, c'était Cuvette, mais il ne s'occupe pas de moi, Gérard.
'''Point''' : T'es sûr que ce n'est pas toi, Gérard ?
'''gérard''' : Oh, je voudrais Crevette. Alors, tu réponds à la question.
'''Crevette''' : Ben, c'est pas bien, voilà.
'''Gérard''' : Ah ouais, mais alors... Attends, attends, tu me dis que ce n'est pas bien. Tout à l'heure, tu me dis, ouais, mais...
'''Crevette''' : Gérard, tu veux absolument une réponse. Quand je t'en donne une, tu ne l'acceptes pas, alors je t'en donne une autre, c'est tout. C'est pas bien.
'''Phildar''' : Je voulais te demander une question, Gérard. C'était sur quelle chaîne, quand tu as vu avec les vidéos, là ?
'''Gérard''' : Alors là, sur la chaîne, je ne donne pas des...
'''Phildar''' : C'était la une ? Parce qu'en fait, je crois que Crevette, elle n'a que la deux, donc si ça se trouve, c'était sur la une.
'''Crevette''' : Moi, j'ai que la deux, alors...
'''Gérard''' : De toute manière, tout ça, c'est passé sur toutes les chaînes.
'''Crevette''' : Ah non, pas sur la deux.
'''Gérard''' : Menteuse. T'es une menteuse, c'est passé sur toutes les chaînes. Ouais, vous n'avez qu'à suivre le journal de 13h et de 20h. Grosse caisse, on ne va pas s'éterniser sur une chaîne.
'''Grosse''' : Ben, ça dépend des vidéos. Si c'est une vidéo de cul, ça peut être intéressant, voir que la teb qu'a notre ami Bill, mais si c'est des histoires de conneries d'interview, ce n'est pas intéressant.
'''Gérard''' : Ben, justement, c'est là qu'est le problème. Donc, je suis d'accord avec toi. À mon avis, je pense que ça doit être une histoire d'interview qu'on était sortis sur cassette vidéo.
'''Grosse caisse''' : Ouais, mais à ce niveau-là, l'ami Bill, il peut dire n'importe quoi dans les interviews. Vu que c'est un politicien, c'est un menteur, donc on s'en fout. C'est pas intéressant.
'''Point''' : Ben, écoute, je pense que c'est n'importe quoi, parce que faire des cassettes vidéo sur des gens politiques, ça ne regarde personne. En fin de compte, c'est la vie privée des gens et puis s'ils font des cassettes sur ça, ils risquent de faire des cassettes sur leur famille et tout, c'est pas... Je trouve que c'est vraiment dégueulasse de faire ça. Ils devraient faire un procès contre eux.
'''Tétard''' : Ouais, ben, je suis d'accord avec l'invitée mystère, et je voulais savoir, quand t'étais à New York, t'en as pas vues, toi, des cassettes de Bill Clinton ?
'''Gérard''' : Bon, alors, Tétard, bonne nuit pour toi.
'''Manu et Phildar''' : Mais c'est une question, Gérard.
'''Gérard''' : Non, mais attends, on ne l'a pas vue ! Non, les cassettes vidéo sont sorties il y a... après.
'''Tétard''' : Et on peut en avoir où, alors ? Parce que moi, je l'ai raté à la télé.
'''Gérard''' : Tu l'as raté dans ces cas-là... Tu vas dans tous les magasins qui vendent des cassettes vidéo, tu la trouveras.
'''Tétard''' : À la FNAC, ils le vendent, à la FNAC, tu crois ? Dans les FNCA et Fuck, ils le vendent ?
'''Gérard''' : J'en sais rien. Petit slip.
'''Petit slip''' : Alors, moi, je pense que c'est malsain. Ben, parce que Bill Clinton, il va se servirer, mais néanmoins, il peut commencer une carrière dans le X. Ça peut être intéressant.
'''Reego''' : Dans quel sens ?
'''Petit slip''' : Dans le sens positif.
'''Gérard''' : Ouais, alors moi, tu penses qu'avec sa femme et ses deux filles...
'''Crevette''' : Non, il n'en a qu'une.
'''Gérard''' : Non, il en a deux.
'''Grosse caisse''' Deux femmes ?
'''Phildar''' : Non, deux filles.
'''Grosse caisse''' : Non, maintenant, deux femmes.
'''Gérard''' : Bon. Bon, c'est bon. Euh, cuvette.
'''Cuvette''' : Ouais, moi, je voudrais savoir déjà s'il a des... Qu'est-ce que propage la cassette ? Elle défend Bill Clinton ou... elle l'affiche ? Et puis qui en retire profit ?
'''Gérard''' : Non, elle... Elle lui dit comme ça, d'après... Moi, j'ai vu vaguement un reportage. Non, mais il y a un reportage... Il y a un reportage, ça s'est passé dans... Ça s'est passé au tribunal, comme quoi qu'elle... Elle a insisté, comme quoi qu'il lui avait fait des propositions. Max ? Max, s'il te plaît. Tu peux essayer de me couper, là, parce que là...
'''Phildar''' : C'est l'invitée mystère qui frotte avec son téléphone.
'''Gérard''' : Taleur je vais te frotter quelque chose, toi. Bon, donc... Donc, maintenant, tout le monde a répondu. Moi, je peux vous dire une chose. Maintenant, je vais vous répondre personnellement. Oh, s'il vous plaît ! Oh Manu, Tu me gères tout le monde là, le premier portable...
'''Manu''' : Il n'y a pas de portable, c'est le point d'interrogation qui... Bah oui, je suis désolé.
'''Point''' : Non, non, c'est pas moi, hein.
'''Manu''' : Bah si, je le vois. Je le vois, sur le standard, la petite lumière verte.
'''Gérard''' : Tu le vois, bien sûr, et là, moi, j'ai un son vachement grave dans les oreilles, c'est pas possible. Ah non, mets ton caxe, Max, tu vas voir que là... Là, je vais te dire une chose, c'est impossible.
'''Max''' : Attends, silence.
'''Gérard''' : Ah là, maintenant, non, c'est pareil. Non, mais attends... Bon, donc, moi, je peux répondre à...
'''Max''' : Ah oui, ça tord un peu, effectivement, il faut... Hein ? Non, mais c'est un peu criard, effectivement, les voix, là. C'est un peu... Alors, attends, je vais te mettre là-dessus, là, comme ça, c'est mieux, là, ou pas ? C'est un peu plus faible, mais c'est plus calme, écoute.
'''Gérard''' : Ouais, mais je sais pas si les... Non, bah là, tu me coupes... Tu me coupes, là, personne m'entend. Vous m'entendez ?
'''Les auditeurs''' : Oui, on entend, on entend.
'''Gérard''' : Pas moi.
'''Max''' : Bah si, parle.
'''Gérard''' : Bah non, bah allume.
'''Max''' : Bah écoute, c'est parce que je t'ai mis le son province. Vas-y, parle-leur.
'''Gérard''' : Mais ils m'entendent pas.
'''Max''' : Mais ils t'entendent, on t'entend.
'''Les auditeurs''' : On t'entend, Gérard.
'''Gérard''' : Attends, moi, j'ai plus rien, là.
'''Max''' : Bah, parce que j'ai baissé... Parce que j'ai mis le son différent. Mais si tu veux, je peux remettre... Alors, je te remets celui-là. Bon, bah d'accord, ok. Bah, à ce moment-là, tu baisses dans le casque, alors.
'''Gérard''' : Ok. Donc, moi, je peux vous dire que ces histoires de cassettes vidéo et tout ça, pour moi, c'est de la merde. Ça sert à rien de s'en prendre sur une personne pour vendre des trucs de cul. Parce que la personne fait ce qu'il veut. Bon, en fin de compte... Mais attendez, attendez, laissez-moi répondre. Moi, je vais vous donner la réponse. C'est que là, c'est une histoire, on sait pas comment ça va se terminer. C'est une histoire sans queue, sans tête. Ni queue, ni tête, en fin de compte. C'est une histoire ni queue, ni tête. On sait pas s'il va rester. S'il va partir ou autre. Donc là, on va en revenir. On va continuer le thème du débat. Donc, moi, je vous demande la question. Et j'espère... Oui ?
'''Phildar''' : Excuse-moi, Gérard. Donc, Cuvette est parti parce qu'en fait, il avait un téléphone pourri. Donc, on l'a dégagé. On a dit que c'était mieux pour le débat. Et on a Coussin d'air à la place, qui a 27 ans et qui appelle de Guadeloupe.
'''Gérard''' : Ouais, non, mais attends. Attends, Phildar. Une chose. Une chose que je vais vous demander. N'essayez pas de changer les noms.
'''Phildar''' : Non, non, non, c'est pas le même.
'''Gérard''' : ...et qu'ils reprennent sous un autre nom. Parce que là, vous avez 24 lignes qui sonnent. Ça sonne. Donc, prenez-moi des gens sur les 24 lignes.
'''Phildar''' : Coussin d'air, tu marques à la place de Cuvette. Donc, Coussin d'air. ''[en mode dictée, tandis que Gérard écrit]'' C-O-U-S-I-N. A-I-N.
'''Gérard''' : A-I-R ! Merci. Conssin d'AIR !
'''Manu''' : Oui, mais... Coussin d'air. A-I-N.
'''Gérard''' : Ouais, merci. Coussin d'air, c'est C-O-U-S-I-N. Merci. Merci, Phildar, pour ton orthographe. Donc, je vous pose la...
'''Phildar''' : Tu peux lui dire bonjour.
'''Gérard''' : Bonjour à toi, Coussin d'air.
'''Coussin''', ''[après 3 secondes, voix saturant comme sur un téléphone mobile]'' : Bonsoir.
'''Gérard''' : Tu te réveilles ?
'''Grosse caisse''' : Il aurait dû s'appeler Airbag.
'''Phildar''' : Non, mais il a un décalage, Gérard. Il est en Guadeloupe.
'''Tétard''' : Attends, on va te dire un truc. Tu vas le recevoir dans deux secondes. Bouge pas.
'''Coussin''' : Allô ?
'''Gérard''' : Oh ! Bon, allez, hop.
'''Manu''' : Parle-lui, Gérard.
'''Gérard''' : Ouais, non, mais attends. Ça veut dire quoi, là ? Oh ! Phildar ! Non, mais attends. Coussin d'air, t'es là ? Non.
'''Coussin''', ''[après 1 seconds]'' : Ah oui, je suis là.
'''Gérard''' : Non, il n'est pas là. Bonne nuit, bonne nuit. Allez ! Bonne nuit ! Allez ! Oh mais merde ! ''[Manuparodie une note de méditation zen, Max tente de reprendre la parole]''.
'''Max''' : Gérard, Gérard, Gérard. Gérard. Gérard. Il appelle de Guadeloupe. Donc, il y a un décalage d'une seconde. C'est normal, il reçoit après. Ça ne t'est jamais arrivé d'appeler, toi, à l'étranger, d'avoir une demi-seconde de décalage ? Bon, ben, tu m'entends, Coussin d'air ?
'''Coussin''', ''[1 seconde après]'' : Oui. Oui, je t'entends.
'''Max''' : Voilà. Il y a une demi-seconde de décalage, c'est tout. Lui, avec le décalage qu'il y a... Écoute-moi, Gérard. Gérard. Gérard. Avec le décalage qu'il a, ce monsieur du Guadeloupe, Coussin d'air, si je ne me trompe pas, toi, pour toi, on fait encore l'émission du matin. Le problème, c'est qu'il ne sait pas quand il va passer le soir. Il croit qu'on fait encore l'émission du matin, parce qui est un décalage tellement long en Guadeloupe que pour lui, il y a une semaine de retard, les émissions.
'''Coussin''' : Oui, c'est ça, absolument. Une semaine de retard, oui.
'''Gérard''' : D'accord, une semaine de retard. OK, merci.
'''Coussin''' : Je t'en prie.
'''Gérard''' : À quoi servira cet argent vendu par ces cassettes ? Alors, on va demander à Crevette.
'''Crevette''' : Ça va servir à payer ses frais d'avocat.
'''Gérard''' : D'accord. T'es à côté de la plaque.
'''Crevette''' : Ah ben, excuse-moi. C'est ce que j'avais entendu.
'''Gérard''' : Eh, au sondage, vous vous la fermez...
'''Manu''', ''[indigné, puis ferme]'' : On n'a rien dit. Reprends ton débat, Gérard, On n'a rien dit, alors vas-y.
'''Gérard''' : Donc, Crevette ?
'''Crevette''' : Oui, moi, j'ai entendu dire, en fait, il y a des acteurs qui ont filé de la thune à Bill Clinton pour qu'il paye son procès, ses frais de procès. Et l'argent des cassettes irait aussi pour payer les frais de procès. Ainsi que tous les gadgets vendus en sex-shop.
'''Gérard''' : Ah non, mais on parle de la cassette. La cassette vidéo, on ne parle pas des... Non, mais on ne parle pas des histoires de gadgets ou autres. Moi, je te parle de la cassette vidéo. Ok. Grosse caisse ?
'''Grosse caisse''' : Ben, ça fera de l'argent à Bill Clitoris. Comme ça, il pourra s'acheter de nouveaux trucs, des godes et tout ça pour sa femme. Ça pourrait être vachement sympa. Puis, peut-être une nouvelle paire de chaussettes pour l'hiver. Tu sais jamais.
'''Gérard''' : Ouais, d'accord. Point d'interrogation ?
'''Point''', ''[entrecoupée par les rires et les gens qui pouffent bruyamment]'' : Alors, je pense que... Cet argent, j'espère que lui, il va en faire bon usage pour les associations humanitaires ou quand même autre chose.
'''Tétard''' : Mon cul, ouais.
'''Gérard''', ''[rageux]'' : Attendez, attendez. Qui c'est qui vient de dire mon cul et qui rigole comme un con ? Alors, maintenant, Grosse caisse, Tétard et Petit slip, maintenant, c'est à vous trois que je m'en prends.
'''Grosse caisse''' : On n'a pas dit un mot.
'''Gérard''', ''[menaçant]'' : Alors, lequel qui rigole derrière ? Lequel ?
'''Max''' : Et comment tu veux qu'ils te répondent ? Parce qu'ils savent très bien que s'ils disent qui l'a fait, il va se faire virer. Donc, le mec, il répond pas.
'''Petit slip''' : Ouais, c'est Polo, c'est Polo. Si, si, c'est moi, c'est Polo.
'''Max''' : Bon, ben voilà, c'est bien qu'il l'ait dit, c'est bien.
'''Gérard''', ''[frustré]'' : Non, mais attends, ça commence à... Là, on va pas commencer comme ça, Phildar. Parce que tout à l'heure, moi, je vais prendre sur les 24 lignes.
'''Max''' : Mais arrête de faire allusion aux 24 lignes. Reviens dans ton débat, c'est bien depuis tout à l'heure.
'''Gérard''' : Donc, grosse caisse. Donc, toi, tu la fermes, toi. Toi, t'as répondu, point d'interrogation.
'''Point''' : Oui, donc, je t'ai répondu. J'espère que cet argent, il va en faire bon usage pour les aides humanitaires.
'''Tétard''' : Ouais, ben, je pense qu'avec la thune qu'il a faite, il va pouvoir se payer d'autres prostituées pour se faire éponger, quoi.
'''Gérard''' : Alors, Tétard, je vais te dire une chose. Pour l'instant, ça fait deux fois.
'''Tétard''' : Ben, attends, il l'a payée...
'''Gérard''' : Ça fait deux fois ! Il a rien payé.
'''Max''' : Il a pas le droit de répondre ça, maintenant ? Il faut donner des bonnes réponses ? Il fait ce qu'il veut, il répond ce qu'il veut. C'est un jeu ou quoi, ton truc ?
'''Gérard''' : Non, mais attends, je vais voir. Parce qu'il y en a certains qui répondent à côté de la plaque.
'''Max''' : Non, ils répondent ce qu'ils ont envie de parler, ce qu'ils pensent.
'''Gérard''' : Ben, alors, Tétard, pour toi...
'''Tétard''' : Ben, il l'a payée, Monica Lewinsky, pour se faire éponger. Il l'a payée.
'''Gérard''' : Ok, ok, ok, c'est bon, c'est bon.
'''Max''' : Tu lui enlèves la croix.
'''Petit slip''' : Alors, moi, je pense que, à ce que j'ai entendu dire, que ça irait directement au don du Front de Libération des Nains de Jardin.
'''Grosse caisse''' : Ouais, c'est vrai.
'''Crevette''' : Ouais, enfin, ça, c'est une rumeur.
'''Gérard''' : Quoi, quoi, quoi, quoi, quoi, quoi ? Attendez, attendez, qui c'est qui réagit derrière Petit Slip ? Ouais, Crevette ?
'''Crevette''' : Oui, je te dis, c'est une rumeur, les Nains de jardin. Mais bon...
'''Grosse caisse''' : Moi, j'ai entendu dire ça, moi. C'est une rumeur qui court. c'est la vérité.
'''Coussin''' : Oui, Gérard. Moi, je crois qu'avec l'argent, il va réparer sa voiture et s'acheter des lacets.
'''Gérard''' : Bon, alors, moi, je peux vous dire une chose, que... Non, mais attends, Coussin d'Air, je pense que t'as vachement de... T'es vachement pas au courant de l'histoire.
'''Max''' : Il est en Guadeloupe, c'est pas encore arrivé, l'histoire.
'''Gérard''' : Donc, moi, je peux vous dire une chose, qu'à mon avis, je pense que...
'''Max''' : C'est Georges qui va l'amener, le scoop, là-bas. Georges. Ben, le tourbillon, là. Georges Bush.
'''Gérard''' : Ouais, ben, ça, cette histoire-là, je veux pas en entendre parler, parce que j'ai eu des...
'''Max''' : D'accord. Revenons, revenons au débat.
'''Gérard''' : Donc, je pense que, à mon avis, là, je pense que... Je suis d'accord avec le point d'interrogation, donc je pense qu'il devrait faire moins... L'argent qu'il va recevoir, on sait pas combien, mais je pense qu'il ferait mieux de s'occuper des associations humanitaires, c'est-à-dire moins... que les mômes, ils n'ayent pas de flingues, et tout ça, et qu'ils s'amusent pas à fumer, et autres. Donc, à mon avis... ''[applaudissements du studio]'' À mon avis, là-dessus, je pense qu'on sait pas encore. On sait pas, parce que, là, pour l'instant, ils en reparlent pas trop à la télé.
'''Max''' : Ben, là, il est une heure et une, peut-être.
'''Gérard''' : Mais on pense que... Je pense que cette histoire est loin d'être terminée, donc on verra bien par la suite. Donc, je vous pose d'autres questions, vous allez réfléchir. Donc, la quatrième question. « Croyez-vous que les journalistes s'occupent trop de la vie privée des stars ? » On va demander à Crevette... Non, on va pas demander à Crevette, on va demander à Coussin d'air, tiens.
'''Coussin''' : Moi, je crois que, en ce qui concerne les journalistes, ils font... Effectivement, ils s'occupent trop de la vie des autres journalistes qui sont stars.
'''Gérard''' : Ouais, mais... Dans ce cas-là, moi, je vais te poser... Mais attends, attends, Coussin d'air. Coussin d'air, je vais te demander... Coussin d'air, je vais te poser une question : est-ce que tu crois que, là-bas, vers chez toi, est-ce que t'as des journalistes qui s'occupent... qui s'occupent des personnes ?
'''Coussin''' : Alors, écoute, oui, il y a effectivement des journalistes. Moi, je vois, il y a eu le cas du chanteur Francky Vincent...
'''Gérard''' : Non, non, mais attends, Francky Vincent, c'est pas pareil. Parce que, vas-y, Francky... C'est bon, c'est bon. Ouais, vas-y, Francky, c'est bon, c'est bon. Non, mais attends, Coussin d'air, moi, je te demande, là-bas, en Guadeloupe, est-ce que vous avez des journalistes qui s'occupent des stars ?
'''Coussin''' : Alors, c'était ma réponse, justement. J'étais en train de t'expliquer qu'il y a chez nous des journalistes qui, effectivement, se sont occupés de très, très près de Francky Vincent...
'''Gérard''' : Non, mais pourquoi tu parles de... Francky Vincent...
'''Crevette''' : c'est une star en Guadeloupe.
'''Gérard''' : Non, mais attends, rCevette. Mais attendez, attendez, pourquoi vous... Vous voulez parler de, tout de suite, Francky Vincent ? Vous avez... Mais vous avez d'autres chanteurs guadeloupéens, comme la compagnie Créole, tout ça ?
'''Manu''' : Il y a Demis Roussos, aussi.
'''Tétard''' : Adamo, Adamo...
'''Gérard''', ''[irrité par cette moquerie, soulignée par un élcat de rire de Reego]'' : Non, Demis Roussos... attends. Occupe toi du standard, toi.
'''Reego''' : Adamo, Adamo.
'''Coussin''' : Gérard, il faut que tu saches qu'ici, en Guadeloupe, de Pointe-à-Pitre à le Gosier, c'est Francky Vincent... Francky Vincent, la star.
'''Gérard''' : Attends, jusqu'où, tu m'as dit ? Je connais pas.
'''Manu''' : C'est juste en dessous de la langue.
'''Coussin''' : Et donc, voilà. Du fait que Francky Vincent soit une star, alors forcément, tous les journalistes s'en occupent, ils lui offrent des cadeaux...
'''Gérard''' : Ouais, non, mais attends, Coussin d'air, Coussin d'air, Coussin d'air, je vais pas... On va pas trop s'appuyer sur tout ça. Bon, moi, si je te dis, la compagnie Créole, qu'est-ce que ça donne, là-bas, en Guadeloupe ?
'''Max''' : Ce qui est bien, c'est que ça a super à voir avec le débat de...
'''Gérard''' : Non, non, non, non, parce qu'il veut parler de Francky Vincent, on va vite abréger.
'''Coussin''' : C'est-à-dire que la compagnie Créole, il n'y a plus que les vieux qui écoutent ça. Si tu veux, c'est assez ringard, maintenant, chez nous. Et celui qui cartonne vraiment, c'est Francky Vincent. Celui qui chante, tu sais, « Vas-y, Francky, c'est bon. Vas-y, Francky, c'est bon, bon, bon. »
'''Gérard''' : OK, OK, OK, Coussin d'air. Donc... ''[la musique de Haut-les-mains de la compagnie Créole, dans le refrain, apparaît. Coussin d'air reprend l'air et quand la musique est baissée puis interrompue, il continue, sans s'arrêter, reprenant en boucle trois fois le refrain, en solo, avec des paroles approximatives. Gérard, frustré mais patient, cherche à l'arrêter en citant son nom]''.
'''Max ''' : On peut reprendre le débat là, parce que les auditeurs vots zapper là... Zappez parce que là c'est pas possible.
'''Gérard''' : Petit slip, donc pour toi, croyez-vous que les journalistes s'occupent trop de la vie privée des stars, donc on va pas essayer de reprendre sur les stars de chansons, on reprend sur l'affaire Bill Kinton. ''[silence]'' Bon, petit slip une fois, petit slip deux fois, petit slip trois fois, au revoir !
'''Manu''' : C'était moi, c'est moi, désolé. Non, pas taper, c'était moi, je m'excuse. On reprend.
'''Gérard''' : Alors tu me mets tout le monde...
'''Manu''' : Ça y est, ça y est.
'''Gérard''' : Voilà, alors petit slip pour toi.
'''Max''' : On va les foutre en quarantaine.
'''Petit slip''' : Alors donc, moi je pense que les journalistes vont trop loin, puisqu'ils interviewent encore Elvis Presley, Bob Marley, Jimi Hendrix, quoi. Les salauds.
'''Gérard''' : Non mais attends, je te parle de l'affaire Bill Kinton, je te parle pas des chanteurs. Bon alors petit slip, c'est bon, je vois qu'apparemment tu t'endors.
'''Petit slip''' : Oh non, non, je suis réveillé. ''[blanc]''
'''Grosse caisse''' : Allez Gérard, on se réveille.
'''Gérard''' :Non mais c'est vous qui allez vous réveiller, parce que là pour l'instant... On parle pas des chanteurs, on parle de l'affaire Bill Kinton, ok ?
'''Petit slip''' : Ben toi Gérard, en tant que chancelier de l'Allemagne<ref name="explic1"></ref>, qu'est-ce que t'en penses de tout ça ?
'''Gérard''' : Non mais alors pour l'instant, Tétard. Bon alors Tétard, qu'est-ce que t'en penses toi ?
'''Tétard''' : Moi je pense qu'effectivement les journalistes, ils s'occupent beaucoup trop de la vie privée des stars, je pense que tu fais référence aux paparazite.
'''Gérard''' : Non, non, non, non, non, attends.
'''Tétard''' : Si, si, forcément. Je voudrais que tu nous racontes ton expérience personnelle, et il faut lutter contre l'illettrisme en France, oui.
'''Gérard''' : Non, alors là je te répondrai pas là-dessus. Non, non, je te répondrai pas. Grosse caisse. Point d'interrogation ?
'''Point''' : Oui, je pense que là ils s'occupent un peu trop de la vie privée des gens, parce que... Parce que quand tu vois ce qui s'est passé avec Michael Jackson ou même Madonna je crois que...
'''Gérard''' : Non mais attends, toi t'es à côté de la plaque aussi, toi. Non mais t'as fumé la moquette durant l'Allemagne ?
'''Point''' : Non, non, ça m'arrive de fumer la moquette, mais pas...
'''Gérard''' : Ouais, je serais que toi je fumerais le cigare à moustache. Ouais, je crois que t'as fumé le cigare à moustache, hein.
'''Point''' : Donc pour te répondre, je pense que les journalistes ils s'occupent un peu trop des gens et ce qu'ils font c'est pas... C'est que ça regarde personne, quoi. En fin de compte, ils sont toujours là, dès qu'il y a une star qui arrive, ils sont toujours ici.
'''Gérard''' : Mais attends, point d'interrogation. Je crois que t'as pas... Non mais t'as pas compris. Hé, celui qui parle derrière, tu te la permets, parce que tout à l'heure tu vas retourner au standard, ça va aller vite. Bon, moi je te parle... Croyez-vous que les journalistes s'occupent trop de l'affaire des stars ?
'''Point''' : Justement, les journalistes, ils s'occupent un peu trop de la vie privée des gens.
'''Gérard''' : Dans quel sens ?
'''Point''' : Dans le sens qu'ils sont toujours là, dès qu'il y a une voiture qui passe, qu'ils sont dedans, ça y est, ils sont là, avec les photographes et tout, hein.
'''Petit slip''' : Il y a une Mercedes, là, qui a eu un accident, là...
'''Gérard''' : Bon, toi tu la perds ! Tu la fermes ! Toi, avec ta Mercedes, tout à l'heure, tu as dégagé, ça va aller vite, mais... Tu vas pas durer longtemps ! Bon, je sens qu'on va virer... Grosse caisse. Alors, grosse caisse, tu réponds ? Bon, hé ! On y va, on y va, hein ! Hé, on accouche !
'''Manu''' : Gérard, Gérard, Gérard, j'ai un petit truc pour revenir dans le débat, si tu veux. Donc, on a posé la question aux Français, que pensez-vous de l'affaire... Levinsky... ''[Gérard cherche à l'interrompre avec du non]'' s'il te plaît... Mais, laisse-moi lire mon sondage !
'''Max''', ''[agacé]'' : Mais attends, mais c'est une vraid question, rholàlà ! Tu veux faire avancer ton débat, ou c'est comme avant, c'est...
'''Gérard''' : Non, mais attends, parce qu'à mon avis, c'est eux qui ont fait ça.
'''Max''' : Attends, on va écouter, on va voir, on va juger.
'''Manu''' : À la question, que pensez-vous de l'affaire, Vivisky ? Donc, les Français ont répondu...
'''Gérard''' : Levinsky !
'''Manu''' : Levinsky ! Ok, excusez-moi, prononciation.
'''Max''' : Si tu ne sais pas le dire, demande-lui, ouais.
'''Manu''' : Donc, ils ont répondu non à 50%, mais pourquoi à 49% et 1% a dit : « Moi je pense que vu la circonstancialité du monde à notre époque, pourquoi ne pas envisager de répondre par la négation ? ». Et j'aimerais savoir ce que t'en penses.
'''Gérard''' : Bon, ça, j'en ai rien à foutre. Tte manière, à mon avis, c'est toi qui a... Bon, allez. On va demander à Grosse Caisse, parce que...
'''Max''' : On a fait ça sur les trottoirs du bois de Boulogne, hier, dans la nuit.
'''Petit slip''' : C'est quoi, Gérard, que tu vaux au bois de Boulogne ?
'''Gérard''' : Ouais, c'est toi qui viens de le marquer, connard ! Hé, tu me prends pour un con, là ?
'''Phildar''' : Non, je t'y laisse.
'''Gérard''' : Non, tu m'y laisses ? Bah, tu ferais mieux d'aller voir où c'est ta 205, abrouti. Occupe-toi de ton cul. ''[Applaudissements)''. Grosse Caisse, allez, on active, là, sur la question, là, parce que je pense que personne ne veut réagir. Bon, allez, Grosse Caisse !
'''Grosse caisse''' : Ouais, ouais, je suis là, je te parle. Bah, il y a un problème, c'est qu'aux Etats-Unis, c'est vachement trop libéral, comme pays, alors ce qui fait que les médias, ils font n'importe quoi, ils font chier n'importe qui, n'importe comment.
'''Crevette''' : Moi, je pense que c'est normal que les stars on connaisse leur vie privée, parce que c'est des personnages publics, et elles doivent être exemplaires, et donner l'exemple aux gens, donc c'est tout à fait normal de savoir si Bill Clinton se fait sucer la bite ou si Elton John est pédé.
'''Gérard''' : Bon, alors, je vais te dire une chose, Crevette, tu vois, là, moi, je te réponds tout de suite, et là, je vais te dire que là, t'as tout faux. Oh, s'il vous plaît, derrière, on se la ferme.
'''Max''', ''[hilare]'' : Gérard sait très bien si Elton John se fait sucer la bite.
'''Gérard''' : Là, ça, c'est une histoire. Non, mais c'est vrai. Attends, celle qui rigole comme... celle qui rigole ou autre...
'''Tétard''' : Non, mais Gérard, il a raison, on ne veut pas savoir que Mick Jagger, il encule David Bowie.
'''Max''' : Bon, allez...
'''Petit slip''' : Il encule Gérard.
'''Max''' : Ah, non, bon, alors là.
'''Gérard''' : Allez, hop. Dehors, dehors pour lui. Allez, hop. Cherche pas, tu me sors...
'''Manu''' : T'as compris, tu sors de chez toi, dehors.
'''Gérard''', ''[rageur]'' : Non, non, vous faites le boulot correctement, sinon, c'est moi qui le fais.
'''Max''', ''[retenant son rire]'' : Tu peux pas faire ton débat et ton ton standard d'émission.
'''Phildar''' : Donne un chiffre entre 1 et 6.
'''Gérard''' : Non, non, je veux pas le savoir. Tu me prends...
'''Tétard''' : C'était Pépito.
'''Manu''' : Dehors, Pépito.
'''Phildar''' : Bonne nuit, Pépito.
'''Max''' : T'as qu'à prendre Granola à la place.
'''Gérard''' : Voilà. Donc, moi, je peux vous dire une chose, parce que les journalistes s'occupent trop des affaires des personnes haut placées. Et ça... Non, mais ça, c'est un truc qui me dégoûte, parce que j'ai encore regardé un reportage ce soir, ça me prend la tête.
'''Manu''' : C'était X-file, non ?
'''Gérard''' : Non, non, X-file... Merci, t'éteins ton micro.
'''Manu''' : Je te demande, c'est tout.
'''Gérard''' : T'éteins ton micro, parce que X-file, je l'ai pas regardé. Donc, moi, je peux vous dire une chose, que là, là-dessus, ça... Ça me prend la tête. Ah ouais, que pensez-vous des Français... Alors, t'en as qui disent à 100%. Ah ben ouais, les Français, ils se débrouillent bien. De l'autre côté, t'en as 50% qui disent « Oh ben non, maintenant, on s'en fout, on regarde pas la télé, ceci, cela. » Donc, bref, passons. ''[fou rire du studio, applaudissements]''.
'''Max''' : Mais c'est extraordinaire !
'''Gérard''' : Non, mais moi, j'en ai rien à foutre, moi, de toute manière... De toute manière, on a voté, on en chie, on en chiera toujours. Et que ça soit dans n'importe quel pays, de toute manière, on va en chier partout.
'''Max''' : De toute façon, et je me demande même, je m'aventure un peu, je me demande si Chichi se fait pas des fois un petit peu..il a pas des gâteries dans le bureau ovale. On revient dans le débat.
'''Gérard''' : Non, mais ça, moi, je vais te répondre tout de suite à ta question. S'il vous plaît, merci !
'''Tétard''' : La pipe au sac à main.
'''Gérard''' : Tout à l'heure, y'en a un qui va dire la pipe au sac à main au standar, il va être clair et net. Donc moi, je peux répondre à ta question, de toute manière, on l'a voulu, on l'a. Maintenant on en chie. Et on va en chier pendant cinq ans.
'''Max''' : Eh, moi, je propose, la semaine prochaine, on fait un débat sur les pattes d'ef et sur la politique. Bon, alors, question suivante, on revient dans le débat.
'''Gérard''' : Mais c'est pas pour ça qu'on va avoir des augmentations ou autres et que tout va baisser. Au contraire.. Donc, pensez-vous que le président des USA sera démis de ses fonctions ? Donc, on va demander à Crevette.
'''Crevette''' : Ouais, je sais pas, Gérard, je suis pas voyante, je sais pas.
'''Gérard''' : Non, non, mais on s'en fout d'être voyante ou pas voyante, on en a rien à cirer.
'''Crevette''' :''' ''' : Je ne sais pas, Gérard, je ne sais pas s'il va être démis. Je fais pas partie du Congrès, je prends pas de décision aux Etats-Unis, je suis même pas américaine, donc je ne sais pas.
'''Gérard''' : Non, mais de toute manière, t'as pas besoin d'être américaine ou autre, tu peux très bien réagir vis-à-vis des informations que t'écoutes.
'''Crevette''' : Oui, mais bon, je ne sais pas, c'est pas moi qui prends la décision.
'''Gérard''' : D'accord. Grosse caisse ?
'''Grosse caisse''' : Ouais, bah, en fin de compte, je sais, j'ai une exclu, en fin de compte, je sais que Clinton, c'est pas lui qui va se faire virer, il va se désister, il va tourner dans une nouvelle série, au lieu de s'appeler X-Files, ça s'appellera X-Clinton, ça sera du cul, 100%.
'''Gérard''' : Alors, Grosse caisse, tu sais ce que tu me fais ?
'''Grosse caisse''' : Bah, j'ai pas une grosse caisse.
'''Gérard''' : Non, mais tu vas aller faire un gros dodo, tu vas retourner voir Phildar ou Manu qui t'ont...
'''Grosse caisse''' : Non, mais tu voulais des réponses, t'en as une ! C'est de la censure, t'es pire que le CSA, toi !
'''Gérard''' : Bon, alors tu dégages.
'''Phildar''' : C'est ça, pas de marque ! Pas de pub, pas de pub !
'''Gérard''' : Terminé, terminé, terminé pour lui. Terminé, tu le vires, tu me reprends quelqu'un d'autre. Terminé...
'''Phildar''' : Qu'est-ce que j'en fais ? Il a pas de contrat à Fun, je peux pas le vorer.
'''Gérard''' : TERMINÉ ! Eh ! Tu fais gaffe, sinon je vous vire tous les deux. Tu fais gaffe, sinon je vous vire tous les deux du standard. Alors, tu le vires. Point d'interrogation. Attendez, attendez, attendez, avant de répondre, peut-être une question IRC, non, Reego ?
'''Reego ''' : Oui, il y a des gens qui me demandent : si un jour tu deviens président, est-ce que tu te laisseras aller, toi aussi ? Est-ce que tu tromperais Sandy ?
'''Gérard''' : Ça, c'est un truc... C'est un truc personnel, donc je peux pas te répondre tout de suite.
'''Reego''' : On me dit aussi, vu que Sandy est déjà un bout... Enfin, non...
'''Gérard''' : Non, non, non ! Vu que Sandy est déjà un boudin, alors c'est qui qui a... Attends, attends, attends, s'il vous plaît, merci au standard. C'est qui qui a sorti ça au standard ?
'''Reego''' : C'est un mec qui s'appelle Reego, je sais pas qui c'est.
'''Gérard''' : Ah, Reego, c'est pas toi ?
'''Reego''' : Non, il y en a plusieurs, il y en a plusieurs.
'''Gérard''' : Donc, on revient sur le débat, donc point d'interrogation.
'''Point''' : Oui, bah... Attends, j'ai pas compris la question, déjà.
'''Tétard''' : C'est bête.
'''Gérard''' : Bon, attends, je te préviens, Grosse caisse, je le veux plus. Tu me reprends quelqu'un d'autre, hein ? Pas sous un autre nom. Alors, pensez-vous que... Que le président des USA sera démis de ses fonctions ?
'''Point''' : Oui, je pense qu'il sera sûrement... Soit c'est lui qui partira, ou s'il y a eu un jugement, je pense qu'il va sans doute en avoir un autre, je pense que c'est les juges qui vont juger, d'essayer de savoir s'il est coupable ou pas.
'''Gérard''' : D'accord. 5 minutes, oui ?
'''Manu''' : Oui, 5 minutes, donc on accueille Gicleur à la place de Grosse Caisse.
'''Gérard''' : Bon, de quelle ville ?
'''Gicleur''' : De quelle ville ? Grenoble.
'''Gérard''' : La fréquence ?
'''Gicleur''' : 98.8. C'est tout ? Tu veux savoir si je suis marié, non ?
'''Gérard''' : Bon, Gicleur, tu vas commencer à te la fermer, parce que je vais contrôler la fréquence tout à l'heure.
'''Gicleur''', ''[couvert par Gérard qui veut enchaîner]'' : Attends, qu'est-ce que tu vas me contrôler ? oh tu vas pas en plus me traiter de menteur, déjà que tu m'appelles à cette heure-ci... alors c'est gentil, quoi.
'''Gérard''' : Oh, si t'es pas content, tu retournes au standard, d'accord ?
'''Max''' : Il vient d'arriver, attends, ça fait 3 secondes qu'il est là. Parce que maintenant, t'as même plus confiance aux auditeurs qui te donnent les fréquences, tu veux vérifier, toi ?
'''Gérard''' : Ouais, mais attends, parce qu'avec eux... Je suis con ? Avec un con comme moi, on s'amuse, avec un con comme toi, on se fait chier. Et con, ça veut dire champion olympique de natation.
'''Max''' : Non, mais maintenant, c'est bon, Grenoblois, maintenant, on va rentrer dans le thème du débat, si c'est pour foutre le bordel, il va redégager pour de bon...
'''Gérard''' : Allez, vas-y, tu réponds à la question ?
'''Gicleur''' : Ouais, ben, tu peux répéter la question, c'est Manu qui m'a appelé, j'ai pas pu entendre.
'''Gérard''' : Non, ben, je répète pas la question. Hop, basta. Ah non, mais attends, Manu, les mecs, s'ils écoutent la radio, ils...
'''Manu''' : Oui, mais je l'ai rappelé juste au moment où tu posais la question.
'''Gérard''' : Ouais, mais attends, eh, moi, il me reste plus que 6 minutes à...
'''Manu''' : Et ben, répète ta question, et puis on envoie le son, on y va.
'''Max''' : Quand je te dis que le débat finit à 1h30, tu peux aller jusqu'à 32.
'''Gérard''' : Pensez-vous que le président des USA sera démis de ses fonctions ?
'''Max''' : Encore, t'en es que là ?
'''Gérard''' : Ben oui, mais attends, mais...
'''Crevette''' : Mais il avance pas.
'''Gicleur''' : Bah, écoute, moi, je pense qu'il va rester, parce qu'apparemment, les Américains veulent le garder. Et que c'est pas parce qu'il a fait une petite pipe qu'il est pas capable de gouverner son pays. Enfin, je pense.
'''Tétard''' : Ouais, ben, moi, je pense que le président des United States, là, machin, je sais pas quoi, là, il va être remis de ses onctions, ouais. Et il l'aura bien mérité, d'ailleurs, n'est-ce pas ?
'''Gérard''' : Oh, putain, hé, oh ! Hé, tu peux me la moquer, toi ?
'''Tétard''' : Ben quoi ? Tu me demandes s'il va être remis de ses jonctions, je te dis que oui.
'''Gérard''' : De ses fonctions !
'''Tétard''' : De ses fonctions, c'est pareil, c'est pareil, ouais, ouais, pas du tout, ouais.
'''Gérard''' : Bon, d'accord, apparemment, je crois que t'es... Euh, petit slip ?
'''Petit slip''' : Ben, moi, je pense qu'il est déjà démis de ses fonctions, puisqu'il est mort, John Kenedy.
'''Gérard''' : D'accord, alors, toi, tu peux dégager. Toi, c'est... Ça y est, c'est bonne nuit pour toi.
'''Petit slip''' : Bonne nuit, bonne nuit, bonne nuit.
'''Gérard''' : Bonne nuit, au revoir. Tu dégages. Euh, coussin d'air ?
'''Coussin d'air''' : Eh bien, moi, je crois que ce serait dommage qu'il soit démis de ses fonctions, parce que, maintenant, tout le monde est au courant aux États-Unis et dans le monde, alors, tu imagines pas le président aller à l'ANPE <ref name="hist1"></ref> et dire bonjour, etc., et les filles auront peur, il pourra même plus aller voir les prostituées, parce qu'il aura cette affaire de pipe, et forcément, les pipes, bon, ça engage à rien, ça entretient l'amitié, c'est pas méchant, et forcément, moi, je crois qu'il... Il devrait rester au pouvoir, hein.
'''Gérard''' : Ouais, mais cinq minutes, s'il vous plaît, merci. Bon, euh, je vais vous répondre après, mais, pour l'instant, moi, je peux vous dire qu'à mon avis, il sera des... Il restera, mais il faut attendre l'histoire, parce que c'est un peu trop long.
'''Gicleur''' : Mais toi, tu continues toujours à faire de la radio, pourtant.
'''Gérard''' : Ouais, mais ça, c'est mon problème, c'est pas le vôtre. Donc, il faut pas confondre la radio et...
'''Coussin''' : C'est parce que tu suces, c'est pour ça.
'''Gérard''' : Non, non, mais attends. Non, il y a tu suces et tu suces pas.
'''Manu''' : Bon, Gérard, à la place de Petit Slip que t'as dégagé, on accueille donc Serpillière.
'''Gérard''' : Ouais, bah d'accord. Alors, Manu... Non, non, mais Manu... Non, non, Manu, moi, je vais te dire une chose. Tu vois ? Là, ce que t'es en train de me faire, tu changes les noms.
'''Manu''' : Non, j'ai rappelé quelqu'un d'autre.
'''Gérard''' : Non, non, non, non, non, non, non, non, tu l'as repris, tu lui as dit. Au lieu de t'appeler Petit Slip, tu vas s'appeler Serpillière.
'''Max''' : Ceci dit, un slip, un slip, c'est un peu une Serpillière, quelque part.
'''Manu''' : Surtout ceux de Gérard.
'''Gérard''' : Moi, je vais sélectionner pour le deuxième débat.
'''Max''' : Parce que Gérard, il sait très bien, il met des Serpillières à la place de Petit Slip, il peut dire que...
'''Gérard''' : Donc, on va prendre Serpillière.
'''Manu''' : Voilà, et tu verras que c'est pas le même.
'''Gérard''' : Ouais, bah, on verra.
'''Max''' : On se dépêche, on se dépêche, Gérard. La dernière question, vite.
'''Gérard''', ''[écrit, lentement]'' : Serpillière. Alors, la dernière question. Les journalistes de la télé en font-ils pas un grand plat de cette histoire ? Je répète. Je récapitule depuis le début.
'''Max''' : Ça fait pas trop le con avec la politique, on va avoir des problèmes.
'''Gérard''' : Donc, les journalistes de la télé en font-ils pas... Pas un grand plat de cette affaire ? Donc, on va demander à Crevette.
'''Crevette''' : J'ai pas compris la question.
'''Gérard''' : Bon, alors, Crevette, c'est terminé pour toi. Tu comprendras mieux dans ton lit. Tétard ?
'''Tétard''' : Bah, moi, je pense qu'effectivement, il faut mettre les petits plats dans les grands et pas mettre les deux pieds dans le plat, ni tous ses œufs dans le même panier, c'est clair.
'''Gérard''' : Ouais, de toute manière, il y a un proverbe qui dit, il faut pas mettre les deux pieds dans le même sabot.
'''Tétard''', ''[sous les applaudissements du studio]'' : Tout à fait, surtout quand t'as des sabots.
'''Serpillère''' : Bah, moi, je pense qu'ils font vraiment un grand plat de choucroute, quoi.
'''Gérard''' : Non, mais attends, je vois pas le rapport avec l'affaire Bill Quinton, là.
'''Tétard''' : Bah, c'est mieux qu'un bon coup de pompe dans le cul, hein.
'''Gérard''' : Bon, d'accord, t'as pas compris la question. Non, mais je serais que toi, je prendrais mon balai brosse et je passerais la Serpillière dans tout l'appartement, OK ? Coussin d'air ! ''[applaudissements presque généraux]''
'''Gérard''' : L'autre abrutit, là, il applaudit pas parce que c'est lui qui l'a sélectionné. Donc, c'est bien... Donc, Coussin d'air. Euh, quoi, accouche ? Taleur, je vais t'accoucher, toi.
'''Finger''' : C'est Finger.
'''Gérard''' : Ouais, Finger, tu vas voir, taleur, Finger, je vais te manger par les deux bouts.
'''Gicleur''' : Bah, c'est Finger, il t'a mis un gros doigt.
'''Max''' : Faut qu'on fasse une réunion, c'est pas possible, le deuxième débat, on peut pas...
'''Gérard''' : Non, non, le deuxième débat, je le fais pas comme ça. Coussin d'air.
'''Coussin''' : Oui, alors, je disais que, moi, je trouve pas, au contraire, que les journalistes aient fait beaucoup, beaucoup de choses sur cette affaire-là, parce que je regardais pas plus tard que tout à l'heure, retransmis en Guadeloupe, le tiercet, et le journaliste a pas parlé une fois de l'affaire Bill Clinton.
'''Gérard''' : Non, mais attends, Coussin d'air, Coussin d'air ! Hé, Coussin d'air ! Et celui qui se marre comme un bourrin, là, il la ferme.
'''Max''' : Ouais, mais enfin, ça sert à rien, arrête de dire « la ferme » toutes les deux secondes. Toi aussi, tu la fermes quand tu parles.
'''Gérard''' : Euh, Coussin d'air. Non, mais je vois pas le rapport avec l'affaire Bill Kinton et puis, euh, les chevaux. Non, attends, Coussin d'air, je te répète la question. Les journalistes de la télé en font-ils pas trop... En font-ils pas un grand plat de cette histoire ? C'est-à-dire, on parle de l'histoire de Bill Clinton, on parle pas des chevaux.
'''Coussin''' : Oui, et c'est pour ça que je te réponds, lors de la retransmission du tiercet, le journaliste qui commentait, il a parlé une seule fois... Une seule fois de l'affaire Bill Clinton, et c'est pour ça que je te dis que, non, je trouve pas les journalistes, ils en font trop.
'''Gérard''' : Non, mais je vois pas le rapport avec l'affaire Bill Clinton et...
'''Max''' : Repose-lui la question, repose-lui la question.
'''tétard''' : C'est parce que Monica Lewinsky, c'est une belle jument.
'''Gérard''' : Bon, d'accord, ouais, enfin, bref. Euh, point d'interrogation pour finir.
'''Point''' : Si, je pense qu'ils en font un peu trop, parce que quand tu vois un peu qu'ils en parlent tout le temps à la radio, même à la télé, tu allumes ton poste, t'entends que ça, je pense qu'ils en font quand même un peu trop.
'''Gicleur''' : Parce qu'en fait, ils sont jaloux, Gérard, c'est pour ça. Tu m'as pas posé la question. Donc, je vais quand même te répondre. Moi, je pense que les journalistes sont jaloux, tu vois, parce qu'en fait, ils pensaient que le président des Etats-Unis, c'était un métier qui était dur, tu vois, qui était sérieux. En fait, ils voient que le président se fait sucer par une petite jeune alors tu penses, ils sont jaloux, quoi. Ils ont pas voulu aller à l'école pour faire président.
'''Gérard''' : Donc, moi, je peux vous répondre là-dessus. Je pense que les journalistes en font un petit peu de trop. Parce qu'on parle trop de cette histoire-là, comme l'affaire...
'''Phildar''' : Titanic ?
'''Gérard''' : Non, non, non, pas l'affaire du Titanic, l'affaire de l'histoire, là, avec la nana de...
'''Phildar''' : Le paquebot qui a coulé ?
'''Gérard''', ''[détournant le regard et la bouche du micro, fusillant Phildar du regard et surtout, éteignant son micro]'' : Non, mais attends, toi, tu ferais mieux de la fermer pour dire tes conneries. Non, c'est pas la peine de le rallumer.
'''Max''' : Ah, pour la Formule 1, là, non ? Schumacher, qui change d'écurie, non ?
'''Gérard''', ''[à Phildar)'' : Je t'ai dit d'éteindre ton micro, d'accord ?
'''Reego''' : Ton débat, Gérard.
'''Max''' : Non, mais c'est bon. C'est bon, ils peuvent l'allumer. Tu parlais de quoi, là ? Tu parlais du tiercé, là ?
'''Gérard''' : Non, non, de la nana... de l'histoire des policiers, là, puis du chauffeur de taxi, là, je pense...
Ah, du taxi, Valais-Saint-Paradis ?
'''Max''' : Ah, Joe le taxi ? Vanessa Paradis ? Bon, alors, enfin, bref, Gérard, qu'est-ce que tu penses de cette histoire ?
'''Gérard''' : Non, moi, je pense que cette histoire, pour moi, c'est de... C'est des conneries, et ils feraient mieux de laisser ça. Chacun fait ce qu'il veut de son cul. C'est leur propre histoire. Bon, maintenant, il n'y a qu'une chose que je peux dire, c'est que...
'''Phildar''' : C'est clair, c'est pas des conneries, le Titanic a bien coulé.
'''Manu''' : Bien sûr, il y a des preuves.
'''Gérard''' : Et ta 205, elle a bien coulé, et toi, t'as... Et toi, t'as... Ton espèce de nana, elle n'a pas coulé, encore ?
'''Phildar''' : Pardon ?
'''Gérard''' : Ouais, deux, à trois, on saute, à quatre, on recommence.
'''Max''', ''[admiratif, applaudissant]'' : Oh là là !
'''Gérard''' : Donc, moi, pour moi, personnellement, c'est une histoire que je suivrai pas parce que ça me prend la tête, et j'en ai ras-le-bol d'en entendre parler, tous les...
'''Gicleur''' : C'est toi qui en parles, là. Pourquoi tu fais un débat dessus ? Pourquoi tu lances un débat, alors ?
'''Gérard''' : Parce que je fais un débat, c'est le premier des débats de la saison, donc je fais un débat là-dessus.
'''Max''' : C'est la conjoncture des débats qui vaut ça.
'''Gérard''' : Terminé, point final, à la ligne. Donc, voilà. Conclusion !
'''Max''' : Ouais, conclusion, alors, très rapide.
'''Gérard''' : Vite fait, Crevette.
'''Crevette''' : Ouais, conclusion, bah, écoute, j'en ai appris beaucoup. Et puis...
'''Max''' : C'est vrai qu'on prend prend une bonne claque avec Gérard.
'''Crevette''' : Et puis, bah, j'espère que tu vas continuer à nous informer, quand même, sur l'affaire même si ça t'intéresse pas.
'''Max''' : Bah, y'a France Info, puis y'a Gérard le jeudi.
'''Gérard''' : Non, mais vous avez d'autres chaînes de télé pour vous informer que moi.
'''Max''' : Surtout que c'est de la radio donc...
'''Gicleur''' : Ouais, bah, écoute, moi, je pense, là, qu'en une soirée, j'ai plus appris qu'en trois mois. Et la conclusion, bah, c'est que, finalement, c'est bien de se faire sucer et que Clinton, bah, il a bien raison.
'''Gérard''' : D'accord, bah, toi, tu préfères aller te faire sucer ?
'''Gicleur''' : Ouais, c'est une proposition, mais non, laisse tomber non.
'''Max''' : Voilà, c'était la conclusion, en fait, réponds pas à la...
'''Point''' : Alors, ma conclusion, c'est qu'ils arrêtent un peu d'harceler les stars, comme ça, parce que c'est vraiment chiant. Dès que tu vois... Tu peux même pas aller quelque part, t'as les journalistes qui sont autour de toi, c'est un peu embêtant, quand même.
'''Max''' : Ça peut te servir de pare-à-vent, quand il pleut, hein.
'''Gérard''' : Point d'interrogation, t'es encore là ? Non, mais on vient de te poser une question.
'''Max''' : C'est pas grave, c'était juste un commentaire que je faisais, c'est pas une question. Faut pas confondre les questions, les réponses et les affirmations.
'''Tétard''' : Ouais, bah, moi, en conclusion, ce que j'aurais voulu savoir, c'est déjà si elle s'était lavé les dents, là, Levinsky, là, et je voudrais que tu nous racontes vite fait l'histoire entre Gérard Kilton et Christine. Lewhisky..
'''Gérard''' : Comment, comment ?
'''Tétard''' : Je voudrais que tu nous racontes la jolie histoire de Gérard Kilton et Christine Lewhisky.
'''Gérard''' : Bon, alors, Tétard ? Tu te mets un gros doigt... Et tu te mets un gros doigt, quelque part, et...
'''Max''' : Tiens, dans le cul, par exemple, par hasard.
'''Serpillère''' : Bah, moi, je pense que Monika Lewhisky, elle a même sucé Richard Dixon.
'''Gérard''' : D'accord, alors, toi, t'as rien compris. Coussin d'air, pour finir ?
'''Coussin d'air''' : Ah bah, écoute, moi, j'ai trouvé le débat vraiment très intéressant, sauf que je regrette vraiment qu'on ait pas parlé plus longtemps de Francky Vincent et du tiercet.
'''Max''' : Je veux juste te dire, petit point, petite parenthèse, par contre, là, Coussin d'air qui est en Guadeloupe, toi, en ce moment, t'es là, avec nous ? Donc, toi, en ce moment, toi, tu es en direct en France, on rappelle que, toi, ce que t'es en train de faire, en ce moment, avec Gérard, c'est donc diffusé dans 15 jours, c'est ça ?
'''Coussin d'air''' : Oui, absolument, c'est ça.
'''Max''' : C'est avec le décalage horaire, justement, et ça nous amène, justement, au prochain débat, Gérard, décalage horaire.
'''Gérard''' : Voilà. Donc, moi, je réponds quand même...
'''Max''' : Oui, la conclusion de Gérard, bien sûr, sur son débat.
'''Gérard''' : Donc, sur cette conclusion-là, c'est dommage qu'on n'aille pas pu aller plus loin, parce qu'il y avait d'autres questions qui étaient intéressantes. Bon, c'est sûr qu'il y a les histoires de cassettes vidéo, je pense que, j'espère qu'ils vont en faire bon usage pour les aides humanitaires.
'''Max''' : J'espère qu'ils vont les mettre en location. Ah, pardon.
'''Gérard''' : Non, non, pour les aides humanitaires, c'est-à-dire, surtout à New York, parce que même là où c'est vendu, donc, j'espère qu'ils vont en faire bonne conclusion sur cette vente.
'''Max''' : On rappelle que tu as été à New York, quand même. Tu sais de quoi tu parles.<ref name="explic2"></ref>
'''Gérard''' : Voilà. Parce que là-bas, il faut dire que c'est un pays très, très chaud.
CMaxest quand même une ville qui n'a plus aucun secret pour toi, vu que tu y es passé quand même près de 48 heures.
'''Gérard''' : Non, 72.
'''Max''' : Donc, tu maîtrises bien le sujet de New York.
'''Phildar''' : Il a fait deux fois le tour.
'''Max''' : Est-ce que tu trouves que ce genre de problème, comme ça, ce problème, est-ce que tu crois que ça mérite un débat ?
'''Gérard''' : Ben, disons, j'ai voulu réagir là-dessus, parce qu'on en parle tellement. C'est que j'aurais préféré éviter d'en parler. Bon, t'as voulu qu'on en parle. Bon, ben, j'en ai parlé. Mais malheureusement, on n'a pas pu aller jusqu'au bout. Donc, si vous voulez réagir sur le deuxième débat.
'''Max''' : Débat sur le décalage horaire.
'''Gérard''' : Sur le décalage horaire. Donc, je pense que c'est moi qui va...
'''Max''' : On va voir ça hors antenne. Ça, c'est un truc, comme d'habitude, je Gérard n'a pas compris. Tu vas me laisser parler un petit peu. Je vais faire moi-même. Donc, si vous voulez participer au débat de Gérard, le deuxième de cette soirée pour le grand retour de GG dans les débats. Débat sur le décalage horaire. Vous appelez dès maintenant le standard de Fun Radio 0800 70 5000. Pour les Belges, 0033 800 70 5000. IRC, toujours, c'est-à-dire le site Internet où vous pouvez dialoguer en direct entre vous ou bien directement avec Reego, qui est dans le studio en ce moment.
'''Reego''' : Et avec Rousseau aussi.
'''Max''' : Et avec Rousseau également, qui est dans le coin. C'est irc.funradio.fr. Gérard est toujours là. Phildar Manu également aux manettes. On se retrouve dans tout juste 8 minutes. Le temps de faire le point avec un morceau de Astral Projection. Ah non, pardon, c'est pas ça. Non, ça a changé. C'est quoi ?
'''Gérard''' : Non, c'est, à mon avis, si on ne s'est pas trompé, c'est tiens, tiens bientôt, j'ai un gros caca avec des riettes. Voilà. Et on se retrouve tout à l'heure d'ici 5-10 minutes.
== Le débat sur les décalages horaires ==
=== Contexte ===
Le premier débat a clairement montré le nouvel environnement dans lequel s'inscrit l'émission, désormais mettant en scène une équipe rigolarde et un animateur payé, loufoque, surréaliste. Pourtant, on voit aussi d'emblée l'équilibre difficile auquel Max s'attaque : tenter de rassurer sa direction dans un style moins chaotique qu'en début d'année, tout en préservant le style inimitable de l'émission. Le second débat tente de confirmer cette tendance, avec un interventionnisme moindre de Max. C'est la première semaine du retour de Max, qui le met sous pression. D'abord car il a tout de même laissé une trace par son coup de poker d'août, ensuite car il vient de retrouver son créneau préféré après ce qui fut un vrai échec professionnel, enfin parce que la direction, de toute manière, transforme la station en profondeur. Les émissions emblématiques comme Lovin Fun, ainsi que leurs animateurs phares (Difool, le Doc) sont désormais partis, Max reste le seul emblême de l'époque de Fun radio de la première moitié des années 90, et la pression est donc grande. La station veut en effet cibler d'autres auditeurs, pour d'autres revenus, et Ma restera un épiphénomène fidélisant le passé mais presque gênant pour la direction.
Dans ce second débat, Max teste toutefois la formule où Phildar est à la manœuvre. Lui aussi, depuis la fin de Fun TV, a besoin de trouver sa place dans le métier. Mais un peu contre toute attente, l'autorité naturelle qui se dégage pour Gérard, c'est Reego. Il est épargné de ses foudres, il a sa confiance, quoiqu'il fasse, et très vite, il s'avère que c'est lui qui sera le bon régulateur de l'émission, par-delà tous les autres.
Sur le fond, il faut simplement se souvenir qu'à cette époque, le week-end précis où l'heure passait en hiver ou été n'était pas totalement figée. Celala ensuite changé lorsqu'elle s'est harmonisée au plan européen, mais tel n'était pas encore le cas. Cette mesure, étant d'abord destinée à s'adapter à la longueur des journées pour réguler la consommation d'une énergie coûtant cher, s'adaptait aussi à la température et à d'autres critères. Si bien que le décalage pouvait intervenir pendant n'importe quel week-end du mois d'octobre, voire en septembre, plus rarement.
=== Les personnages ===
* Gérard Cousin : Gérard
* Phildar, Manu
* Franck Bargine : Max
* Igor : Reego
* Mégane : Moustique
* Tony Morestin : Boudin noir
* Goldo : Boudin noir
* Cocker, Loudné (comprendre, Loup-de-nez)
* Sandy Threadkell : Point d'interrogation
* Nicolas : Merguez (il avait participé à un débat estival en 1997), Petit sucre
* Luigi : Couscous (retour d'une figure des dénats en 1997)
=== Transcription ===
'''Gérard''' : Et voilà, 1h45, donc je fais rectification, c'est Tiens bientôt, je vais faire un gros caca avec Derriette et on va demander à Reego, il avait un petit message sur l'IRC, sur les questions qu'on a posées au départ.
'''Reego''' : Voilà, non c'était juste pour saluer les gens présents sur l'IRC, alors je salue Wynne, Clifford, Yankee, Fedji, TSM, Jock, Scoyote, Bip, VLR et les autres et l'IRC dans le studio a planté mais on va le relancer tout de suite, à tout à l'heure.
'''Gérard''' : Ok, à tout à l'heure, Reego, je te remercie.
'''Reego''' : De rien ma poule !
'''Gérard''' : Là, Manu, je te signale qu'il y en a un des deux qui va planter.
'''Manu''' : Ah bon, pourquoi ?
'''Gérard''' : Là, je pense que tu m'as fait une connerie.
'''Manu''' : Ah bon ? Si tu m'avais pas pris le standard pour rien foutre pendant le disque, j'aurais pu sélectionner des gens.
'''Phildar''' : C'est pas grave, on va voir, vas-y Gérard.
'''Gérard''' : Je vais voir, donc on accueille Moustique, merci pour les fréquences.
'''Manu''' : Je n'ai pas eu le temps, Gérard.
'''Moustique''' : Bonsoir Gérard.
'''Gérard''' : T'appelles d'où ?
'''Moustique''' : T'appelles de Poitiers.
'''Gérard''' : Poitiers, ta fréquence ?
'''Moustique''' : 89.6
'''Gérard''' : 89.6, ok. Boudin Noir.
'''Boudin noir''' : Bonsoir Gérard, bonsoir tout le monde.
'''Gérard''' : Bonsoir Tony. Merci Tony.
'''Boudin noir''' : J'ai changé.
'''Gérard''' : Ouais, ouais, ta fréquence ?
'''Boudin noir''' : Moi, ma fréquence, moi j'écoute pas sur la radio, j'écoute sur la CB et je t'emmerde.
'''Gérard''' : Alors, tu m'emmerdes, ok. Alors, dégage Boudin Blanc. Allez hop, voilà.
'''Phildar''' : Ça commence bien, Manu, tu pourras gérer un peu mieux.
'''Gérard''' : Alors, Max, Max, s'il te plaît.
'''Phildar''' : Non, on va gérer, on va gérer Manu tout seul, Gérard, t'inquiète. Manu, tu fais gaffe.
'''Gérard''' : Hop, Boudin Blanc, terminé. Hop, tu le vires. Bon, ça commence ! Déjà, il commence. Alors, si Boudin Noir c'est le même nom...
'''Max''' : Non, mais peut-être que Tony, il a changé, il est peut-être venu...
'''Gérard''' : Non, non, non, il m'a dit, je t'emmerde sur la CB.
'''Max''', ''[hilare]'' : Ah, j'ai pas entendu. Non, mais c'est pas grave, mais si Tony veut bien venir, mais il se calme. Ça peut être sympa. On pourrait très bien se faire un feu de cheminée avec des merguez, on pourrait lier amitié.
'''Gérard''' : Non, non, c'est pour Boudin Blanc, terminé.
'''Manu''' : Moi, j'écoute le chef, il a dit, ça peut être sympa, je le laisse.
'''Gérard''' : Non, je dis, moi ! C'est pas lui qui...
'''Manu''' : Ah si, c'est Max qui commande.
'''Boudin noir''' : Je m'excuse, je m'excuse.
'''Gérard''' : Non, non, non, Tony, terminé, terminé, terminé, terminé, terminé, terminé, terminé, terminé, terminé, terminé, terminé.
'''Phildar''' : Hé, ce qu'on fait... Attends, Gérard. S'il vous plaît, disez-vous, s'il vous plaît, Tony. Ce qu'on fait, Gérard, on lui laisse une chance.
'''Gérard''' : Non, non, non, non, non, non, non, non, il n'y a pas de chance avec moi. Non ! Non, non, mais moi, je ne pardonne pas, c'est tout. Terminé, point final, à la ligne. Gamel ? Salut, t'appelles d'où ?
'''Gamel''' : De Verdun.
'''Gérard''' : Ta fréquence ?
'''Gamel''' : C'est 110.5.
'''Gérard''' : Boudin Noir.
'''Boudin noir''' : Ouais, salut, Gégé, j'appelle de Toulouse et la fréquence, c'est 117.3.
'''Gérard''' : 117.3, OK. Point d'interrogation ? T'appelles d'où ?
'''Point''' : J'appelle de nulle part, toujours.
'''Phildar''' : Bah oui, c'est la même.
'''Gérard''' : Donc, 101.9. OK, je te remercie. Donc, première question, c'est sur le décalage horaire. On est bien d'accord ? Alors, que pensez-vous du décalage horaire ? On va demander à Boudin Noir.
'''Boudin noir''' : Le décalage horaire, en fait, Gégé, on n'y peut pas. C'est des lois immuables de la nécessité naturelle et on ne peut pas faire grand-chose.
'''Gérard''' : Mais tu penses que ça, à ton avis...
'''Boudin noir''' : Non, mais c'est plutôt une bonne chose, quand même, dans l'absolu.
'''Gérard''' : Ouais, mais à ton avis, tu crois que ça va durer encore longtemps, cette histoire ?
'''Boudin noir''' : À mon avis, je ne pense pas... il y a peu de chances que ça change, parce que vu comment sont les gens, je ne vois pas pourquoi le décalage horaire, il changerait comme ça. Tu sais, c'est dans les mentalités, tout ça.
'''Gamel''' : Bah, décalage horaire, c'est décalage de toutes les heures, c'est ça ?
'''Phildar''' : Attends, Gérard, est-ce que tu peux expliquer ce que c'est, le décalage horaire, déjà ?
'''Gérard''' : Le décalage horaire, déjà, pour commencer, bon, ça, j'aurais pu attendre que tout le monde réponde.
'''Phildar''' : Mais non, mais s'ils ne comprennent pas déjà ce que ça veut dire...
'''Gérard''' : Non, non, mais attends, Phildar, s'il te plaît. J'aurais pu attendre que tout le monde réponde, et j'aurais pu dire ce que c'était. Non, mais...
'''Phildar''' : Non, mais tu comprends ce que je veux dire. Si toi, on te pose une question et que tu ne sais pas ce dont on parle, tu ne peux pas répondre. Donc, il faut que tu expliques avant. Vas-y, explique.
'''Gérard''' : Donc, décalage horaire, c'est-à-dire vous avancez ou vous reculez votre monde d'une heure. D'accord ? On est bien d'accord, Gamel et Boudin Noir, si je t'ai mal expliqué ? Je pense que Boudin Noir, tu as bien compris la question, toi ?
'''Boudin noir''' : Oui, oui, tout à fait. En avant, en arrière, sur la droite et sur la gauche aussi.
'''Gérard''' : Non, mais d'accord. Toi, sur la droite et sur la gauche, toi, tu prends les clignotants ?
'''Boudin noir''' : Voilà, par exemple.
'''Gérard''' : Non, mais ça n'a rien à voir. Non, mais OK. Gamel ?
'''Gamel''' : Moi, je comprends pas, parce que j'ai une montre à quartz, et puis les aiguilles, elles n'avancent pas ou elles ne reculent pas.
'''Gérard''' : Non, mais attends. Moi aussi, j'ai une montre à quartz, là sur ma montre, il est 1h51. Si tu veux, à l'heure actuelle, si on change d'heure, ça fera 0h51. Parce qu'on recule. On recule nos montres d'une heure.
'''Boudin noir''' : Comme en Allemagne, par exemple.
'''Gérard''' : Non, non, attends 5 minutes, s'il te plaît, merci.
'''Manu''' : Oui, donc, comme tu ne voulais pas de Tony, on accueille Bonne Nuit à la place. Salut, Bonne Nuit.
'''Bonne nuit''' : Allô, salut, G, tu vas bien ? Moi, j'appelle de Mont-Luçon, fréquence 112.18.
'''Phildar''' : Ah, c'est une nouvelle fréquence, ça.
'''Manu''' : Elle vient de s'installer, d'ailleurs. Tu peux saluer tous les auditeurs qui te rejoignent sur cette fréquence.
'''Gérard''' : Non, non, 112.18, ça existe pas, chez moi, à Montluçon. Montluçon, tout le monde descend, terminé. Hop, point final à la ligne. Alors, pour l'instant, Manu, t'es en train de me dire des...
'''Phildar''' : Bon, la suite, Gérard.
'''Gamel''' : Ça y est, j'ai reculé ma montre jusqu'à la cuisine, j'ai fait un calage horaire, là.
'''Gérard''' : Non, je ne vois pas le rapport. Je ne vois pas le rapport avec le décalage horaire. Point d'interrogation ?
'''Point''' : Effectivement, ça peut perturber un peu la vie quotidienne. Déjà, quand tu pars au travail le matin, tu peux être perturbé...
'''Gérard''', ''[par-dessus des bruits bruyants de pet]'' : Non, mais attends, point d'interrogation, pour l'instant, on... Celui qui s'amuse à péter derrière, arrête !
'''Reego''' : Excusez-moi, excusez-moi.
'''Phildar''' : Ça pue en plus.
'''Reego''' : Désolé, désolé, pardon.
'''Point''' : C'est vrai que tu peux être perturbé en prenant ta voiture, tu peux arriver en retard à ton travail.
'''Gérard''' : Bon, OK, c'est bon. Moustique ?
'''Boudin noir''', ''[pendant que Manu, micro éteint, fait le bruit du moustique]'' : Gérard, j'aimerais bien te ''[bruit d'une touche de téléphone numérique]'' Sous la table.
'''Gérard''', ''[crescendo]'' : Non, non, non, mais là, ça commence à bien faire ! ''[o Phildar]'' : Eh, toi, tu vas la prendre, toi ! Eh, tu dégages ! Tu dégages, je te veux plus ! Allez, hop !
'''Manu''' : Bon, bah, viens au standard !
'''Gérard''' : Tu dégages ! Au standard ! Au standard ! Au standard !
'''Max''' : C'est bon !
'''Gérard''' : Non, non, il commence pas ! Non, mais il commence pas ! D'accord ! Non, non, Manu, non plus !
'''Manu''' : Ben, j'ai rien fait !
'''Gérard''' : Non, non, Max !
'''Max''' : Je suis en train de brancher les filles là, je peux pas...
'''Gérard''' : Non, non, mais attends, parce que là, ils vont pas... Ça va pas commencer comme ça, hein !
'''Max''' : Ben, quand ça va pas, tu fais tourner, regarde ! Là, t'as fait tourner l'équipe, regarde !
'''Gérard''' : Ouais, mais après, Reego, t'y vas ! Je pense qu'avec toi, ça va mieux aller !
'''Phildar et Manu''' : Mais il sait pas, Reego ! Il sait pas le faire !
'''Reego''' : Non, moi, je sais pas, j'ai pas le droit !
'''Gérard''' : Bon, Moustique !
'''Gamel''' : Gérard, tu fermes ta gueule, c'est moi qui commande, ici ! Tu fermes ta gueule, OK ?
'''Gérard''' : Bon, alors, hop ! Hop ! Euh, je te préviens ! Max !
'''Phildar''' : Non, mais je l'ai viré, maintenant, tu peux y aller !
'''Gérard''' : Non, non, non, non, non ! Non, non, Max ! ''[Max revient, agacé, criant Merde en entrant dans le studio]''. Max, Max, Max ! Non, non, y'a pas de merde ! Tu viens ! Tu me les chopes au standard ! Tu les prends ! Le premier qui me dit merde, ou ta gueule, il dégage ! ''[par-dessus, quelqu'un demande à gérard de se faire par Sandy et de pas casser les pieds]'' : Alors, celui-là ! Celui-là qui vient dire Sandy, il dégage ! Hop ! Terminé pour lui !
'''Max''' : Non, qu'est-ce que t'es en train de me dire ? T'es en train de me dire que quand on dit merde ou enculé, faut zapper, donc quand on dit Sandy, c'est un... Donc, ça veut dire que Sandy, c'est un gros mot ?
'''Gérard''' : Pourquoi tu dis que je vais me faire enculer par Sandy ?
'''Phildar''' : Il a pas dit ça, hein !
'''Gérard''' : Non, à peine ! À peine ! À peine, tu l'as pas entendu, toi !
'''Max''' : Bon c'est bon ! Alors, maintenant, on reprend le débat normalement, s'il vous plaît, comme le premier, c'était très bien ! Manu va gérer tout ça !
'''Manu''' : Je gère ! T'inquiète pas, Gérard !
'''Gérard''' : Eh, je te préviens ! Première fausse note, tu dégages, je mets quelqu'un d'autre !
'''Manu''' : Y'aura pas de fausse note !
'''Gérard''' : Donc, alors, Moustique, pour la première question !
'''Moustique''' : Oui ? Euh... Bah, je sais plus, là ! C'était le décalage horaire, ce qu'on en pense ? Bah, c'est chiant, quoi ! Quand tu vas aux Etats-Unis, t'as 6 heures, donc, il faut... Tu recules de 6 heures, en fait, donc, faut tout réorganiser ta vie, parce que c'est carrément une demi-journée, quoi ! C'est un peu, en fait, astreignant, comme chose !
'''Gérard''' : Ouais, non, mais je pense que le décalage horaire... Je pense que le décalage horaire, c'est que... À chaque fois, tous les... 5 mois, je pense, à mon avis...
'''Moustique''' : Le visa, il dure 6 mois, donc...
'''Gérard''' : Non, mais faut qu'on change au mois de... Au mois de mars ! Et après, faut rechanger au mois d'octobre !
'''Moustique''' : Ouais, mais ça dépend quand il est tamponné, donc...
'''Gérard''' : Ouais, mais parce que là, je peux te dire que le décalage horaire, normalement, on aurait dû le faire cette semaine, là... Ce week-end...
'''Moustique''' : Ah bon, c'était là ?
'''Gérard''' : Bah, pour l'instant, personne n'en a parlé, donc... J'en parle maintenant, et normalement, on aurait dû le faire maintenant...
'''Manu''' : C'est le week-end prochain ?
'''Gérard''' : Bah, on sait pas, parce que... D'après ce que j'ai vu, moi... Sur des programmes,<ref name="hist2"></ref> ils en parlent pas, donc... Je sais pas si, cette année, on va faire le changement d'horaire...
'''Manu''' : Je crois que c'est le week-end prochain, mais je suis pas sûr...
'''Boudin noir ''' : Ya une grève, ya une grève.
'''Gérard''' : Non, non, mais attendez, attendez, attendez... Tu me dis ?
'''Manu''' : Je crois que c'est le week-end prochain qu'on change d'heure, mais je suis pas sûr...
'''Gérard''' : Non, moi, j'ai reçu le... Je te confirme, pour l'instant, on en... On n'a pas confirmation du décalage...
'''Manu''' : Ok, autant pour moi...
'''Phildar''' : Mais avant, il paraît que c'était le premier jour de l'automne qu'on changeait, c'est vrai ou pas ?
'''Gérard''' : Oui, mais là, normalement, on aurait dû changer... Non, mais attends, toi, avec ta grève, tu m'énerves !
'''Boudin noir''' : Il y a une grève du décalage d'horaire, tu devrais te tenir informé !
'''Gérard''' : Mais attends, toi, avec ta grève, ta grève, si tu fais partie de la RATP, tu dégages...
'''Boudin noir''' : Mais non, c'est la SNCF, c'est différent !
'''Gérard''' : Ouais, ben, dans ce cas-là, tu te tais, c'est tout, je réponds à la question... Voilà, merci !
'''Phildar''' : Gérard, donc, justement, à la place de Bonne-Nuit, on accueille Puceau...
'''Gérard''' : Puceau, bonne nuit ! Non, bonsoir, pardon...
'''Puceau''' : Bonsoir, qui ?
'''Gérard''' : Puceau !
'''Puceau''' : Puceau toi-même, ouais !
'''Gérard''' : Attends, tu restes poli, s'il te plaît !
'''Gamel''' : Moi, Gérard, je pense que le décalage d'horaire, c'est de la faute à Jospin, de toute façon.
'''Gérard''' : D'accord, alors là, je vois pas le décalage horaire, qu'est-ce qu'il a à faire dans la politique. Non, mais moi, je réponds à la question à Phildar, parce que tu m'avais dit...
'''Phildar''' : Généralement, c'est le premier jour de l'été.
'''Manu''' : Non, de l'automne.
'''Gérard''' : Donc, normalement, si t'es d'accord avec Manu, normalement, on aurait dû changer d'heure ce week-end.
'''Phildar''' : Le 20 septembre.
'''Gérard''' : Donc, c'est-à-dire, le week-end dernier. Donc, pour l'instant, on sait pas. Je réponds à la question à Manu. Donc, pour le week-end prochain, pour l'instant, pour ce week-end, j'en ai pas entendu parler.
'''Moustique''' : Et pourquoi, Gérard, on n'a pas changé ?
'''Gérard''' : Pourquoi ? Parce que, pour l'instant, personne n'en parle. Et donc, on sait pas.
'''Manu''' : Excuse-moi, je crois que c'est à cause de l'Europe. Pour se mettre à la même heure avec tout le monde.
'''Gérard''' : Non, mais apparemment, tout le monde a dit qu'on fait des décalages horaire tout le temps.
'''Phildar''' : Non, parce qu'en fait, ce qui va se passer, je crois qu'on aura des montres en euros. Il y aura plus d'heures.
'''Gérard''' : Non, mais ça, l'euro, là-dedans, je vois pas ce que... Non, non, mais je m'en fous. Deuxième question. Donc, alors, deuxième question. Qui est le plus atteint par le décalage horaire ?
'''Moustique''' :C'est les bovins. C'est les bovins, c'est les vaches. Elles arrivent pas à faire leur lait normalement quand l'heure, elle change. C'est prouvé scientifiquement, hein.
'''Gérard''' : Ouais, mais d'accord, Moustique. Mais je te demande qui est le plus atteint, parce qu'il n'y a pas que les bovins qui sont...
'''Moustique''' : Ah, mais les plus atteints, c'est les bovins. Après, c'est les vieux, quoi.
'''Gérard''' : Ah ouais, mais ça, on va... Je pense que... Non, mais je pense qu'on va en revenir sur les questions, parce que, de toute manière, de toute manière, si tu parles des bovins, dans ces cas-là, tu penses que les bêtes souffrent ?
'''Moustique''' : Non, non, je dis pas ça. Mais les vaches, elles arrivent pas à faire leur lait correctement parce qu'elles ont carrément changé d'heure, quoi.
'''Gérard''' : Oui, mais dans ces cas-là, Moustique, si je te dis, les bêtes souffrent-elles du décalage d'heure ?
'''Moustique''' : Bah moi, je te réponds non.
'''Gérard''' : Bah pourquoi ?
'''Moustique''' : Parce que, je te dis que ça se passe dans leur tête, elles sont complètement déréglées, mais elles n'en souffrent pas.
'''Gérard''' : Bah oui, mais dans ces cas-là, on revient à... Qui est le plus atteint par le décalage horaire, tu me dis les...
'''Moustique''' : Les bovins. Après, les vieux.
'''Gérard''' : Bah oui, mais dans ce cas-là, les bêtes souffrent.
'''Moustique''' : Bon, Gérard, on va pas faire une heure, je te dis, non, elles souffrent pas.
'''Gérard''' : Bah si, si, moi, je te dis que si.
'''Moustique''' : Bon, bah alors, si tu dis que si, d'accord, elles souffrent. Mais moi, je te dis que non.
'''Point''' : Oui, je pense que tout le monde peut en souffrir, surtout les bébés, ils peuvent pas avoir leur biberon en temps et en heure. Je pense que même, c'est pareil pour les personnes âgées, ou même pour les personnes qui doivent...
'''Gérard''' : Non, mais attends, eh oh point d'interrogation ? Eh, tu me... Tu réponds pas aux questions avant moi, parce que sinon, toi, je vais t'éclater ta tête.
'''Moustique''' : Bon, on a le droit de parler ?
'''Point''' : Ah non, faut pas m'éclater la tête, hein.
'''Gérard''' : Non, bah non, parce que là, t'es en train de me prendre...
'''Gamel''' : Non, Gérard, éclate-lui la chatte, plutôt.
'''Gérard''' : Non, toi, toi, tu la fermes. Ça vaudra mieux pour ton matricule.
'''Point''' : Non, mais comme je t'ai dit, je pense que tout le monde peut en souffrir, de ça.
'''Gamel''' : Bah moi, à mon avis, le plus atteint qui sera par le décollage horaire, c'est quand même Bill Clinton, parce qu'avec tous les problèmes qu'il a eus.
'''Gérard''' : Bon, allez, Boudin noir...
'''Phildar''' : Non, mais c'est Gamel, Gamel. Non, mais si ça se trouve, il y a un rapport.
'''Gérard''', ''[avec écho de Manu]'' : Mais non, ça n'a rien à voir ! Manu, s'il te plaît.
'''Manu''' : J'ai rien fait, Gérard.
'''Phildar''' : Bon... Il n'y a pas de rapport ? Mais pourquoi ?
'''Gérard''' : Non non mais... hop, Gamel, tu me l'envoies... Bonne nuit. Boudin noir, pourquoi ?
'''Boudin noir''' : Déjà, pour le problème des vaches, moi, je sais qu'il y a des paysans du Luberon qui ont fait une expérience. Il suffit juste de mettre une horloge dans l'étable.
'''Moustique''' : Ah bon, ça marche ?
'''Boudin noir''' : Ça suffit, ouais. Et en ce qui concerne les vieux, vous parliez des vieux, effectivement, les vieux, c'est pareil. Le matin, ils ont l'habitude de pisser à heure fixe. Et avec le décalage horaire, en fait, quand dans les maisons de retraite, les infirmières viennent, ils se sont tous chiés dessus parce qu'on ne les fait pas dégorger à temps, quoi.
'''Gérard''' : Donc, Pussot, t'es encore là ?
'''Puceau''' : Oui, moi, je voulais dire que les plus atteints, c'est les filles, quoi, parce qu'il y a des filles qui n'ont pas les règles en même temps.
'''Gérard''' : Non, mais attends. Hé, Pussot ! Pussot ! Pussot ! Je ne vois pas le rapport avec le décalage horaire et les ragnanias des nanas.
'''Puceau''' : Les ragnanias, c'est normal, Gérard. Les ragnanias, elles ne les ont pas en même temps, donc il y a un décalage horaire.
'''Gérard''' : Mais attends, mais de toute manière, si elles ont leur ragnania, par exemple, aujourd'hui, d'ici un mois, si le décalage... Euh... D'ici une semaine, si le décalage change, elles les auront toujours en même temps.
'''Puceau''' : Ouais, mais si elles partent, il y a un décalage horaire, donc elles n'auront pas le même jour.
'''Gérard''' : Et alors, tu feras toujours des spaghettis avec ?
'''Puceau''' : Ben écoute, moi, je dis une chose, les spaghettis, c'est bien, mais les ragnanias, c'est mieux.
'''Gérard''' : Ouais, mais il faut mieux avoir des spaghettis aux ragnanias avec de l'ail.
'''Manu''', ''[écœuré]'' : Oh, Gérard, t'es poétique, vraiment, c'est super.
'''Phildar''' : Justement. On accueille deux nouveaux, on accueille Coquer, qui appelle de Niort. Et Merguez, de Toulouse.
'''Gérard''' : Euh, donnez-moi les fréquences, là.
'''Merguez''' : Moi, c'est Toulouse, c'est 105.9.
'''Boudin noir''' : Non, non, 117.5.
'''Gérard''' : Et Coquer, de Niort ?
'''Coquer''' : 93.4.
'''Gérard''' : Eh, Pussot, t'es d'où, toi ?
'''Puceau''' : Oui, je suis de Paris.
'''Boudin noir''' : Non, il est d'Italie, lui.
'''Gérard''' : Donc, troisième question. Depuis qu'il y a Manu et Phildar, c'est le vrai bordel.
'''Manu''' : Ben non, non, je sais pas qu'est-ce qu'il se passe, pourquoi ?
'''Gérard''' : Non, non, parce que là, ça devient le vrai bordel. On a des bruits et... ''[depuis quelques minutes, reego tape violemment sur les touches de son clavier, micro ouvert, Manu ronfle bruyamment, etc]'' Voilà, il y en a un qui ronfle.
'''Phildar''' : Il y a peut-être un qui s'endort, donc il faudrait peut-être que t'accouches.
'''Gérard''' : Non, je pense que ça va pas aller longtemps, vous deux.
'''Phildar''' : Allez, Gérard, la question, vite.
'''Gérard''' : Quoi, vite ? Si je veux !
'''Phildar''' : Bon, ben, prends ton temps.
'''Gérard''' : Les fermiers supportent-ils ce changement d'heure ? On va demander à Moustique.
'''Moustique''' : Ben, mieux que les vaches, en tout cas.
'''Gérard''' : Ben, donc, tu vois que je reviens à la première question. Bon, vous vous la fermez derrière quand je parle. Merci. Donc, tu vois, Moustique, je reviens avec la question numéro 2. Merci pour...
'''Manu''' : Pourquoi ?
'''Reego''', ''[alors que quelqu'un imite le moustique, micro éteint]'' : Il y a un moustique, là.
'''Boudin noir''' : Plutôt une mouche, ouais.
'''Gérard''' : Non, non, mais... Non, non, c'est pas toi. Non, non, mais je sens que tout à l'heure, ça va mal se terminer. Vous allez voir que... Je pense qu'on va pas faire les 10 questions, hein.
'''Boudin noir''' : C'est l'odeur.
'''Gérard''' : L'odeur, elle t'emmerde, toi, d'accord ? Donc, tu vas pas commencer tes conneries, ok ? En de bon entendeur, salut. Ok. Donc, Moustique. Donc, on revient à la question numéro 2. Donc, qui est le plus... Qui est le plus atteint par le décalage horaire ? Et les fermiers supportent-ils ce décalage horaire ? Donc, apparemment, tu reviens sur la même question.
'''Moustique''' : Non, moi, je te dis que c'est les vaches. Mais les fermiers supportent beaucoup mieux que les vaches.
'''Gérard''' : Non, non, non, mais attends. Parce que, eux, pour eux... Eux, si tu veux, les fermiers, eux, ils se lèvent un peu plus tard. Disons, avec le décalage horaire, ça va les changer. Parce que si, par exemple, ils font une traite à 6 heures, pour eux, ça fera 5 heures, si tu veux.
'''Moustique''' : Oui, mais les vaches... Et les vaches, elles ne le savent pas que l'horaire change.
'''Gérard''' : Eh oui, mais d'accord, mais attendez, s'il vous plaît, derrière.
'''Moustique''' : Ça les perturbe parce que le fermier, il vient leur titiller les pis, et elles n'ont pas de lait, donc ça les perturbe. Voilà.
'''Boudin noir''' : Mais non, parce qu'il y a le coq, vous oubliez le coq.
'''Gérard''' : Attends, toi, qui c'est qui parle du coq ? Ouais, mais Boudin Noir, tu vas aller bouffer ton coq au standard.
'''Boudin noir''' : Le coq, il chante toujours à la même heure. Donc le fermier, il se lève quand le coq, il chante, il est pénard.
'''Phildar''' : Ben voilà. ''[Reego continue à taper sur le clavier de l'ordianteur de bureau exagérément bruyamment dans le micro]''. Qu'est-ce que tu voulais dire, Gérard ?
'''Gérard''' : Non, mais là, ça commence à bien faire. Taleur, au premier débat, ça s'est bien passé. Maintenant, le deuxième, vous n'allez pas me le casser. Vous n'allez pas le casser, pour l'instant, vous êtes en train de le casser.
'''PHildar''' : Le coq, il n'a pas de montre. Donc, lui, il ne sait pas qu'il y a un décalage horaire. Donc, il chante tout le temps. Il chante à la même heure à chaque fois. T'es d'accord ? T'es d'accord, Gérard ?
'''Gérard''', ''[tournant le regard de partout et atterrissant sur Reego]'' : Merci, Reego.
'''Reego''' : Qu'est-ce qu'il y a ?
'''Gérard''' : Ah ouais, mais t'avais laissé ton micro allumé.
'''Manu''' : On entend tout, quand tu pianotes sur l'IRC.
'''Reego''' : Ah ouais ? Ah ouais, excusez-moi.
'''Gérard''' : Ouais. Je me disais aussi, il y avait un problème. Donc, point d'interrogation.
'''Phildar''' : Bon, t'as compris ou pas ce que je t'ai dit ? Gérard ?
'''Manu''' : Pour le coq.
'''Gérard''' : Ouais, mais je m'en fous, on continue le débat. Point d'interrogation.
'''Point''' : Oui, les fermiers peuvent en avoir des conséquences.
'''Phildar''', ''[après un bruit de pet avec la bouche]'' : Elle est indisposée, point d'interrogation.
'''Boudin noir''' : Point d'interrogation, pour une bohémienne, elle a une voix de bouveuse, hein.
'''Gérard''' : Bon. T'envoies un disque.
'''Merguez''' : Point d'interrogation, on lui parle de vaches et ça l'excite.
'''Gérard''' : Allez, hop.
'''Manu''' : Non, non, pas de disque, c'est pas possible.
'''Gérard''' : Non, non, Max ! Max ! Max !
'''Phildar''' : Non, il n'est pas là ! Il faut que tu continues.
'''Gérard''' : Non, non, moi je vous balance un disque. Troisième [question], vous allez réfléchir, moi je fais une pause.
'''Coquer''' : J'ai pas répondu, moi.
'''Gérard''' : Non non, Cocker, t’attends !
'''Phildar''' : Cocker il voulait répondre.
'''Gérard''' : C'est pas toi qui commandes, c'est moi.
'''Phildar et Manu''' : On n’a pas de disque, on n’a rien, donc pose ta question.
'''Gérard''' : Tu te démerdes.
'''Manu''' : Non, bah non... Bah chante alors !
'''Gérard''' : Non, non, tu te démerdes, moi je continue pas avec vous deux. Allez, hop, c’est basta !
'''Phildar''' : Bon, on va chercher Olivier de la prod. ''[il ouvre la porte et appelle Olivier, en criant]''.
'''Manu''' : Allez, allez ! Gérard, pour les auditeurs... Vous êtes là ? Ça vous plaisait le débat ? Tout va bien ?
'''Gérard''' : Non, non, vous êtes en train de faire les cons tous les deux...
'''Manu''' : Mais non, c’est toi qui veux pas continuer, Gérard !
'''Reego''' : Continue le débat, Gérard, il y a des gens qui s’intéressent au moins.
'''Gérard''' : Donc, Point d'intrrogation ?
'''Point''' : Oui, donc je te dis : les fermiers pourraient en avoir des conséquences. Et comme disait... les animaux, c’est vrai qu’ils peuvent avoir aussi des conséquences, telles des séquelles, tu vois, des choses comme ça.
'''Moustique''' : Dans quel sens ?
'''Gérard''' : Euh dans quel sens, Moustique, tu arrêtes s’il te plaît !
'''Moustique''' : Mais non, mais j’ai pas compris là !
'''Gérard''' : Non, mais tu arrêtes de dire "dans quel sens", parce qu’avec Phildar et Manu, c’est toujours "et pourquoi ?" et "dans quel sens ?". OK, d’accord. Bon, Puceau ?
'''Puceau''' : Allô ? Oui, moi je trouve que tu as raison là-dessus et je te donne carte blanche, je suis à 100 %.
'''Gérard''' : Tu n’as même pas compris la question !
'''Puceau''' : Bah si ! Si le coq avait un décalage horaire par rapport à la poule... Là, je suis d’accord avec toi.
'''Gérard''' : OK. Cocker ?
'''Cocker''' : Moi je pense que ce n’est pas les fermiers, mais plutôt les animaux qui subissent des conséquences, parce que le coq ne chante plus à l’heure. Donc il a des troubles psychologiques.
'''Merguez''' : Ouais, bah moi je pense pareil, quoi. Je pense plutôt que c’est les animaux qu’ont plus de conséquences parce qu’e bon on se comprend, eux, ils ont pas de montre, alors un coup il se lèvent trop tôt, un coup c’est trop tard, et c’est compliqué, quoi. Il n’y a que le fermier qui sait.
'''Puceau''' : Oui, mais moi je dis pas... alors comment ils font ? Après c’est Puceau... Moi je veux dire, Gérard, t'as raison, c'est les animaux parce que moi j’en connais un, quand il prend son joker, il est un peu dépoussolé, quoi.
'''Gérard''' : Ouais... Alors Puceau, tu sais ce que tu vas faire ? Tu vas te faire dépuceler au standard. Pour Puceau, terminé pour lui ! Allez, on continue. Donc, je réponds quand même à la question si ça dérange personne, et on va envoyer un disque.
'''Manu''' : Ah bah non, pas tout de suite ! Encore une question et après on l’envoie.
'''Gérard''' : Ouais, moi je peux vous dire une chose : quand je dis "les fermiers", oui, ils supportent... ils ont du mal à supporter le décalage d’heure parce que pour la récolte de tout ce qu’ils ont à faire, ils n’y arriveront pas. Ça...
'''Manu''' : Mais vas-y ! Mais vas-y, je coupe les auditeurs pour que tu puisses parler.
'''Gérard''' : Donc, moi je peux vous dire une chose que là, je me suis aperçu hier en allant se balader : c’est que dans certains coins, le maïs, pour l’instant, ils n’arrivent pas à le récolter
'''Phildar''' : Pourquoi ?
'''Boudin noir''' : Parce qu’ils se lèvent plus tôt le matin avec le décalage horaire, le maïs, il comprend plus rien.
'''Gérard''' : Non, non, non, non, parce qu’avec le temps qu’ils ont, ils peuvent pas le récupérer.
'''Phildar''' : Est-ce qu’on change d’heure quand on va en Allemagne ? Puisque tu es allé en Allemagne hier, Gérard, est-ce que tu as dû changer d’heure ou pas ?
'''Gérard''' : Non, c’est toujours la même heure, l’heure française pour l’instant.
'''Phildar''' : Parce que ce que je comprends pas, c’est pourquoi on change d’heure en Italie et on change pas d’heure en Allemagne.
'''Gérard''' : Parce que le décalage d’heure... le décalage horaire en Italie, je sais pas s'il y a un décalage horaire.
'''Phildar''' : Il y a une heure en moins.
'''Gérard''' : Non, je pense pas.
'''Phildar''' : Si, si, si, je suis allé en Italie, je te jure, il y a une heure en moins !
''Manu ''' : Je croyais que ça venait des fuseaux horaires parce qu’en Italie ils en ont, et en fait en Allemagne ils portent des pattes d'eph, donc...
'''Gérard''' : Ouais, c’est ça... Faites votre popote hors antenne tous les deux ! Troisième question... et après on s’envoie... quatrième, pardon : Croyez-vous qu’on dépense moins de courant ? On va demander à Moustique.
'''Moustique''' : Ouais, alors ça c’est une légende urbaine. En fait c’est complètement faux, parce que tout le courant que tu économises le soir, tu le brûles le matin. Donc ça sert à rien du tout.
'''Gérard''' : De toute manière que tu le dépenses le matin ou le soir, c’est pareil.
'''Moustique''' : Voilà, donc le problème est le même.
'''Gérard''' : Donc en fin de compte, si tu veux, le décalage horaire ça sert à rien, parce que par exemple là tu allumes ta lumière, il est 2h10. Demain matin, tu vas rallumer ta lumière, il va être... ça dépend à quelle heure tu te lèves et ça dépend ce que tu fais comme boulot. Bon attends, derrière, toi tu la fermes ! D’accord ? Pour l’instant je réponds à Moustique. OK ? Alors toi, tu la fermes, OK ! Donc selon ce qu'on fait comme boulot, c’est pareil le matin, tu allumes ta lumière pour te préparer... Donc en fin de compte, tu n’économises pas du tout, tu n’économises pas de courant et tu en dépenses autant. Donc en fin de compte, ça sert à rien.
'''Reego''' : Gérard ? Oui, Gégé, sur IRC il y a Coyote Bip qui me demande ce que tu penses du décalage horaire de l’espace.
'''Gérard''' : Justement, c’est une question qu’on allait faire à la fin.
'''Merguez''' : Ouais, parce que si des ovnis viennent chez nous, comment on fait pour être à la même horaire ? Parce que imagine... imagine qu'ils n’ont pas l'heure que nous, ils viennent la nuit, qui sera là pour les accueillir ?
'''Moustique''' : Et ils ont quelle heure ?
'''Merguez''' : Bah oui mais on sait pas, parce qu’on n’arrête pas de décaler... alors c’est le bordel, quoi. Faudrait qu'on se mette tous d'accord.
'''Gérard''' : Point d’interrogation...
'''Point''' : Tu sais, tu es obligé d’allumer la lumière, même les personnes qui veulent faire des mots croisés ou quoi que ce soit, ils sont obligés d’allumer la lumière en même temps. Même les gens qui sont aveugles, ils sont obligés d'allumer la lumière.
'''Merguez''' : Parce que tu vas nous faire croire que tu fais des mots croisés peut-être ?
'''Gérard''' : Allez, hop ! tu me vires ! Tu me vires ! tu me changes parce que là... depuis que Max est parti, là vous me faites que déconner.
'''Manu''' : Tu veux qu'on te change, Gérard, t'as fait pipi ? Autant pour moi.
'''Boudin noir''' : Moi déjà, je vais te dire : je suis un homme des bois. Donc déjà j’habite dans les bois, comme tu as compris, et je me chauffe à la bûche et je m’éclaire à la chandelle. Donc à la limite, tes histoires de courant, je n’en ai rien à carrer. Je crois que toi aussi, t'es un peu un homme des bois quand même.
'''Gérard''' : Ben ferme-là, ça vaudra mieux. Faudra-t-il se coucher plus tôt qu’en été ? Et on s’écoute...
'''Phildar''' : Donc ça c’est la question à laquelle ils doivent réfléchir. D’accord ? Tu relances les numéros, tout ça...
'''Gérard''' : 0800 70 5000 et toujours le 36 15 code Fun Radio, rubrique direct. Et on a... on a qui sur le Minitel ? Quentin : « À vous deux, Max et Gérard, me devez 60 000 balles. » Je sais pas ce qu'il voudra dire... Ben tant pis pour toi ! Donc sur l'IRC, qui c’est qu'on doit saluer ?
'''Reego''' : On salue tout le monde : on salue Clifford, Nico-2, Serval, Trois Solos, Lenni, TSM, etc.
'''Gérard''' : Et le numéro IRC parce que je ne le connais pas de tête ?
'''Reego''' : : irc.funradio.fr. Voilà !
'''Gérard''' : Vous pouvez toujours continuer à nous appeler, donc on est toujours là pour la suite des débats à 2h13. Et on va s’écouter "Le Décalage Pubère, sans nous... avec eux...
'''Phildar''' : C’est super, on comprend tout ce que tu dis. ""{Musique]''.
'''Gérard''' : Voilà, c'était Décalage Pubère sont nus avec du pinard et donc vous pouvez toujours nous appeler au 0800 70 5000, toujours 36 15 code Fun Radio et sur IRC, Reego ?
'''Manu et Reego''' : irc.funradio.fr. Allez, allez, on y va, on est là !
'''Gérard''' : Donc on récupère Moustique. 99.6. Couscous.
'''Couscous ''' : Asalam Alaykoum Gérard. J'appelle de Verdun, 93.9.
'''Gérard''' : Point d'interrogation sur 101.9.
'''Point''' : Salut, mon amour.
'''Merguez''' : C'est à moi que tu parles ?
'''Boudin noir''' : Salut cochonne.
'''Gérard''' :Attends, toi ! Qui c’est qui vient de dire "cochonne" ?
'''Phildar''' : Je crois que c’est Petit Slip. Je vais le virer.
'''Max''' : Personne aurait cinq francs ?
'''Phildar''' : Non, désolé.
'''Gérard''' : Cinq francs ? ''[il fouille dans ses poches et sort une pièce de monnaie]''.
'''Manu''' : Gérard a cinq francs... Oh là là ! Mais qu’est-ce qui se passe ? On aura tout vu.
'''Gérard''' : C’est bizarre la fréquence là, Boudin Noir ! T’es de quel coin ?
'''Boudin noir''' : Toulouse Nord. Il y a deux fréquences à Toulouse, il y a Toulouse Nord et Sud, c'est pour ça.
'''Gérard''' : Ouais, c’est ça. Bon, Cocker, au 93.9...
'''Cocker''' : Bonsoir ma caille.
'''Gérard''' : Je suis pas ta caille, et tu commences à te calmer, sinon tu vas dégager.
'''Boudin noir''' : OK chéri.
'''Phildar''' : Je le calme.
'''Gérar''' : S’il te plaît tout de suite. Et tu éteins ton micro quand... après.
'''Coker''' : Quand tu parles...
'''Gérard''' : Petit Sucre ?
'''Petit Sucre''' : D'Amiens.
'''Boudin''' : Ça va ma poule ?
'''Gérard''' : Toi, ça va être pareil, tu vas aller voir au standard ce qui se passe, hein !
'''Petit Sucre''' : OK, d’accord, j’arrête alors.
'''Gérard''' : Donc la question c’est : "Faudra-t-il se coucher plus tôt qu’en été ?" Donc on va demander à... tiens, Petit Sucre.
'''Petit Sucre''' : Ouais, ouais... Bah non, pourquoi se coucher plus tôt ? C’est en hiver qu'on se couche plus tôt, parce que l’été tu as une heure de plus, donc le soleil dure plus longtemps. bah ouais, tu comprends ?
'''Gérard''' : Non, maintenant... Tu t’écrases quand je parle s’il te plaît !
'''Boudin''' : Alors ta gueule !
'''Gérard''' : Ta gueule, il t’emmerde ! Alors tu dégages !
'''Phildar''', ''[sévère]'' : Il parlait à Petit Sucre... arrête un peu, Gérard, tu suis un peu le débat un peu ?
'''Gérard''', ''[crescendo vers le hurlement]'' : Attends, tu permets ? Il y en a un qui me dit... oh oh oh... Tu vas t’occuper de ton standard toi !
'''Manu''' : Gérard ! C’est Manu. Écoute-moi, on va reprendre le débat et c’est pas à toi qu’il disait ça.
'''Gérard''' : Cocker ? Non, attends, Petit Sucre n’a peut-être pas fini.
'''Petit Sucre''' : Ouais, bah oui, je te disais que donc... l’été on se couche une heure plus tard parce qu’on a du soleil une heure plus tard parce qu’on a une heure en moins, donc le soleil se couche plus tard. C'est l'’hiver, où on se couche plus tôt, il faut se coucher plus tôt. ''[sur la dernière phrase, dans un combiné, on entend un bruit d'eau qui coule d'un robinet dans un lavabo]''.
'''Gérard''' : Tu sais pas d’où ça vient ça, toi ?
'''Phildar''' : Attends, je vais essayer... Ah oui, ça venait de chez Couscous.
'''Petit ucre''' : Ça t’intéresses pas ce que je dis ? Tu me posais une question, je te réponds tranquillement...
'''Gérard''' : Si, mais je répondrai... Tu permets ? TU PERMETS ?! OK, merci. Reego ?
'''Reego''' : Oui, sur IRC il y a Serval qui demande : "Alors, est-ce que c’est à cause du décalage horaire que les chauffeurs de Mercedes s’endorment au volant ?"
'''Gérard''' : Alors là, j’y réponds pas. Là, tu peux y mettre... Non.
'''Reego''' : Mais il t’entend. Tu peux lui dire... Il s'appelle Serval. Tu lui dis : « Serval, non... ».
'''Gérard''' : Serval, je peux te dire ta question, de toute manière je te répondrai pas dessus, parce que je sais à quoi tu veux en venir. Alors Cocker ?
'''Cocker''' : Je vais en discothèque.
'''Gérard''' : Cocker ?
'''Cocker''' : Oui ? Ah bah non, c’est le décalage horaire, je me suis trompé de débat.
'''Gérard''' : Bon bah OK ! Alors si tu t’es trompé de débat... Cocker ? Tu vas répondre ou pas à la question ?
'''Cocker''' : Bah non... La différence d'âge...
'''Gérard''' : Bonne nuit Cocker ! Terminé pour toi ! Boudin Noir ?
'''Boudin Noir''' : Ouais, moi je pense tu vois que... ça, ça dépend sous quelle latitude tu te trouves.
'''Gérard''' : Non, mais faudra-t-il se coucher plus tôt qu'en été ?
'''Boudin noir''' : Ça dépend, parce que, regarde, je vais te citer un exemple. Je regardais Star Trek, il y avait le Capitaine Kirk, il y avait Spock. Il y avait une téléportation, il y avait un décalage horaire.
'''Gérard''' : Non, mais attends, je ne vois pas du tout le rapport.
'''Boudin noir''' : Mais si, réfléchis un petit peu, c'est de la philosophie, c'est une énigme. C'est comme le père Fouras.
'''Gérard''' : Non, non, attends, boudin noir. Boudin noir, on fait un débat, on ne s'amuse pas...
'''Boudin''' : Mais ça dépend de la latitude.
'''Gérard''' : Moi, quand je fais un débat, je n'aime pas que vous vous amusez à dire « ouais » dans les...
'''Boudin noir''' : C'était une métaphore.
'''Gérard''' : Ok, d'accord. Je pense que tu es loin de comprendre le deuxième degré.
'''Boudin noir''' : J'ai du mal, le vocabulaire, j'ai du mal.
'''Gérard''' : Je pense que tu as du mal. Point d'interrogation.
'''Point''' : Oui, je pense qu'on sera obligé de se coucher un peu plus tôt que d'habitude.
'''Gérard''' : Dans quel sens ?
'''Point d'interrogation''' : Dans quel sens ? Si tu travailles ou si tu vas à l'école, tu es obligé de te coucher plus tôt.
'''Merguez''' : Alors va te coucher, c'est l'heure.
'''Gérard''' : Qui c'est qui vient de dire ça ? Alors, entre petit sucre et boudin noir, vous allez vous calmer, s'il vous plaît. Non, non, mais vous allez vous calmer, parce que je sens que c'est moi qui vais vous calmer tout à l'heure.
''Point ''' : Tout dépend si tu as envie de dormir ou pas.
'''Gérard''' : Non, mais attends. PHildar, tu vas commencer par me les calmer, parce que sinon... t'arrêtes pas ? pas, mais je crois que tu ne vas pas arrêter de les calmer, parce que sinon, il reste quatre questions à faire. Il est quelle heure ? Il est 2h23. Dans moins de 22 minutes, j'arrête tout.
'''Phildar''' : Ah non mais on change d'heure aujourd'hui. Il te reste 1h23 à faire.
'''Gérard''' : Oui, oui. Oui, Reego ?
'''Reego''' : Sur IRC, il y a Galéon qui demande : est-ce que l'hiver décale l'horaire de l'été ?
'''Gérard''' : Ben oui. En hiver, tu recules d'une heure ta montre. Donc là, si tu veux, les 2h24, ça fera 1h24.
'''Boudin''' : ON avance, on avance.
'''Gérard''' : Non, tu recules. Tu recules. En hiver, tu recules ta montre d'une heure. En été, tu l'avances d'une heure.
'''Boudin''' : Quand je recule, comment veux-tu ?
'''Gérard''' : Que je t'encule, d'accord ? Merci pour la blague, je la connais par cœur.
'''Manu''' : Et Gérard, il paraît qu'avec le décalage horaire à New York, quand il est midi, il y a beaucoup de gens qui sont en train de bouffer. C'est vrai ou pas ?
'''Gérard''' : Attends, là, il est 2h25, on dort, nous.
'''Manu''' : Non, mais je te parle à New York. Est-ce que tu penses que les gens sont en train de manger ?
'''Gérard''' : Non, mais attends. Quand il est midi à New York, vous, vous êtes en train de faire de la radio. Donc là, à l'heure actuelle, si tu veux, il est 2h24, donc nous, pour l'instant, on est en train de dormir.
'''Manu''' : Quel rapport avec les gens qui mangent à New York ?
'''Boudin''' : Pour eux, il est 15h du matin.
'''Merguez''' : Mais Gérard, quand les gens t'écoutent à New York, il est quelle heure, là-bas ?
'''Petit sucre''' : Est-ce qu'ils peuvent t'écouter, au moins ?
'''Gérard''' : De tte manière, tu regardes, tu fais un décalage, il est 2h25, tu fais moins 6h. Ça fait 12h25.
'''Couscous''' : Attends, mais Gérard, mais tu fais un balayage arrière ou avant ?
'''Gérard''' : Attends, c'est qui, lui ?
'''Phildar''' : C'est Couscous. ''[rot dans un combiné]''.
'''Gérard''' : Bon, attendez, attendez. Oh là. Alors, déjà, Phildar. Tu me calmes Boudin noir et sucre. Tu vas me les calmer tous les deux ! Parce que le premier qui rote, Je l'éclate. ''[le bruit reprend, Phildar ne bouge pas, Gérard tape sur la table]''. C'est toi que je vais t'éclater.
'''Phildar''' : Comment veux-tu que je rote avec le micro fermé ?
'''Merguez''' : Gérard, comment ça se fait qu'il y a pratiquement pas de femmes dans ton débat, ce oir ?
'''Gérard''' : Si, il y a moustique et point d'interrogation.
'''Couscous''' : C'est pas une femme, point d'interrogation. C'est une boule d'éléphant.
'''Gérard''' : Alors, Couscous. COUSCOUS !
'''Couscous''' : Mon cousin Gérard, tu vas bien ?
'''Gérard''' : Bon, tu réponds à la question, s'il te plaît.
'''Couscous''' : Ok, alors moi, écoute. Je suis comme toi, je vais au resto du cœur et je crois qu'en hiver, on mange plus tôt à 3h de l'après-midi. Donc, on peut se coucher plus tôt, tu as raison.
'''Moustique''' : Ben moi, je me couche plus tard en été, ouais. Parce qu'il fait beau et puis que je suis en vacances, donc je me couche plus tard.
'''Gérard''' : Ben voilà. Ouais, pourquoi ? Parce qu'en fin de compte... ''[Ouais est dit de manière légère, comme en espagnol. Phildar réagit directement en se moquant : Ouepa et Manu enchaîne sur Un, dos tres de Ricky Martins. Gérard se tourne vers Phildar et veut le frapper, mais reego le retient.]''.
'''Reego et Manu''' : Arrête, Gérard !
'''Gérard''' : Toi, tu te calmes là-bas, ok ? Parce que sinon, je t'éclate.
'''Manu''' : Oula. Ça va être chaud pour ton matricule, Phil.
'''Gérard''' : Toi, tu ne vas pas continué comme ça. Donc, je réponds à... Qui c'est qui m'a posé la question ? Non, c'est Moustique. Donc, moi, je vais dire une chose, que le mieux, c'est... ''[un rot]''. Manu, fais gaffe.
'''PHildar''' : Je t'éclate.
'''Gérard''', ''[le sourire gêné]'' : Hien Reego ?
'''Reego''' : Non c'est juste pour rire, j'ai...
'''Gérard''' : Non, non, mais... Arrêtez quand je réponds aux questions, parce que sinon, moi, je ne réponds pas. Je fais le débat sans répondre à aucune question.
'''Manu''' : Vas-y, réponds, réponds, réponds.
'''Gérard''' : Donc, je réponds à Moustique. Donc, c'est vrai que tu peux te coucher plus tard l'été, parce que le soleil, de toute manière, la nuit vient plus tard. Tu es d'accord avec moi ?
'''Moustique''' : Oui.
'''Max''' : Par exemple, excuse-moi, je pensais à un truc, parce que je me dis, par exemple, quand on dit le soleil vient de se lever, c'est encore une belle journée. On va bientôt s'amuser, l'ami Ricoré. C'est considéré comme du décalage horaire ou pas, ça ?
'''Gérard''' : Ça, je ne peux pas. Je ne peux pas te répondre là-dessus.
'''Boudin''' : Ah ouais, d'ailleurs, attends, Gérard, l'ami Ricoré, il vient toujours à la même heure ou pas ? C'est une question intéressante.
'''Merguez''' : Ah ouais, en fait, comment il fait, lui, pour le décalage horaire ?
'''Boudin''' : L'ami Ricoré, il a une heure, pendant une heure, il se fait chier, en fait, en hiver.
'''Gérard''' : Bon, il se fait chier. Si tu as envie de chier, tu vas à la deuxième porte à droite. Bon, pour l'instant, je réponds à la question à Moustique, s'il vous plaît. Merci.
'''Couscous''' : Gérard, tu as raison, parce que la deuxième porte à droite, c'est les chiottes de la Loco.
'''Gérard''', ''[sourire gêné, tentant maladroitement l'accent arabe sur le prénom]'' : Couscous tu vas te calmer. Tu te calmes, parce que cette histoire de chiottes de la Loco, je ne veux pas en entendre parler cette année.
'''Moustique''' : Gérard, tu sais, dans la chanson, il est 5h, Paris s'éveille. En hiver, c'est les 6h.
'''Gérard''' : Ouais, si tu veux. Bon, je réponds à ta question, quand même, parce que je ne voudrais pas qu'on s'éternise trop sur la même question. Alors, donc, moi, je peux te dire que c'est vrai qu'en été, tu peux te coucher vachement plus tard, parce que, bon, déjà, à 10h, il fait encore jour. Ouais, mais même, tu n'as pas besoin de faire la fête, tu peux te balader dans...
'''Boudin noir''' : Ouais, non, tu vas en soirée techno, tu vas à Cannes et tout, c'est bon.
'''Gérard''' : Non, mais ça y est, je réponds, s'il vous plaît, merci. Vous arrêtez de me couper sans arrêt. Donc, je réponds à Moustique. Donc, c'est vrai que tu peux te coucher plus tard la nuit, en été. Parce qu'à 10h, il fait quand même encore jour. Par rapport à maintenant, c'est qu'à partir de 8h, la nuit est carrément tombée. Là, tu ne peux plus rien faire.
'''Manu''' : Ouais, mais si chez toi, tu fermes les volets en été, il fait quand même...
'''Gérard''' : Bah non, mais même, de toute manière, en été... Non, mais que ce soit été comme hiver, de toute manière, tu as toujours du jour. Tu n'as pas besoin d'allumer ta lumière, même en ayant fermé les volets.
'''Manu''' : Même pour dormir, en fait.
'''Gérard''' : Moi, je ferme les volets de la chambre, c'est tout. Dans la salle, c'est allumé. Dans la cuisine, c'est allumé. Mais tu peux demander à point d'interrogation.
'''Phildar''' : Excuse-moi, Gérard, deux secondes avant de continuer. On accueille Loudné à la place de Coquer.
'''Gérard''' : Non, mais... Je te préviens. Ne me fais pas changer les noms. Non, Loudné, il est d'où ?
'''Phildar''' : Loudné, t'es d'où ?
'''Loudné''' : De Marseille. ''[Manu renifle, le nez encombré]''
'''Gérard''' : Fréquence ?
'''Phildar''' : 103.1.
'''Gérard''' : Celui qui ronfle, merci. Donc, les enfants souffrent-ils de ce...
'''Point''' : Je n'ai pas répondu. Point d'interrogation.
'''Merguez''' : Oui, mais ce n'est pas grave, tu comprends...
'''Gérard''' : Oh ! Vous fermez vos... Vous vous la fermez, s'il vous plaît, derrière. Merci.
'''Point''' : Tu peux me répéter juste la question.
'''Gérard''' : Alors, faudra-t-il se coucher plus tôt qu'en été ?
'''Point''' : Oui, je pense qu'il faudra se coucher quand même plus tôt qu'en été.
'''Gérard''' : Et pourquoi ?
'''Point''' : Parce qu'en été, tu vois, tu n'es pas obligé d'allumer la lumière, déjà, en été, qu'en hiver... Et je pense que tu peux te coucher plus tôt.
'''Gérard''' : Oui, mais... Non, mais comme Max, il posait la question, ou même Manu ou Phildar, je ne sais plus qui c'est, ou Reego, qui a posé la question. Si, par exemple, tu fermes les volets de la salle à manger ?
'''Point''' : Ben oui, là, t'es obligé d'allumer.
'''Gérard''' : Ah bon ? Tu penses qu'il faut allumer la...
'''Boudin noir''' : Non, non, quand on voit ta gueule, il vaut mieux éteindre.
'''Point''' : Ben, si tu n'es pas content, tu ne me parles pas.
'''Gérard''' : Non, non, non, attends, attends, attends, point d'interrogation. Maintenant, je veux savoir qui c'est qui a dit, quand tu vois ta gueule, machin chouette.
'''Manu''' : Dénoncez-vous, les mecs.
'''Boudin noir''', ''[voix efféminée]'' : C'est Richard.
'''Manu''' : Allez, Richard, dehors.
'''Point''' : Regarde déjà la tienne, ce sera déjà pas mal, hein.
'''Boudin''' : Oh, je viens d'arriver, je viens d'arriver, arrêtez.
'''Phildar''' : Non, Richard, tu vires, c'est tout.
'''Boudin''' : Ah, je me suis laissé aller, excusez-moi. Excusez-moi, je ne le ferai plus, allez, j'arrête.
'''Merguez''' : Ben, c'est vrai que c'est tentant.
'''Manu''' : Allez, Gérard, on y va.
'''Gérard''' : Donc, moi, je pense que tu as répondu quand même aux questions qu'on avait dites ? Attends, il y a... point d'interrogation... il y a une question IRC.
'''Reego''' : Oui, ça la concerne, en plus, c'est TSM qui me demande, enfin, qui te demande s'il y a un décalage horaire entre la fesse gauche et la fesse droite du point d'interrogation.
'''Phildar''' : Non, il y a un trou.
'''Reego''' : Pour ne pas la citer, hein, c'est Sandy.
'''Boudin''' : À peu près 70cm.
'''Reego''', ''[regard désespéré de Gérard]'' : C'est pas Snady, le point d'interrogation ?
'''Manu''' : Mais non !
'''Reego''' : Ah pardon, excusez-moi.
'''Phildar''' : T'es vraiment une cave, Reego.
'''Gérard''' : Alors, les enfants souffrent-ils de ce changement d'heure ?
'''Boudin noir''' : C'est dégueulasse, il ne faut pas laisser les enfants souffrir, c'est boudin, là.
'''Gérard''' : Oh, vous donnez vos noms, s'il vous plaît.
'''Boudin''' : Ouais, je dis, il ne faut pas laisser les enfants souffrir. C'est dégueulasse ce que fait le gouvernement avec le décalage. Les enfants, ils souffrent, ce n'est pas bien.
'''Gérard''' : Non, mais attends, ce n'est pas le gouvernement qui a décidé de changer d'heure.
'''Boudin''' : C'est qui, le décalage horaire, alors, d'après toi.
'''Couscous''' : Bon, ben, c'est Couscous. Moi, je crois aussi que les enfants, ils souffrent trop. Et moi, je suis d'accord avec toi, Gérard, que tu as beaucoup souffert lorsqu'on t'a mis dans la machine à laver. Ils t'ont mis en essorage, toi.
'''Gérard''' : Couscous ? Ça se voit qu'il y a longtemps qu'on ne t'a pas eu, parce que pour l'instant, tu es en train de déconner. Ouais, mais heureusement que tu es là pour mettre un peu du piment, mais...
'''Couscous''' : C'est pas du piment, c'est de la harissa.
'''Gérard''' : Ouais, mais Couscous ?
'''Couscous''' : Oui, mon cousin Gérard.
'''Gérard''' : Eh, calme-toi, on reprend là gentiment, mais déconne pas trop. On va demander à... Donc, pour toi, Couscous, les enfants, ils souffrent ou pas, toi ?
'''Couscous''' : Couscous, ils souffrent un maximum. Ouais, c'est comme si tu mangeais de la harissa.
'''Moustique''' : Ouais, bah je sais pas, moi je me souviens pas quand j'étais enfant, si je souffrais, donc... Les autres, je sais pas, ça c'est leur problème. Moi, je me souviens pas. Parce que quand j'étais petite, on changeait déjà d'horaire, et je me souviens pas si je souffrais.
'''Gérard''' : Non, mais attends. T'habites où, toi ?
'''Moustique''' : Euh, j'habite Poitiers.
'''Gérard''' : T'habites Poitiers ? T'as quel âge, sans indiscrétion ?
'''Moustique''' : 21.
'''Gérard''' : Euh, 21, et... Euh, t'as jamais souffert du décalage d'horaire depuis le temps qu'on en parle ?
'''Moustique''' : Bah, je m'en souviens pas, hein, quand j'étais petite, quand j'étais bébé, je sais pas si j'en souffrais, hein.
'''Manu''' : De toute façon, c'est tous les 22 ans, donc elle peut pas s'en souffrir.
'''Gérard''' : Non, c'est pas tous les 22 ans, c'est tous les ans qu'on change d'heure, hein.
'''Manu''' : Ah bon ? Ouais, mais avec le décalage, ça revient à 22 ans pour la Grèce.
'''Gérard''' : Non, non, attends, elle habite pas en Grèce, alors arrête tes conneries, toi. Bon, Boudin Noir ?
'''Boudin''' : T'as déjà répondu tout à l'heure, faut pas laisser les enfants souffrir, c'est pas bien. Tu veux traumatiser les futures générations ?
'''Petit sucre''' : Ouais, bah moi, je dis, je comprends pas du tout pourquoi on parle des enfants, euh... Je vois pas trop ce que ça a à faire là-dedans, hein. Faut les laisser tranquilles, les enfants. Faut vraiment que tu parles des enfants, quoi, parce que pour eux, c'est très dur de supporter ça. Et voilà, quoi, tu vois, en ce moment, là, s'il y en a qui nous écoutent, et bah, on est en train de leur rappeler des mauvais souvenirs.
'''Boudin''' : Voilà, on est avec vous, les enfants, on est avec vous.
'''Petit sucre''' : On n'est pas mercredi, c'est pas le jour des enfants, alors...
'''Boudin''' : Je veux dire, comme disait la Bardot, il faut sauver les bébés-enfants, hein.
'''Petit sucre''' : Ah, non, mais tu vois, je trouve vraiment que c'est trop facile, quoi, de parler des enfants comme ça, à la radio, hein.
'''Gérard''' : Alors, moi, je vais te répondre, petit sucre. C'est pas parce qu'on parle des enfants, c'est qu'il y a des nouveaux-nés, ils souffrent, quand même, pour prendre leur biberon. Parce qu'avec le décalage horaire, on ne sait plus à quelle heure leur donner. On est bien d'accord ? ''[applaudissements et ovation par Manu et Phildar]''. Donc, on parle pas d'autres enfants, on parle de ceux qui viennent de naître pour leur donner leur biberon.
'''Petit sucre''' : Ouais, bah, tu sais, ceux qui viennent de naître, c'est dur, la vie avec eux, tout ce qu'ils voyaient à la télé, tout, l'affaire Clinton, le décalage horaire...
'''Gérard''' : Non, mais attends, attends, attends, je vois pas le rapport là-dessus, d'accord ?
'''Petit sucre''' : Bah, eux, ils voient ça dès qu'ils sont tout petits.
Non, non, mais attends, ils comprennent rien, quand ils sont...
'''Gérard''' : Tiens, tiens, tiens, tu les prends pour des cons.
'''Petit sucre''' : Ils sont pas cons, ils comprennent.
'''Gérard''' : Non, mais ils sont moins cons que toi. D'accord ? Loundé ?
'''Loudné''' : Bah, moi, je pense que, oui, les jeunes enfants souffrent, parce que, mettons, un enfant qui, mettons, va faire sa crotte à 6h, lorsqu'il change d'heure, il la fait dans son lit.
'''Gérard''' : D'accord, je vois pas le rapport. Reego, t'avais une question IRC ?
'''Reego''' : Oui, c'est Coyote Bip qui te demande si c'est pas trop dur à gérer le décalage horaire quand on sait pas compter.
'''Gérard''' : Mais ça, je vois pas le rapport. Y'a pas besoin de savoir compter pour le décalage horaire. Donc, euh... Ouais, bah, il nous reste encore 10 minutes, donc, euh...
'''Petit sucre''' : Et moi, j'ai une question, Gérard. Toi, t'as pas peur d'arriver une heure plus tôt à la Loco avec le décalage horaire ?
'''Gérard''' : Alors, moi, je vais te dire une chose, que à la Loco, j'y vais plus. D'accord ?
'''Max''' : Quand est-ce que tu reviens, d'ailleurs ?
'''Gérard''' : Non, non, non, non ! Non, non, non, mais attends ! Moi, je vais répondre... Attendez, s'il vous plaît ! Parce que vos histoires de conneries, les chiottes de la loco et tout ça, maintenant, vous allez arrêter de me casser les couilles avec ça ! Parce que je commence à en avoir ras-le-bol ! Et celui qui s'amuse à envoyer des conneries chez moi, t'arrêtes encore ! Et maintenant, je vais demander à Phildar et à Manu, qui c'est qui a donné le numéro de portable ?
'''Manu''' : Mais c'est pas nous, Gérard ! On va pas revenir là-dessus, on va reprendre le débat, c'est pas nous, quoi !
'''Gérard''' : Non, non, non, mais moi, je vais régler mon histoire, maintenant ! Non, non, mais juste avant la huitième, maintenant, je veux savoir qui c'est qui a été balancer... Qui c'est qui nous a mis un papier dans la boîte aux lettres en nous donnant un numéro ?
'''Manu''' : Bah, j'en sais rien, moi !
'''Reego''' : C'est pas le thème du débat !
'''Gérard''' : Non, non, mais je préfère en parler quand même entre deux !
'''Point''' : Non, non, mais t'en parleras après, c'est pas grave ! Moi, j'ai pas répondu à la question, hein ! Donc, les bébés, oui, ils en souffrent, hein, parce que dès que tu leur donnes le biberon, déjà, qu'ils veulent pas le prendre, déjà, ils ont pas envie de le prendre, ils le prennent quand ils veulent, mais je pense qu'ils en souffrent beaucoup, hein, du décalage horaire, quand même, hein !
'''Gérard''', ''[tourné vers Reego, déconcentré]'' : Ouais, d'accord ! C'est bien ! Ouais, non, mais... Non, parce qu'il y a Reego qui voulait me dire quelque chose, euh... Donc, la huitième, le soleil est-il responsable du décalage horaire ? Moustique ?
'''Moustique''' : Bah, bonne question, là, tu vois, j'ai réfléchi, euh... Je pense que ça vient plutôt de la Lune et avec les marées.
'''Couscous''' : Moi, je suis d'accord avec toi, Gérard, parce que lorsque tu es resté trop longtemps au soleil, je crois que ton cerveau a fondu, et puis il y a eu un décalage horaire...
'''Gérard''' : Non, mais il n'y a pas que le savon qui fond, il y a pas mal de trucs, hein !
'''Couscous''' : Mais toi, en tant qu'ex-enfant, tu as souffert ?
'''Gérard''' : Euh, oui !
'''Couscous''' : Tu as beaucoup souffert, je crois, hein !
'''Gérard''' : Ouais !
'''Couscous''' : Tu peux nous en parler un petit peu ?
'''Gérard''' : Non, non, mais ça, ça, c'est un truc que j'ai souffert, que je dirais pas sur l'antenne, parce que ça regarde personne !
'''Phildar''' : T'as souffert du décalage horaire, Gérard ?
'''Gérard''' : Non, mais attends ! Parce que si tu veux, si tu veux, si tu veux, on arrête là, sur la huitième...
'''Phildar''' : Non, mais je te pose la question !
'''Gérard''' : Non, mais attends ! Non, mais attends ! Attends, attends, attends ! Attends, Phildar ! Phildar, moi, si tu veux, on arrête à la huitième, moi, je vais parler de toute ma vie !
'''Phildar''' : Ah non, bah non !
'''Boudin''' : Non, non, franchement, on s'en fout !
'''Gérard''' : Parce que sinon, moi, le prochain débat, on fait pourquoi l'enfance abandonnée.<ref name="explic3"></ref> Ça, si tu veux, là...
'''Phildar''' : On parlait du décalage horaire sur les enfants, c'est pour ça !
'''Gérard''' : Non, non, mais attends ! Mais dans ces cas-là, moi, je veux bien ! Mais moi, la semaine prochaine, on fait un débat sur l'enfance abandonnée et là, tu vas voir qu'on va avoir personne au standard ! Parce que ça, c'est un truc que je ne ferais pas !
'''Phildar''' : Ah oui, bah oui ! Non, mais t'as raison ! ''[bruit de rires d'enfants]''.
'''Gérard''' : Parce que... Attends, qui c'est qui se marre comme un perdu, là ? Ouais, bah, moi, je vais vous dire une chose ! Alors, avant de dire des conneries, de se marrer, essayez de comprendre dans votre tête ! Non, non, mais essayez de comprendre !
'''Max''' : Mais toi, t'as envie de nous casser le moral, là ? Non, mais c'est toi qui a inventé, reviens sur le débat !
'''Gérard''' : Alors Phildar, tu te calmes, ok ? Maintenant, t'éteins ton micro, je veux plus t'entendre !
'''Petit sucre''' : Ouais, t'es pas sur Europe 1 là, c'est bon, quoi !<ref name="hist3"></ref>
'''Boudin''' : Ouais, Gégé ! Gégé, c'est Boudin Noir ! Ouais, moi, je voulais dire, je comprends tout à fait, je sais que t'as été décalé, et je sais, en fait, que t'es retardé, quoi, c'est ça ?
'''Gérard''' : Non, attends, je vois pas du tout ce que tu...
'''Boudin''' : Attends, toi, t'es en avance, toi, c'est clair, t'es pas en avance, c'est clair ! Donc, bah, si t'es pas en avance, t'es retardé, quoi, je vois que ça !
Gérard''' ''' : Ouais, bah, attends, Boudin Noir ! Pour l'instant, je crois que t'es à côté de la plaque !
'''Boudin''' : Ah, bah, non, je suis en plein dedans, là !
'''Gérard''' : Ouais, bah, je pense que tu ferais mieux d'écouter ce qu'on dit !
'''Couscous''' : Et pourquoi on n'appelle pas Point d'interrogation Boudin ?
'''Gérard''' : Euh, non, parce que le point d'interrogation, c'est son nom ! Euh, Petit Sucre ! Donc, pour toi ?
'''Petit sucre''' : Ouais, ouais, ouais, bah, pour moi, non, je pense pas que c'est la faute du soleil, en fait, ça, c'est l'embrouille, quoi, ça, en fait, on nous ment. Pour moi, c'est... Parce que regarde, avant, ça existait pas, quoi, avant, Gérard, le décalage horaire, il y a, par exemple, 500 ans de ça. On parlait pas de ça ! L'horaire qu'il y avait aux Etats-Unis, tout le monde avait le même horaire ! Et tout ça, en fait, on parle des horaires pour pas parler d'autre chose, tu comprends ? Tu vois ce que je veux dire, tu comprends, toi ?
'''Gérard''' : Ouais, mais attends, c'est pas nous qui avons décidé du décalage horaire !
'''Petit sucre''' : Bien sûr que si, parce qu'avant, il y en avait pas, avant, on en parlait même pas !
'''Gérard''' : Non, Petit Sucre, moi je vais te dire une chose, c'est pas nous qui avons, c'est pas nous, des gens comme tout le monde, c'est pas nous qui avons décidé ça, de changer les horaires. C'est le gouvernement ! Le gouvernement a décidé que maintenant, on changerait d'heure tous les ans, donc normalement, on devrait finir, ça devrait être la dernière année, et apparemment, on est toujours sur le même point. Tout le temps, on nous dit, oui, c'est la dernière année, c'est la dernière année, et en fin de compte, on s'aperçoit qu'on recommence, et ça va repartir l'année prochaine, au mois de mars, on va revenir en heure d'été, donc au lieu d'avancer nos montres, au lieu de les reculer, on va les avancer, au mois d'octobre ou au mois de septembre, septembre-octobre, on va encore reculer nos montres, on va plus savoir...
'''Manu''' : Et comment ça se fait, Gérard, justement, qu'ils ont décidé que c'est la dernière année, pourquoi ?
'''Gérard''' : De toute manière, c'est vis-à-vis du gouvernement, avec toutes les villes européennes, la Belgique a décidé qu'on arrêtait, l'Allemagne a dit on continue, donc ça a été voté à l'unanimité, donc pour qu'on continue. Mais moi, je trouve que pour moi, c'est de la merde de changer sans arrêt, parce qu'en fin de compte, qui c'est qui est perturbé ? C'est les petits bébés, c'est tout le monde, parce que les biberons sont décalés et tout ça, et eux, dans leur tête, ils ne peuvent pas le voir.
'''Manu''' : Et donc, en fait, l'année prochaine, il sera la même heure à New York qu'en France ?
'''Gérard''' : Mais non, je ne vois pas...
'''Manu''' : S'il n'y a plus de décalage horaire, il sera la même heure partout ?
'''Gérard''' : Mais si, mais non, mais de toute manière, le décalage horaire, on l'aura tout le temps. On l'aura tout le temps.
'''Couscous''' : Non, mais Gérard, écoute, c'est Couscous. Moi, je te dis la chose suivante. La semaine dernière, je t'entends parler à la radio le matin, et maintenant, je t'entends parler le soir.
'''Petit sucre''' : Et on a changé d'heure. Même à Fun.
'''Gérard''' : Là, moi, je vais vous répondre. De toute manière, ce n'est même pas à moi de vous répondre. Non, non, ce n'est pas un décalage horaire. C'est pas un décalage horaire, Couscous. Non, mais le matin, c'est pas moi qui avais décidé, c'est mon chef. Maintenant, si le chef, il a décidé de reprendre la nuit, c'est lui qui décide. C'est personne d'autre.
'''Phildar''' : Non, mais là, c'est-à-dire qu'on est en heure d'hiver, c'est tout.
'''Gérard''' : Non, mais attends, mais dans ce cas-là, je ne vois pas ce que tu vas dire, toi, parce que tout à l'heure, je vais t'en coller une, tu vas comprendre le décalage.
'''Manu''' : Oh, il n'a rien dit, il n'a rien dit, Gérard.
'''Phildar''' : Bon, on bosse en heure d'hiver. Allez, Gérard.
'''Reego''' : Bon, pour revenir au débat sur IRC, Gérard, on me demande si le décalage horaire est un pur tube.
'''Manu''' : Non, non, à mon avis, c'est juste un tube.
'''Petit sucre''' : Hé, Gérard, Gérard, j'ai une question, là, c'est petit sucre. Bon, ben, laisse-moi parler, je voulais savoir, avec l'Europe, tout ça,
est-ce qu'on va avoir tous les mêmes horaires, les pays, d'après toi ?
'''Gérard''' : Ben non, de toute manière, tout le monde...
'''Petit sucre''' : Eh ben si, il n'y a plus de décalage, on a tous les mêmes horaires. Quand c'est midi à Paris, c'est midi à Londres, c'est...
'''Gérard''' : Mais non, mais non, mais non, mais non. T'as qu'à trouver un bloc avec des décalages horaires, et tu verras que ce ne sera pas du tout la même heure. Non, non, essayez, essayez, stop, stop, stop, petit sucre.
'''Point''' : Je peux te poser une question ? Donc, moi, je voulais te poser une question : est-ce que tu crois qu'à l'époque de Jésus-Christ, le décalage horaire existait ?
'''Gérard''' : Bouarf là, tu me poses une colle, j'en sais rien, donc je te dis M-E-R-D-E.
'''Manu''' : Oh, carrément ?
'''Point''' : Oh, ben, merci, merci.
'''Gérard''' : Voilà. Donc, ben, je pense qu'on va faire un...
'''Reego''' : On va faire un tarot ?
'''Max''' : Non, mais il faut arrêter vers moins 5, donc on a encore 10 minutes, donc tu n'as plus de questions, là ?
'''Gérard''' : Ben, si, mais moi, je voulais faire un petit break, là.
'''Max''' : Une petite dernière question ? Ben, non, c'est fini, on va faire une question, puis après, on va arrêter, à la rigueur.
'''Gérard''' : Ben, voilà, comme je ne sais plus qui c'est qui avait posé de planète, on va y aller. Sur notre planète, existe-t-il un décalage horaire ? Donc, on va demander à Moustique.
'''Moustique''' : Ouais, alors, il paraît que sur Uranus, ce n'est pas 24 heures, c'est 75, donc c'est tout le bordel, parce que c'est 74 l'hiver, enfin, bon, ils n'arrivent pas à s'en sortir, les pauvres. Et puis, sur Mars, c'est à peu près comme sur Terre, parce que c'est la même grosseur. En fait, ça dépend de la grosseur de la planète. Ça dépend si elle tourne plus ou moins vite, et puis, ben, combien il y a de fuseaux sur la planète.
'''Couscous''' : Moi, j'ai entendu dire que les gens qui ont qu'une couille, ils ont souffert d'un décalage horaire. C'est vrai que toi, tu n'as qu'une couille, je crois, non ? Et l'autre, siliconée ?
'''Gérard''' : Non, mais je suis en train de chercher qui s'amuse à faire des conneries.
'''Point''' : J'ai pas compris la question.
'''Gérard''' : Sur une autre planète, existe-t-il un décalage horaire ?
'''Petit sucre''' : Elle va rien comprendre, déjà qu'elle capte rien sur notre planète, alors ailleurs... Ouais, ben, moi, je vais te dire, comme je disais tout à l'heure, euh, c'est sûr, euh... De toute façon, il faudrait se mettre d'accord avec les décalages horaires. Parce que si c'est un jour, c'est un jour, il y a des extraterrestres qui arrivent, que eux, ont un horaire qui n'est pas par rapport à nous, qui viennent en Europe... En Europe, que nous, on est tous d'accord, et que finalement, après, ils aillent aux Etats-Unis, c'est encore décalé, et finalement, après, ils atterrissent en Russie, euh, on va se planter, on sera... on pourra jamais tous se voir en même temps, tu comprends ce que je veux dire ? Donc, il faut trouver un système pour que ce soit un jour de partout pareil. Tu vois ?
'''Boudin noir''' : Ouais, tout à l'heure, il y avait, je crois que c'était Moustique qui parlait des planètes et de Uranus, ben, moi, je pense que dans l'espace, si on tombe sur le trou noir de ton anus, et ben, c'est clair, il y a un décalage.
'''Gérard''' : Et sur ta connerie ? Eh je pense que ta connerie, tu ferais mieux d'aller voir une nana, euh... une bonne pipeuse, et ça...
'''Petit sucre''' : Vas voir le point d'interrogation, elle est pas trop loin.
'''Gérard''' : Ouais, attends, euh, tu... Boudin noir, tu restes calme avec le point d'interrogation, d'accord ?
'''Boudin noir''' : Oui, ok, excuse-moi, le facocher.
'''Gérard''' : Alors, Boudin noir, tu dégages pour tout le temps. Hop, Boudin noir, tout le temps.
'''Petit sucre''' : Va te faire sucer par le point d'interrogation, allez, hop.
'''Gérard''' : Va le faire sauter, toi, abruti. Aller hop, terminé pour lui. Lui, c'est même pas la peine que je lui demande de...
'''Max''' : C'est mignon, facocher, hein ?
'''Reego''' : C'est... C'est beau, en plus, un facocher.
'''Loudné''' : Bah, moi, personnellement, j'arrive pas à y aller sur les autres planètes, donc je sais pas comment ça se passe.
'''Point ''' : J'ai pas répondu, hein.
'''Loudné''' : Toi, le travelo, ferme ta gueule.
'''Point''' : Non, mais je suis pas un travelo, hein.
'''Gérard''' : Alors, toi, petit sucre...
'''Phildar''' : Non, c'est pas un petit sucre.
'''Gérard''' : C'est qui ?
'''Phildar''' : Je sais pas, j'ai pas le droit de parler.
'''Gérard''' : Ouais, alors, tu me dégages. Loup de nez.
'''Manu''', ''[soufflant par le nez comme pour se moucher]'' : Attends, attends, je l'enlève. Vas-y, c'est bon.
'''Gérard''' : Non, non, tu me les dégages, ces deux-là. Vite fait. Parce que... la fin, c'est moi qui vais la faire. Donc, vas-y, point d'interrogation.
'''Point''' : Bah, je pense que, déjà, sur les autres planètes, je pense qu'il y peut y avoir un décalage horaire mais...
'''Petit sucre''' : Mais tu penses pas toi, tu parles, c'est tout ce que tu fais.
'''Gérard''', ''[hurle]'' : Ah, tu la fermes, ta gueule, toi !
'''Point''' : Mais pour ça, faudrait y aller, dans les autres planètes, pour savoir comment ça se passe.
'''Petit sucre''' : Ouais, t'as raison, tu devrais y aller. Putain !
'''Point''' : Bah, t'as qu'à y aller, toi, si t'es pas content.
'''Petit sucre''' : Et reviens pas, surtout, hein.
'''Point''' : Oh, bah, toi non plus, tu reviens pas.
'''Gérard''' : Hé, connard ! Hé, le connard ! Attends, tu me retires moustique. Tu me mets moustique en R. Tu me mets Couscous en R. Tu me mets point d'interrogation en R. Et tu me laisses, euh... Petit sucre et loup de nez. Et boudin. Hé, boudin noir ! Hé, connard ! Alors, connard, ça t'amuse, d'insulter point d'interrogation ?
'''Boudin noir''' : Mais c'est pas moi !
'''Gérard''' : Non, c'est pas toi, connard ! Non ! Non, c'est pas toi. Tu te foudras pas de ma gueule ? ''[Manu fait le moustique avec sa voix]''.
'''Boudin''' : Ah, y a une mouche.
'''Gérard''' : Ouais, y a une mouche, c'est ta connerie.
'''Boudin''' : Bah, le boudin noir, ça attire les mouches.
'''Gérard''' : Ouais, bah, le boudin noir, c'est de la merde. Bon, allez, va te coucher, ça vaudra mieux. Donc, bah, on va faire la conclusion du débat. Alors, celui qui s'amuse à rôter... AHein Max ! ''[rire]'' Oh, attends, devant mes yeux ! Grillé ! Devant mes yeux !
'''Max''' : Regarde, regarde, écoute, regarde ! ''[bruit de rôt dans un micro, mais ne venant pas de Max]''.
'''Max''' : Oh, c'était Manu !
'''Gérard''' : Attends, c'est l'autre abruti, là-bas, en face.
'''Manu''' : Merde, ça part tout seul, des fois.
'''Gérard''' : Bon, allez, conclusion du débat. Moustique.
'''Moustique''' : Ouais. ''[bruit de moustique par une voix, Manu dément, mais imite le pet avec sa bouche]''.
'''Gérard''' : Bon, allez ! Non, allez, on y va. Conclusion, conclusion.
'''Max''' : C'était bien comme débat, donc ça serait dommage que ça soit gâché.
'''Moustique''' : Voilà, c'était bien comme débat, et puis ce serait dommage que ça soit gâché par une mauvaise conclusion que j'aimerais te donner, mais que je ne te donnerais pas.
'''Max''' : Et Moustique, quand tu veux, tu nous envoies une photo de toi.
'''Moustique''' : Pas de problème, Max.
'''Couscous''' : Alors, moi, je pense que le débat, on devrait faire ça. ''[il tire la chasse d'eau]''.
'''Gérard''' : Ouais, ben, non, mais couscous, ta conclusion sur le débat.
'''Couscous''' : Bah, écoute, moi, je trouve que le... Je trouve que le débat a été super chiant, comme d'habitude, hein. Ouais, c'est tout, quoi. Et Gérard, n'oublie pas que t'es mon cousin, hein. Salut, mon cousin Gérard.
'''Gérard''' : Ok, je te remercie. Point d'interrogation ?
'''Point''' : Ben, réglez vos montres à l'heure, c'est tout.
'''Boudin''' : Ouais, ben, écoute, je suis toujours là. Je suis désolé que tu sois énervé sur moi. Sandy, je l'aime bien, en fait.
'''Gérard''' : Non, mais moi, je te demande la conclusion du débat.
?'''Boudin''' : Ben, ma conclusion, c'est Sandy, est-ce que tu veux m'épouser.
'''Point''' : Pas du tout, non.
'''Petit sucre''' : Ouais, ouais, ben, écoute, moi, je te souhaite bonne chance avec le décalage horaire, que tu restes pas à la porte de la Loco tous les vendredis. Et voilà, quoi. Puis, j'étais très content de t'avoir écouté, ça faisait un petit moment. Et débat, c'est bien sympa, quoi, t'es pas trop énervé. Pour une première salle, t'as bien géré tout ça.
'''Max''' : Ben, heureusement qu'il est pas trop énervé, si c'est que ça, qu'est-ce que ça va être en 15 jours.
'''Petit ucre''' : Et, euh, donc, ça va, puis je te souhaite de bien t'amuser avec mon interrogation.
'''Gérard''' : Ben, point d'interrogation, pour l'instant, on s'entend super bien, donc, y'a pas de problème là-dessus.
'''Petit sucre''' : Ben, surtout, tu la gardes, tu la refiles pas.
''' ''' : Ben, non, mais je vais pas te la refiler.
'''Manu''' : C'est comme une maladie, personne n'en veut, hein.
'''Gérard''' : Ben, t'inquiète pas, à la Loco, je suis pas prêt d'y retourner pour l'instant.
'''Max''' : Oh, tu viendras quand même, là, non ?
'''Gérard''' : Non, non, parce que, vu ce que j'ai reçu encore...
'''Max''' : Ouais, mais pour moi, t'es dégueulasse. Pour mon anniversaire, au moins.
'''Gérard''' : Non, non, mais attends, on va demander à Loudné sa conclusion.
'''Loudné''' : Ben, moi, je dis que, par rapport à ce qui se passe en Amérique avec Bill Kinton, euh, moi, je pense que il faudrait faire gaffe dans les locaux de la radio, parce que, point d'interrogation pourra peut-être sucer le chef.
'''Gérard''' : Non, mais attends, hé ! Hé, Loudné, je te demande le thème du débat. Je te demande la conclusion sur le décalage horaire.
'''Max''' : C'était la clnclusion, il l'a faite. Oui, trop tard pour lui, allez, hop, suivant.
'''Gérard''' : Donc, ben, il n'y a plus que moi à faire la conclusion, donc, moi, je vais te répondre avant à ta question, pourquoi on ne revient pas à la...
'''Max''' : Ah non, je m'en fous de ça, je voulais savoir si tu voulais venir, je m'en fous, c'est pas intéressant, c'est le courrier, on verra ça, on s'en fout. Ta conclusion ?
'''Gérard''' : Ma conclusion, c'est que, c'est sûr que, pour l'instant, on a fait le décalage horaire, mais je l'ai fait un peu tôt, parce que, normalement...
'''Max''' : Non, ta conclusion sur le décalage horaire, t'en penses quoi ?
'''Gérard''' : Moi, personnellement, je trouve que c'est de la... Merde. Parce que... Que tu changes, que tu recules d'une heure, ou que t'avances d'une heure, de toute manière, tu boufferas autant de courant. Là, je vois, on est parti... On est parti mardi, avec Titi, en Allemagne.
'''Max''' : Titi, c'est un camionneur qui l'a pris hier et qui l'a emmené en Allemagne, Gérard et Sandy, et donc ?
'''Gérard''' : Donc, on s'est pris de la... On pensait avoir du soleil, et en fin de compte, on s'est pris de la flotte. On est revenu...
'''Max''' : Je ne sais pas si on va arriver au rapport avec le décalage horaire, si ?
'''Gérard''' : Non, mais... De toute manière, à la base, c'est que ça n'a pas été évident.
'''Max''' : D'accord. Rien à voir avec le décalage horaire, ce qui n'est pas bien.
'''Gérard''' : Non, mais le décalage horaire, pour moi, je trouve que...
'''Max''' : D'accord. Les débats de la semaine prochaine ?
'''Gérard''' : Les débats de la semaine prochaine... La pollution et cinéma. ''[ohlàlo de désespoir dans le studio]''. Non, mais attends, c'est pas toi qui commandes, d'accord ?
'''Reego''' : Sur IRC, on me dit que c'est naze, le cinéma.
'''Manu''' : Tu vois, tout le monde le dit.
'''Gérard''' : C'est moi qui commande et c'est tout.
'''Max''' : Voilà, exactement. Donc, ça sera un débat sur le cinéma et un débat sur la pollution.
'''Gérard''' : Et pour les conseils, point d'interrogation, t'es toujours là ?
'''Max''' : Non, non, c'est bon. C'est mardi, voilà.
'''Gérard''' : Ah oui, mais on peut donner quand même...
'''Max''' : On en parlera lundi, on en parlera demain ou lundi.
'''Gérard''' : Ah non, on va en parler maintenant.
'''Max''' : Non, mais les conseils, c'est pas toi, c'est les gens. C'est en fonction de leur demande à eux. On verra ce qu'ils voudront avoir comme conseils. Tu choisiras. On verra ça.
'''Gérard''' : Vu si ça fait comme mardi dernier...
'''Max''' : Ok, d'accord, ok, on en discute. Puisque tu parlais de la Loco, je vous rappelle que demain soir, à la Loco, il y aura Funky Data pour ceux qui aiment la house. C'est un live, c'est-à-dire qu'ils sont sur scène avec le matériel. C'est des grenoblois. Et qu'il y aura Jean-Marie K, DJ Sonic, qu'on va retrouver d'ailleurs Sonic dans un instant pour la conclusion de cette émission de ce soir. Et sinon, demain soir, il y a également le Marina, le club discothèque du côté de Port-Barcares. Alors, si vous voulez venir au Port-Barcares, au Marina, vous appelez maintenant le standard de Fun Radio, 0800 70 5000. Vous pouvez venir à la Loco également gratuitement vendredi soir, pareil, 0800 70 5000. Et si vous voulez empocher pour les 10 plus rapides des albums de Funky Data, pareil, 0800 70 5000. On vous retrouve tout à l'heure à partir de 22h.
== Le débat sur la pollution ==
=== Contexte ===
La saison est lancée, mais l'émission n'en finit pas de se chercher. En ce début de saison, l'équipe tente de faire parler Gérard sur des sujets sérieux, bien que détournés souvent vu sa difficulté à les comprendre, sans accrocs. Ces tentatives s'épuiseront rapidement dans l'ennui, ramenant l'équipe à se montrer plus proactive dans la mise en scène du débat et de son animateur. Pourtant, on est au cœur du surréalisme, où tout s'adjoint sans lien ni sens, reposant sur l'incompréension générale des sujets, d'une conversation, et la manipulation adroite du second degré par tout le monde. Sur la durée, tout le monde a conscience qu'il faudra alterner les provocations et les séquences purement surréalistes, mais on commence à voir la ligne que suivra ette émission.
Elle vivra aussi un moment marquant. Au fil des appels téléphoniques, Manu a fini par tomber amoureux d'une personne prénommée Laura. Elle deviendra sa femme, on le verra plus tard. Pour partager la passion de la radio avec son nouveau copain, elle participera à cette émission et ce soir est sa première. Première d'une longue série, car elle animera toute l'année 1998-1999 au moins.
Ce thème, lui, est d'actualité. La conscience écologique est naissante mais pas encore prégnante. Le passage sur le tabac en est une bonne démonstration. Il faut y noter que rien n'y est exagéré ni particulièrement surréaliste : ce qui est dit correspond à l'état d'esprit et aux débats des gens de l'époque sur la cigarette dans les lieux publics. Son interdiction en milieu fermé n'était pas vraiment appliquée et les débats allaient bon train entre les fumeurs et les autres.
=== Les personnages ===
* Gérard Cousin : Gérard
* Phildar, Manu
* Sandy Threadkell : Sandy
* Igor : Reego
* Franck Bargine : Max
* Laura : Cactus
* Mégane : Braguette
* Arnet : Briquet, Greenpeace
* Christian : Bounty
* Coquelicot, Sucre d'orge (deux filles)
* Moustache
* Kelnumero : déjà passé lors du débat sur auto-moto, entre autres
=== Transcription ===
'''Gérard''' : Bonsoir à tous, 1h23... 0h23 pardon, on attaque avec 7 minutes d'avance, donc bonsoir Reego, donc Reego si t'as des réponses sur le thème du débat de ce soir, tu fais comme la semaine dernière, t'hésites pas.
'''Reego''' : ok pas de problème.
'''Gérard''' : Phildar...
'''Phildar''' : salut Gérard ça va ?
'''Gérard''' : Toi, pas comme la semaine dernière, ok ? Au débat Manu, au standard, donc pareil, s'il y a un problème, je te signale...
'''Manu''' : Tu dis le nom de l'auditeur et je le dégage aussi sec.
'''Gérard''' : Dt donc Olivier de la prod, qui est un peu plus loin derrière, qui viendra nous rejoindre tout à l'heure... qui viendra nous rejoindre pour le deuxième débat pour faire la réa, donc on va attaquer tout de suite avec Sucre d'orge...
'''Phildar''' : J'ai déjà Bernard sur le Minitel du 75 qui dit qu'il t'aime : « Gérard je t'aime. ». J'aime tes débats, il veut dire.
'''Gérard''' : non mais pour l'instant, on commence pas comme ça, on va déjà accueillir les gens, donc Sucre d'orge, bonsoir, 20 ans de Paris. Donc on peut écouter Fun Radio sur 101.9. Braguette, 22 ans de Clermont-Ferrand, on écoute Fun Radio sur 96.6. Coquelicot, 19 ans de Troyes, donc, on peut écouter Fun Radio sur 102.2 FM.
'''Phildar''' : Ouais, c'est chez moi !
'''Gérard''' : Ça c'est du côté de chez Phildar. Christian de la Celle-Saint-Cloud, 56 ans. Pourquoi Bounty ?
'''Phildar''' : Parce qu'il a voulu s'appeler Bounty, c'est drôle.
'''Gérard''' : Non mais on aurait pu laisser Christian, c'est pas grave. donc 101.9. Moustache, 21 ans de Toulon, on peut écouter Fun Radio sur 93.1. Et briquet.
'''Briquet''' : Bonsoir, j'allume le feu ce soir.
'''Gérard''' : Alors, Tony et Arnette, vous allez commencer à vous calmer tous les deux.
'''Phildar et Manu''' : non mais il n'y a pas de Tony et Arnette ce soir.
'''Gérard''' : non mais non, ils ne vont pas commencer à me dire, on va vous mettre le feu, ok ? Beson. donc on peut... 95, donc on peut écouter Fun Radio sur 101.9. Non, 104.8, n'est-ce pas Manu ? ok ? alors, première question, donc, je pense que vous l'avez écoutée, on en a discuté juste avant la pause,. Donc, pensez-vous que la Seine est trop polluée ?
'''Sucre d'orge''' : bah oui, elle brille. Il y a plein d'huile, toutes les couleurs, la Seine est de toutes les couleurs parce qu'elle est vraiment trop polluée, ça brille.
'''Braguette''' : oui, mais dans un autre sens, c'est joli.
'''Sucre d'orge''' : C'est joli, mais...
'''Gérard''' : non, non, non, non, non, attendez, attendez, attendez, stop, stop, stop... Pensez-vous que la Seine est trop polluée, moi, je peux... Allez-y, répondez tous, donc, sucre d'orge ?
'''SUcre''' : Moi, je dis que oui, bien sûr, elle est trop polluée, on peut pas se baigner.
'''Gérard''' : Oh, bah, tu crois que tu vas te baigner dans la Seine toi ?,
'''Sucre''' : Non, je te dis, elle est dégueulasse, elle est dégueulasse l'eau.
'''Coquelicot''' : Extrêmement polluée.
'''Braguette''' : Ouais, je trouve qu'elle est polluée, mais en même temps, c'est sympa, quoi, t'as des rats, t'as plein d'animaux, t'as des jolies couleurs, c'est vachement animé comme région.
'''Moustache''' : Ouais, bah, moi, je dis, ouais, elle est polluée, la Seine, voilà.
'''Briquet''' : Ouais, la Seine, c'est dégueulasse, il y a des gens qui balancent plein de trucs, alors qu'il y a à peu près, je sais pas. Il y a 80 ans, on pouvait se baigner dedans, quand même. Il y avait des gens qui allaient se baigner dans la Seine parce que c'était propre avant.
'''Gérard''' : Alors, moi, je vais te dire une chose. Tu pourrais me dire en quelle année que la Seine a été trop polluée et qu'on pouvait se baigner dedans ?
'''Briquet''' : Je crois que c'était en 1910, un truc comme ça.
'''Gérard''' : Ouais, bah, je pense qu'à mon avis, je crois que tu te trompes vachement, parce que la Seine, elle est polluée, et de toute manière, tu ne peux pas te baigner dedans. Pourquoi ? Parce que moi, je vais te dire pourquoi. Je pense que tout le monde va être d'accord avec moi, j'espère. C'est que toutes les personnes qui viennent avec leurs péniches ont l'habitude de balancer des saloperies, des ordures et tout. Et moi, je peux te dire une chose, que là... j'ai des écluses où que j'habite, et faites-moi confiance que là, à chaque fois qu'ils ouvrent les écluses pour laisser passer les péniches, eh ben, faites-moi confiance que ça reste bloqué. Il n'y a aucun truc qui s'en va.
'''Moustache''', ''[pendant que Manu applaudit]'' : Bien dit.
'''Briquet''' : mais il y a une centaine d'années, les gens faisaient pas ça.
'''Phildar''' : Ouais, mais il y a cent ans, ça n'existait pas, les péniches, Gérard.
'''Gérard''' : Non, mais attends, de toute manière, les péniches, je ne sais pas.
'''Manu''' : Il y a cent ans, je ne sais même pas si la Seine, elle existait.
'''Gérard''' : Non, non, mais moi, je peux vous dire une chose, qu'à l'heure actuelle, de toute manière, on ne peut pas se baigner. Moi, j'ai vu une fois une personne, je ne sais pas comment elle a fait son compte, elle est tombée. Je ne sais pas si c'est le mec qui a dérivé ou autre, mais le mec, il s'est gouré, et tout le monde est tombé, il y en a une qui est tombée dans la Seine, et justement, l'écluse s'eest ouvrée.
'''Max''' : Oui, mais c'est normal, c'est le mec, si c'était une ordure.
'''Gérard''' : Non, mais c'était une nana.
'''Max''' : C'était peut-être une ordure.
'''Gérard''' : Non, non, mais on ne sait jamais.
'''Manu''' : Donc, excuse-moi, moi, par contre, j'ai vu un mec tomber dans la Seine, eh ben, il est mort noyé, quoi.
'''Gérard''' : Non, mais attends, toi... Toi avec tes conneries...
'''Manu''' : Mais non, ce n'est pas une connerie, il est mort noyé. Est-ce que ça vient de la pollution ou pas ?
'''Gérard''' : Non, mais ça, c'est...
'''Briquet''' : Ça n'a pas de rapport avec le débat, de toute façon.
'''Gérard''' : De toute manière, ce n'est même pas une des questions.
'''Phildar''' : J'ai un petit message militel de Orem, qui a 23 ans, qui est dans le département 77, qui dit « La Seine, c'est dégueulasse, les poissons baissent dedans. »
'''Gérard''' : Non, non, non, non, mais ça, je vais te dire une chose, les gens qui s'amusent à pêcher dans la Seine... les poissons, ils peuvent les... Ils peuvent les laver au vinaigre. ''[rires et applaudissements de Manu]'' Ah, mais si ! Je peux te dire que les poissons sont... La personne qui va... qui pêche dans la Seine peut laver ses poissons avec le vinaigre parce que... Non, mais même ! Le poisson, il sera immangeable et tout.
'''Coquelicot''' : Parce qu'elle pue, la Seine !
'''Gérard''' : Ouais, mais elle pue, c'est de notre faute à nous ?
'''Moustache''' : Il y a les égoûs de Paris en même temps.
'''Gérard''' : Ouais, non, mais il faut dire une chose, c'est qu'il faut voir que dans la Seine, que dans la Seine, à l'heure actuelle, les gens balancent n'importe quoi. Même ceux qui sont en péniche, je pense qu'on doit en avoir qui nous écoutent des...
'''Phildar''' : Des pénichiers, ouais.
'''Gérard''' : Des bâteliers. On appelle ça des bâteliers. Donc, je pense qu'ils doivent nous écouter. S'ils nous écoutent, arrêtez de balancer n'importe quoi. Quand on voit des bouteilles de flotte, des bouteilles de coca, tout ça... ''[les auditeurs confirment par des cris « c'est horrible », « c'est dégueulasse »]''. Mais attendez, moi je... Reego, une question internet ?
'''Reego''' : Sur l'IRC, il y a Shun qui me disait... Qu'est-ce que tu penses du fait que Jacques Chirac avait dit qu'il se baignerait dans la Seine ? Donc, moi, je peux vous dire une chose, c'est que... Là, c'est que ça va trop loin. Moi, je peux vous dire une chose, qu'il y a même les gens, ils s'amusent à nous balancer n'importe quoi, et après, ça reste coincé. Dès qu'ils ouvrent les écluses, ça reste coincé. Et je vois, c'est en 95 ou 96, la fois où on a eu une chaleur à crever, c'est que les points... les poissons, ils étaient morts, ils remontaient. Et là, ils ont fait appel donc aux... Non, non, aux responsables...
'''Phildar''' : de la DDE ? des travaux ?
'''Gérard''' : de la Seine pour nettoyer tout ça, parce que c'était impossibe. C'était impossibe de pouvoir continuer comme ça. Donc, deuxième question, faut-il... fumer, est-il un moyen de pollution ? Donc, on va demander à Briquet.
'''Briquet''' : Ouais, alors, moi, je m'allume des cigarettes. Et non. En fait, non, ça ne pollue pas. C'est bon pour la santé, c'est ce que m'a dit mon médecin.
'''Gérard''' : Ton médecin, tu me donneras son adresse, j'irai le voir. Moustache ?
'''Moustache''' : Moi, je vais te dire que ça pollue, parce que t'as vu le nombre de gens qui fument. Moi, je dis que ça fait beaucoup de fumée, tout ça.
'''Gérard''' : Non, mais attends, moustache. Moi, je vais te dire, fumer est-il un moyen de pollution ?
'''Moustache''' : Ouais, bah ouais, ça pollue non seulement le corps, mais en plus, ça pollue les gratte-ciel.
'''Gérard''' : Non, mais, de toute manière... Attendez, s'il vous plaît, derrière, là... Donc, moi, je vais répondre à moustache. Donc, pour toi, quand tu fumes, pour toi, ça... Tu veux dire que tu pollues tout le monde ? Moi, je vais te dire une chose. Moi, qui ai l'habitude de fumer, moi, je peux te dire une chose que... Bon, d'accord, Sandy, elle aime pas quand je fume, parce que si j'ouvre pas la fenêtre, elle peut pas supporter l'odeur de la cigarette.
'''Moustache''' : Normal, bah ouais, si elle aime pas, c'est logique.
'''Gérard''' : Bah oui, mais dans ces cas-là, quand elle est dans une voiture, admettons que tu conduises, que le chauffeur qui est à côté de toi, par exemple, le passager, ne fume pas, est-ce que tu vas continuer à fumer pour l'empester ?
'''Moustache''' : Bah non, carrément pas, quoi.
'''Gérard''' : Alors, attends, attends, moustache. Qui c'est qui dit oui ?
'''Braguette''' : C'est Braguette. S'il est pas content, il prend sa voiture. Moi, je fume dans ma voiture.
'''Gérard''' : Ouais, mais attends, Braguette, si, par exemple, le passager ne fume pas, qu'est-ce que tu fais ?
'''Braguette''' : Je fume, moi, je suis dans ma voiture.
'''Bounty''' : On va dans un autre endroit.
'''Gérard''' : Donc, toi, tu l'as dans un autre endroit ou dans une autre salle.
'''Gérard''' : Ouais, mais, par exemple, mais admettons, admettons, Bounty, Christian. Admettons que t'as pas d'endroit pour non-fumeurs. Tu vas où ?
'''Bounty''' : Dans les WC.
'''Gérard''' : Ouais, mais si... admettons, dans les WC, c'est interdit.
'''Moustache''' : Bah, tu vas dehors.
'''Gérard''' : Ah, ouais, mais dans ces cas-là, dehors, ok. Mais est-ce que tu pourras re-rentrer dans là où t'étais ?
'''Phildar, Bounty et Braguette''' : Non, c'est interdit.
'''Phildar''' : Non, parce que, regarde, si tu fumes, tu vois, parce que t'es dans un lieu interdit, donc tu vas fumer dehors, mais le problème, c'est qu'après, tu sens la fumée et que t'as encore de la fumée, donc si tu rentres...
'''Gérard''' : Non, non, mais attends, pour l'instant, Phildar, c'est pas toi que je m'intéressais, c'était Christian. ''[il éteint le micro de Phildar]''.
'''PHildar''' : Ah, pardon.
'''Gérard''' : Donc, Christian, admettons que tu sortes pour fumer une cigarette, est-ce que tu pourras re-rentrer dans la boîte ?
'''Braguette''' : Mais on était dans la voiture, là et tu nous parles de boîte.
'''Gérard''' : Bah, oui, mais dans les boîtes de nuit, de toute manière, souvent...
'''Braguette''' : Moi, j'y vais pas.
'''Gérard''' : Toi, tu fumes pas ?
'''Braguette''' : Bah, si, moi, je fume.
'''Gérard''' : Bon, bah, donc, dans les boîtes de nuit, de toute manière, on a le droit de fumer. On est bien d'accord ? Donc, par contre, si t'as une personne qui est à côté de toi, qui supporte pas la cigarette et qui te dit, « est-ce que vous pouvez arrêter de fumer », qu'est-ce que vous faites ?
'''Braguette''' : Bah, il sort.
'''Gérard''' : Ah, ouais, mais si elle est dans une boîte de nuit, tu vas lui demander de sortir ?
'''Braguette''' : Ah, bah, il fait ce qu'il veut. S'il supporte pas, il va plus loin.
'''Gérard''' : Bah, il change de coin.
'''Braguette''' : Exactement.
'''Gérard''' : Ah, voilà, c'est ce que je voulais entendre dire.
'''Moustache''' : Gégé, Gégé. Moustache. Moi, je dis, quand même, c'est celui qui fume qui doit se barrer, non pas celui qui fume pas et qui est dérangé.
'''Braguette''' : Ah, non, non.
'''Gérard''' : Ouais, non, mais attends, moustache, tu vas pas demander, par exemple, si toi, t'as pas envie de fumer, tu vas pas dire à la personne, si tu fumes pas, tu dégages.
'''Moustache''' : Mais non, justement, c'est le contraire. La personne qui fume pas, normalement, elle doit rester à sa place.
'''Gérard''' : Ouais, mais c'est la plus gênée qui s'en va, alors. Ouais, mais dans une boîte de nuit, tu vas pas dire, bon, bah, tu fumes pas, tu dégages. Moi, je fume et c'est tout, point final à la ligne. Mais moi, je vois pas le rapport. Je vois pas le rapport sur la question. Parce que, d'accord, je sais...
'''Phildar''' : J'ai peut-être une solution, c'est qu'en fait, les personnes qui fument pas et donc qui sont avec des gens qui fument, en fait, ils sont privés parce qu'après, ils puent la fumée.
'''Gérard''' : Ouais, mais ça, ça s'imprime sur les vêtements, ça, je suis d'accord avec... Qui c'est qui vient de...
'''Phildar''' : Phildar, de Paris.
'''Gérard''' : Non, mais attends. Attends, Phildar, on sait que c'est toi, de Paris. Donc, c'est Bounty ou... C'est Christian ou Moustache, là.
'''Moustache''' : Ouais, c'est Moustache, c'est Moustache.
'''Gérard''' : Non, mais je voudrais bien que les trois filles aussi réagissent un peu, là. Non, parce qu'on les entend pas assez, là.
'''COquelicot''' : Oui, non, mais nous, on est là, on écoute, on est passionnées. On se dit que fumer, de toute façon, ça salit. Onsent dans les doigts, on sent dans les vêtements, on sent partout, donc on est grillés, hein.
'''Braguette''' : C'est une bonne odeur qui pue bien, moi, je trouve.
'''Gérard''' : Ouais, mais moi, dans ces cas-là... Oh, là, qui c'est qui a un téléphone pourri, là ?
'''Sucre d'orge''' : Là, c'est Sucre d'Orge, là. Ouais, enfin, moi, je trouve que... je veux dire, tu sors dans la rue, les voitures, ça te dérange, tu vas pas dire aux gars... Enfin, si, tu vas pas dire au gars, vas-y, arrête de conduire, quoi.
'''Gérard''' : Non, non, attends, Sucre d'Orge. Sucre d'Orge. Je vois pas le rapport avec la fumée de cigarette.
'''Sucre d'orge''' : Ah, bah, si, c'est de la pollution, quoi, mais...
'''Gérard''' : Non, mais, justement, justement, on va en... On va en parler, on va en parler des voitures. Hein ? On va en parler. Donc, pour l'instant, je parle de fumée. Par exemple, moi, je peux vous dire une chose, qu'il est là, il peut très bien réagir, il est planqué derrière moi, là-bas, il peut très bien prendre la place à Phildar, c'est que lui, quand il vient dans les studios et qu'on fume, ça le dérange. Et dans les soirées, il y a certaines personnes qui fument, mais est-ce que ça te dérange à toi, Max ?
'''Max''', ''[faussement timidement]'' : Alors, d'abord, bonsoir.
'''Phildar''' : T'appelles d'où ?
'''Max''' : Donc, savoir si ça me dérange la cigarette. Dans des lieux comme les discothèques. Non, sauf si il y a une personne qui fume et qui va me mettre la fumée dans la gueule, quoi. J'ai remarqué ça dimanche en étant dans un lieu public qui était... le Parc des Princes et je voyais quand même des mecs qui fumaient le cigare. Eux, ils fument le cigare, donc c'est quand même un truc qui empeste. Mais eux, quand ils recrachent la fumée, à aucun moment, ils ne se la prennent pas dans la gueule. Mais par contre, ils l'envoient à la gueule de gens qui ne fument pas. Donc, le minimum, c'est au moins, quand tu fumes, c'est de voir si tu ne déranges pas des gens autour de toi.
'''Gérard''' : Mais moi, par contre, il y a une personne... Je pense que...
'''Max''', ''[en diva]'' : on pourrait me balancer deux, trois applaus, quand même...
'''Gérard''', ''[applaudissant avec Phildar et Manu, mollement]'' : Bravo, chef. Mais moi, je peux répondre à la personne, je ne sais pas, c'est Sucre d'Orge ou Braguette ou Coquelicot qui a dit ça. Quand on envoie la fumée sur la personne d'un mec, ça veut dire qu'on l'aime. Mais moi, je peux vous dire une chose, c'est qu'à l'heure actuelle, j'ai deux paquets de cigarettes, voire trois. Et sur les trois, c'est marqué... ''[il sort un paquet de sa poche]''
'''Phildar''' : Tu fais un débat sur la santé ?
'''Gérard''' : Nuit grave. Nuit gravement à la santé.
'''Max''' : Mais nuit ou jour ? C'est nuit et jour ou c'est nuit gravement, dans le sens de la nuit ?
'''Gérard''' : Non, c'est nuit gravement à la santé.
'''Max''' : C'est juste la nuit. Donc, le jour, c'est pas dangereux ?
'''Gérard''' : Fumer nuit, à votre entourage...
'''Max''' : Pourquoi ils parlent de la nuit ?
'''Gérard''' : C'est ce qui est marqué sur les paquets.
'''Max''' : Pourquoi ils disent que c'est la nuit ?
'''Gérard''' : Je sais pas. Je pense que ma nuit...
'''Max''' : Je sais pas si on est vraiment dans le débat de la pollution. Je sais pas si on fait un débat sur le tabac et sur le cancer ou si on fait un débat... Je crois qu'on est un peu sortis du débat, mais c'est vrai qu'il faut y réfléchir. Pourquoi on dit nuit gravement ? Pourquoi c'est la nuit grave ?
'''Gérard''' : Nuit gravement parce que ça esquinte... ça esquinte la santé. Ça, c'est un débat qu'on fera peut-être la semaine prochaine. ''[Manu applaudit]''.
'''Phildar''' : Toi, t'as répondu, Gérard. T'as répondu à la question. Donc, on peut passer à la troisième.
'''Gérard''' : Donc, un incident provoque-t-il une pollution ?
'''Sucre d'orge''' : Un quoi ?
'''Gérard''' : Un incident.
'''Phildar''' : C'est-à-dire ? Tu peux expliquer ce que t'entends par incident ? Un accident de voiture, des trucs comme ça ?
'''Gérard''' : Non, un incident.
'''Braguette''' : Quel genre d'incident ?
'''Gérard''' : Bon, même... un incendie... Ah, non ! Un incendie, oui. Pardon, pardon, pardon. Non, parce que... Non, c'est moi qui me suis trompé. C'est un incident provoque-t-il...
'''Manu''' : Un incendie, Gérard.
'''Gérard''' : Un incident, un incendie, pardon... Je vais y arriver. Un incendie provoque-t-il une pollution ? Donc, on va demander à... Sucre d'orge.
'''Sucre d'orge' '' : Un incendie, accidelleement incendieux ?
'''Géra''' : Non, mais un incend... Oh là, sucre d'orge, t'as un téléphone pourri !
Ah non, parce que là, j'ai un grésillement... C'est pas possibe.
'''Manu''' : Ça vient pas d'eux, en fait.
'''Sucre d'orge''' : En fait, je crois que c'est pas nous, c'est... C'est le standard de... C'est Phildar qui déconne, hein.
'''Phildar''' : Non, c'est le standard de fun, on peut rien faire, Gégé. Parce qu'ils sont en train de refaire, derrière. Moi aussi, j'ai le même, hein.
'''Manu''' : C'est pareil, partout.
'''Phildar''' : Ou baisses un peu ton casque, alors.
'''Sucre d'orge''' : Oui, ben, ça pollue, hein. T'as vu la fumée, quand il y a un incendie, dans le midi, là, avec les canadaires et tout, c'est de la folie. Ouais, ouais, ça pollue grave.
'''Gérard''' : Ouais, mais... Non, mais attends. Je vois pas le rapport avec un incendie et...
'''Sucre d'orge''' : Et un incident ?
'''Gérard''' : Non, mais... Un incendie, plus les canadaires. Parce que qu'est-ce que le canadaire a à voir dans les incendies ? Le canadaire, il provoque pas une pollution.
'''Sucre d'orge''' : Non, mais quand il y a un incendie, il y a un canadair.
'''Briquet''' : Si, Gérard, le canadaire, il provoque la pollution, puisqu'il va chercher l'eau dans la mer et certains endroits, tu vois, la mer, elle est polluée.
'''Sucre d'orge''' : Et quand le canadair, il s'ouvre, ça fait plein de fumée blanche sur le feu.
'''Gérard''' : Non, mais ça, c'est... Ça, c'est l'eau.
'''Sucre d'orge''' : Mais l'eau, elle peut être polluée.
'''Manu''' : Gérard, le canadaire, là, il y a bien de l'essence dedans. Donc ça pollue, de toute façon.
'''Gérard''' : Non, mais attends, Manu, je sais pas si t'as regardé le reportage sur les canadaires. Ils ont une trappe en dessous qu'ils prennent l'eau...
'''Manu''' : Ouais, mais moi, justement, j'avais vu ce reportage, ils avaient pas de pastilles vertes sur le pare-brise, les canadaires.
'''Gérard''' : Non, mais on s'en fout de la pastille verte.<ref name="hist4"></ref>
'''Phildar''' : Non, mais Gérard, oui, ils prennent de l'eau pour éteindre le feu, mais pour décoller, pour voler, ils prennent bien de l'essence, ils volent pas à l'eau.
'''Gérard''' : Non, non, non, non, là, je suis pas d'accord avec vous. Donc on va demander la Braguette. Par contre, t'essaies de voir avec sucre d'orge si elle peut pas changer de poste, parce que là...
'''Manu''' : Essaie de changer de poste, va à la Caisse d'Épargne.
'''Phildar''' : Non, non, non, t'es ailier droit, c'est ça ? Non, pilier.
'''Sucre d'orge''' : Je passe en avant ?
'''Gérard''' : Braguette ! ''[il réitère plusieurs fois mais Braguette ne répond pas, les échanges humoristiques sur le rugby se prolongeant]''.
'''Phildar''' : Ouvre-la un peu.
'''Braguette''' : Moi, je dis que, bah si, ça pollue, mais bon, c'est bien, quoi, parce qu'après, les forêts repoussent et c'est de la bonne pollution, quoi.
'''Phildar''' : Non, mais tu parles.
'''Gérard''' : Tu crois... Attends, attends, Braguette. Braguette. Tu crois que... Même en éteignant un incendie... Tu crois qu'après, ça va repousser ?
'''Braguette''' : Bah, exactement, ça repousse.
'''Gérard''' : Ah, oui ? Alors, ça met combien de temps pour repousser ?
'''Braguette''' : Ça met 10-20 ans, mais c'est de la bonne pollution qui va te donner une bonne forêt.
'''Gérard''' : Ah, oui ? Quand tu vois 120 000 hectares qui partent en fumée... Que les gens sont derrière, qui ont des habitations, qui ont l'habitude de voir de la verdure, et que maintenant, ils voient que simplement de... Des arbres qui sont partis en feu, tout ça, et tu crois que...
'''Braguette''' : Mais ça, c'est le coup du sort, Gérard, ça, c'est le coup du sort. C'est des pauvres gens, c'est grave pour eux. Mais bon, avoue quand même qu'une forêt incendiée, c'est vachement beau à regarder.
'''Gérard''' : Non, non, non, non, non, non, non, non, Braguette, non, braguette...
'''Phildar''' : Ferme-la un peu.
'''Gérard''' : Moi, je vais te dire une chose. Même derrière, là... Moustache et briquet, vous vous calmez, parce que... Je réponds à Braguette, d'accord ? Donc, moi, je peux te dire une chose, Braguette. Moi, cet été... J'ai regardé les infos, et quand tu vois ce qu'on a vu cette année, qui sont partis en fumée, fais-moi confiance que c'est toute la ville qui va payer pour... pour remettre tout ça en état. Et quand tu vois... Quand tu vois des arbres... Quand tu vois des arbres qui partent en fumée... C'est pas possibe. ''[applaudissements du studio]''.
'''Braguette''' : Tu trouves pas ça vachement beau, un arbre en feu ?
'''Gérard''' : Non. Moi, je vais te dire une chose, que je préfère regarder des arbres qui fleurissent et tout. ''[Manu applaudit]''.
'''Braguette''' : J'adore voir les arbres en feu. Ben, c'est chacun ses...
'''Gérard''' : Ouais, ben, dans ces cas-là, toi, du côté... Ah, c'est dommage. Tiens, en fait, braguette. Ça... Ça a rapport le thème du débat. À Clermont-Ferrand, est-ce qu'il y a des volcans ?
'''Braguette''' : Oui, oui, il y a des volcans à Clermont-Ferrand.
'''Gérard''' : D'accord. OK, je te remercie.
'''Braguette''' : Je t'en prie, Gérard.
'''Gérard''' : Non, non, mais c'était simplement pour savoir. Donc, on va demander à Coquelicot de répondre.
'''Coquelicot''' : Ben oui, moi, je crois que ça pollue, mais je crois qu'on peut pas faire grand-chose, parce que c'est des choses qui arrivent naturellement et on peut pas arrêter ça, quoi.
'''Sucre d'orge''' : Contre. Moi, je suis contre, c'est Sucre d'orge.
'''Gérard''' : Oh là là, mais qui c'est qui a un téléphone pourri, là ?
'''Manu''' : Ça vient pas du standard, Gérard.
'''Gérard''' : Oh là là, c'est mauvais d'entendre un...
'''Phildar''' : C'est vrai que c'est chiant, mais on peut rien faire.
'''Bounty''' : Oui, ben, moi, je suis d'accord avec les autres. Il y a pas mal de fumée. Il y a des fumées de cheminée, exactement, aussi.
'''Phildar''' : Ça pollue, ça, au fait, Gérard, les feux de cheminée ou pas ?
'''Gérard''' : Non. Non, mais attends, ça dépend s'ils sont bien allumés dans l'appartement.
'''Briquet''' : Hé, Gérard ? Ça pollue les feux de bois ou pas ? Est-ce que ça pollue les feux dans les forêts ?
'''Gérard''' : Mais attends, on vient de... Hé ! Oh, Briquet, Briquet, Briquet, Briquet ! Tu vas aller voir Manu au standard, s'il te plaît. Non, non, mais attends ! Attends, tu vas aller... Tu vas être gentil, tu vas aller voir Manu au standard, parce que je viens de... J'ai répondu à la question à Braguette.
'''Phildar''' : Tu ne suis pas à Briquet, hein.
'''Briquet''' : Mais si, mais j'ai pas compris, en fait.
'''Gérard''' : Non, non, mais tu... Ouais, mais tu n'as pas compris, ben, tu vas aller voir Manu, il va te faire comprendre au standard.Reego ?
'''Reego''' : Oui, sur IRC, il y a Lagafou qui te demande si péter ça pollue.
'''Gérard''' : Ça dépend si les fenêtres sont toutes fermées, ça... Même dans un lit, ça ne peut polluer. Ça, je peux dire oui. Briquet, s'il te plaît ?
'''Manu''' : Il n'a rien dit, Gérard, ce n'est pas lui.
'''Gérard''' : Non, non. Mais Briquet, tu le reprends au standard, il va comprendre.
'''Phildar''' : Tu expliques la troisième question et tu le remets après.
'''Gérard''' : Non, non, mais... Là, on finit la troisième et je pose la quatrième. Bounty ? Ah ben, toi, t'as répondu. Tu m'as parlé de... Je ne sais plus quoi, là. Ouais, fumée de cheminée. Ok, t'as répondu. Donc, moustache ?
'''Moustache''' : Ouais, ben, alors, moi, je voudrais répondre à Coquelicot. Parce que Coquelicot, elle a dit... En fait, on ne pouvait rien faire contre les incendies. Eh ben, elle dit n'importe quoi. Parce que les incendies, il n'y en a pas que des naturels. Il y en a aussi qui sont provoqués par des gens.
'''Gérard''' : Attendez, attendez, attendez. Moustache et Coquelicot. Moustache et Coquelicot, s'il vous plaît. Vous écoutez ? Là, d'accord, je suis d'accord avec vous. Il y a des incendies qui sont... Je sais, il y a des incendies qui sont provoqués pendant l'été. Mais ça, on ne peut pas savoir qui c'est qui les provoque. Mais oui, mais de toute manière, quand vous prenez une nationale ou autre, vous voyez que c'est marqué interdit de fumer. Donc, je ne comprends pas pourquoi il y a des gens qui s'amusent à fumer ou qui laissent leur mégot.
'''Braguette''' : C'est des pétomanes, ça.
'''Gérard''' : Ben oui, mais dans ces cas-là, pourquoi ? Pourquoi que les gens savent que c'est interdit de fumer... Pourquoi qu'ils laissent leur mégot allumé ?
'''Braguette''' : Parce que c'est des pétomanes, ils le font exprès. Ça les fait jouir de mettre le feu.
'''Phildar''' : Donc, on peut dire que les pétomanes, c'est pour des pollueurs.
'''Gérard''' : Ben voilà. Donc, Briquet, il a quand même...
'''Manu''' : Oui, Briquet a tout pigé, a tout compris.
'''Briquet''' : Je me suis calmé, j'ai compris. C'est bon.
'''Gérard''' : Alors, pour toi ?
'''Briquet''' : En fait, vu que j'étais au standard avec Manu, je n'ai pas très bien compris ta question.
'''Manu''', ''[coupant Gérard dans son mouvement d'impatience]'' : Mais c'est normal, je lui ai expliqué, Gérard.
'''Briquet''' : Il m'expliquait de me calmer, tout ça, donc je n'ai pas pu entendre et mettre en feu.
'''Gérard''' : Donc, un incendie provoque-t-il une pollution ?
'''Briquet''' : Ben moi, je pense...
'''Gérard''' : Non, mais vite, vite.
'''Briquet''' : C'est bon, laisse-moi le temps de répondre. Je pense que oui.
'''Phildar''' : C'est une bonne réponse.
'''Gérard''' : Ouais, ben...
'''Phildar''' : Quoi ? Et toi, Gérard, qu'est-ce que tu penses de ça ?
'''Gérard''' : Moi, personnellement, je vais te dire une chose. Ce que je pense, c'est déjà qu'on devrait respecter tout ce qui nous est interdit quand on part en vacances. Et même à l'heure actuelle, c'est ce qu'on devrait respecter, les endroits qu'on n'a pas le droit de fumer. Moi, celui qui renifle comme un veau va se calmer.
'''Phildar''' : Il doit prendre ses comprimés parce qu'il est malade.
'''Gérard''' : S'il est malade, il va redégager au standard. Ça va aller vite pour moi.
'''Phildar''' : Et donc ?
'''Gérard''' : Dans ces cas-là, il faut mieux respecter la vie des gens. Il faut respecter la nature. Parce qu'en fin de compte, la nature, qui c'est qui la paye ? C'est nous. Qui c'est qui paye ?
'''Phildar''' : C'est cher, en plus.
'''Gérard''' : Oui, mais qui c'est qui paye derrière ?
'''Phildar''' : C'est le contribuab.
'''Gérard''' : Oui, mais on paye... On paye sur les impôts. On paye là-dessus pour redonner goût à la vie. On paye des impôts. On paye des impôts, donc c'est nous qui payons, en fin de compte. C'est pas parce qu'on achète une voiture. Si, par exemple, une voiture prend feu dans une forêt, la forêt va... Va prendre feu. Et en fin de compte, qui c'est qui est responsable ? C'est nous. Parce qu'après, il faut reconstruire tout ça. ''[applaudissements du studio]''.
'''PHildar''' : Il faut reconstruire la voiture.
'''Gérard''' : Donc, alors, la quatrième...
'''Phildar''' : Et on va mettre un petit disque.
'''Gérard''' : Et donc, alors, je pose la question. La télé est-elle un moyen de pollution ? et on va s'écouter Baba au Rome avec des petits... Des petits...
'''Phildar''' : Petits loups de nez. Tu peux rappeler les numéros, Gérard, aussi.
'''Gérard''' : 0803 08 5000 et 080070 5000 et toujours le 3615 code Fun radio et l'IRC... Reego s'il te plaît ?
'''Reego''' : Oui je suis là, irc.funradio.fr.
'''Phildar''' : Et il y a 25 connectés sur le Minitel quand même.
'''Gérard''' : Oui mais s'il y a des réponses aux questions, je voudrais bien que tu me les donnes, Reego, comme la semaine dernière. Merci.
''[Musique]''.
'''Gérard''' : Et voilà, vous nenez d'écouter Baba au rhum avec des petites...
'''Phildar''' : Des petits loups de nez, voilà.
'''Gérard''' : Donc vous pouvez toujours nous appeler au 0803 08 5000 et 0800 70 5000 et 3615 code Funradio, rubrique direct. Et bien sûr, l'Internet, où que Reego vous attend, vous pouvez réagir sur le débat, il n'y a pas de problème. Je vous répondrai en direct. Voilà. Donc, alors, quatrième question. La télé est-elle un moyen de pollution ? Donc, on va raccueillir sucre d'orge. Braguette. Coquelicot. Christian de la Celle-Saint-Cloud. Moustache. Briquet. Et...
'''Phildar''' : Et donc, on commence avec qui, Gérard ?
'''Gérard''' : Et on va commencer avec... On va commencer avec Sucre d'orge.
'''Sucre d'orge''' : Oui. Eh bien, oui, t'as raison, Gégé. La télé, c'est un moyen de pollution énorme de l'esprit. Surtout, certaines chaînes. Les premières, là, tu vois. Et si tu les regardes...
'''Gérard''' : Non, mais sans... Non, non, mais attends, attends.
'''Sucre d'orge''' : Je ne dis pas de nom de chaîne. Je dis simplement celles qui commencent les numéros, là. Eh bien, si tu les regardes trop souvent, tu finis par devenir comme elles, quoi.
'''Phildar''' : C'est pas mal, ce qu'elle dit. T'as compris, Gégé ?
'''Gérard''' : Non. Braguette ?
'''Braguette''' : Oui. Non, mais ce n'est pas un moyen de pollution, c'est un moyen de communication. On te communique des informations sur la pollution.
'''Sucre d'orge''' : Elle parle avec sa télé, elle ?
'''Gérard''' : Non, mais je pense qu'elle doit parler avec... Avec un gorille, elle, derrière. Donc, ça y est ? Ah, ben, c'est bien, Braguette. Coquelicot ?
'''Coquelicot''' : Oui, moi, je crois que c'est un moyen de pollution. Mais enfin, ça dépend pour qui. Parce que, moi, je dis... Je ne sais pas, il y a des trucs qui sont intéressants quand même. Il ne faut pas tout rejeter dans la télé.
'''Phildar''' : Est-ce que tu crois, Gérard, que la radio, c'est quelque chose qui pollue plus que la télé, Gérard ?
'''Briquet''' : Oui, quand on écoute Gérard, oui.
'''Phildar''', ''[alors que Gérard a la tête tournée vers la porte du studio, le regard ailleurs]'' : Gérard, on est là. Est-ce que tu crois que la radio, ça pollue plus que la télé ? C'est ce qu'on demande sur Minitel.
'''Gérard''' : Non, je ne pense pas. Non, je pense que le Minitel, de toute manière, c'est... C'est un truc pour les gamins. S'ils ont envie de dépenser leur pognon là-dedans, ils font ce qu'ils veulent.
'''Phildar''' : Ce n'est pas ça, la question. La question, c'est est-ce que la radio, ça pollue plus que la télé ?
'''Gérard''' : Moi, c'est ma réponse. ''[applaudissements sarcastiques devant cette citation politique]''. Christian ?
'''Bounty''' : Oui, moi, j'adore beaucoup le débat à la télé. Il y a pas mal de débats que j'écoute en deuxième et en première.
'''Gérard''' : D'accord. Non, mais je ne vois pas le rapport avec la question, Christian.
'''Phildar''' : C'est sa réponse. C'est un peu comme toi.
'''Moustache''' : Ouais, ben, moi, je veux dire que la télé, c'est... Bon, en ce moment, il n'y a un peu que de la merde, quoi. S'il y avait des émissions un petit peu plus intellectuelles, tu vois, ça serait mieux. Voilà, c'est tout ce que j'ai à dire.
'''Gérard''' : Non, mais attends, je ne vois pas... Ah, là... Là, Moustache ? Je pense que tu n'as pas très bien compris la question, mais ce n'est pas grave.
'''Moustache''' : Si, si, j'ai bien compris.
'''Gérard''' : Non, non, mais...
'''Gérard''' : Non, non, je pense, à mon avis, que tu n'as pas compris la question.
'''Moustache''' : Répète-la, moi, alors.
'''Gérard''' : Non je la rémèterai pas. Briquet ?
'''Briquet''' : Oui, alors, moi, avant de répondre à la question, je voudrais quand même te demander ton avis. Oui ou non, est-ce que ça pollue ? Toi, je voudrais que tu me répondes avant.
'''Gérard''' : Non, mais moi, maintenant, tu vas répondre à la question, parce que ce n'est pas toi qui me poses les questions, c'est moi qui vous les pose.
'''Briquet''' : J'aurais répondu par rapport à ta réponse, en fait.
'''Gérard''' : Non, non, mais moi, maintenant, tu vas me répondre à la question.
'''Phildar''' : Ben, aide-le. Aide-le un peu. Donne-lui ta réponse, déjà, comme ça, ça...
'''Gérard''' : Non, non, mais attends, il va déjà répondre correctement. Après, je lui dirai.
'''Phildar''' : Il ne peut pas.
'''Briquet''' : Ouais, je ne peux pas si tu ne me donnes pas ta réponse avant.
'''Gérard''' : Non, ben, alors, dans ces cas-là, n'attends pas ma réponse. Sur Internet ?
'''Reego''' : Ouais, donc, sur l'IRC, il y a Fedji qui te demande si c'est la télé qui pollue ou si c'est les animateurs télé.
'''Gérard''' : Là-dessus, il faut dire une chose, c'est qu'en ce moment, vu ce qu'on voit à la télé, je pense qu'on a du mal à savoir ce qu'on va regarder comme chaîne.
'''Briquet''' : Ben ouais, mais alors, dans ce cas-là, toi aussi, tu pollues, puisque tu passes sur Fun TV.
'''Gérard''' : Alors là, je vais te dire une chose, Briquet... Tu vois, tu vois, Briquet... C'est con, ce que tu viens de dire. Parce que là, maintenant, tu dégages. Je ne veux plus te revoir. Salut à toi, Briquet. Salut à toi, Briquet !
'''Sucre d'orge''' : Gérard ? En plus, il a pas tort parce que ça pollue moins quand ça passe par satellite que quand ça passe par courant à la télé.
'''Moustache''' : Qu'est-ce qu'elle dit...
'''Gérard''' : Qui c'est qui vient de dire ça ? Ouais, ben, Sucre d'orge. Fais gaffe parce que tu risques de faire comme Briquet si tu continues.
'''Phildar''' : Non, mais c'est vrai. Non, Gérard, attends.
'''Gérard''' : Ouais, non, mais il faut dire une chose. Il faut se dire une chose qu'à l'heure actuelle, pour voir des émissions de cons, des émissions qu'on ne sait même pas ce que ça veut dire...
'''Phildar''' : Donne des exemples. Donne des exemples pour toi d'émissions polluantes.
'''Gérard''' : Moi, je peux te dire une chose. Des émissions polluantes, tu sais ce que c'est ? C'est l'après-midi, hein, même le matin, sur les coups de 9h, c'est pas pour critiquer Françoise...
'''Phildar''' : C'est pas des émissions, c'est des séries, ça, nuance.
'''Gérard''' : Ouais, mais même, quand tu vois Amour, Gloire et Beauté, ça n'a ni queue ni tête parce que ça n'a rien à voir.
'''Braguette''' : T'as qu'à zapper.
'''Gérard''' : Ouais, mais Les feux de l'Amour, c'est pareil, ils ont signé pour 10 ans. de toute manière, tu peux rien voir... tu comprends même pas ce que ça veut dire.
'''Phildar''' : Et ça, c'est polluant.
'''Gérard''' : Victoria et Cool. Cool, je pense que c'est ça.
'''Phildar''' : Ouais, mais c'est de la merde, mais tu regardes. Alors faudrait savoir.
'''Gérard''' : Non, non, moi, je regarde pas ça.
'''Phildar''' : Attends, t'es en train de nous dire les prénoms et tout, là. Victoria sort avec machin, bidule. Non, mais on s'en fout, on s'en fout. Donc, c'est polluant pour toi.
'''Gérard''' : Pourquoi on s'en fout ? Elle peut réagir, quand même.
'''Phildar''' : Non, mais on s'en fout de la série, c'est ce que je veux te dire.
'''Gérard''' : Ouais, bah, peut-être. Moi, je vais te dire une chose. Je préfère regarder des reportages, comme j'ai vu hier... Malheureusement, je me suis endormi dessus. Je préfère regarder des reportages sur les routiers que de voir des émissions, des feuilletons qui durent, quoi, ils commencent à 14h05 et à 14h45, c'est terminé.
'''Phildar''' : Ouais, mais je vais te dire un truc, les routiers polluent, quand même.
'''Gérard''' : Ouais, mais attends, les routiers polluent, peut-être, mais on est bien contents de les avoir pour se nourrir et pour nous ravitailler. Pour ravitailler les magasins et les stations-service. Parce qu'on est bien contents... On est bien contents de les avoir, grâce à eux. Qui c'est qui bouffe ? C'est quand même grâce à eux, si on bouffe.
'''Phildar''' : Ouais, mais ils polluent, quand même.
'''Gérard''' : Ouais, mais ils polluent... Mais grâce à qui t'as de l'essence dans ta voiture ? Grâce à eux.
'''Manu''' : Aux garagistes.
'''Gérard''' : Ouais, mais les garagistes, ils font appel à qui ? Au transport routier ! ''[triomphant]'' Eh, oui, Manu.
'''Manu''' : Bah non, c'est le train.
'''Gérard''' : Bah non, le train... Mais attends, le train, avec le train, tu vas...
'''Phildar''' : Tu vas pas loin.
'''Gérard''' : ...Je sais pas où. Surtout en ce moment, avec ce qu'il se passe.
'''Phildar''' : Allez, on revient sur le débat.
'''Manu''' : Sinon, excusez-moi, on accueille Greenpeace, 26 ans de Colmar, où on peut écouter Fun sur 92.2 FM. Bonjour, Greenpeace.
'''Phildar''' : À la place de Bricquet.
'''Gérard''' : Donc, sixième question. Peut-on faire l'amour en polluant ?
'''Greenpeace''' : Gérard, si Greenpeace, je peux répondre ? Alors, en fait, moi, je trouve qu'on peut effectivement faire l'amour en polluant. Si, par exemple, on fait de l'amour sur une péniche, et qu'après, en faisant l'amour, on voit une canette, je dirais pas la marque, et on la balance dans la Seine.
'''Gérard''' : Non, mais attends. Là, je vais te dire une chose, Greenpeace... T'e Non, mais... Là, tu reviens tout à fait à la première question. Ouais, ouais. Ah, Tony ? Ouais, ouais.
'''Phildar''' : Non, mais on peut faire l'amour quand même sur une péniche. Puisque... On peut faire l'amour partout. Donc, à ton avis, est-ce qu'il a raison ? S'il n'a pas raison, t'expliques.
'''Gérard''' : Non, mais moi, je vais te dire une chose. C'est pas parce que tu vas faire l'amour et que tu rebalances des canettes dans la Seine. OK ?
'''Greenpeace''' : Bah, tu peux si t'es assoiffé en train de faire l'amour.
'''Phildar''' : Est-ce que t'as soif, toi, quand tu fais l'amour ?
'''Gérard''' : Non, moi, je fume une cigarette.
'''Phildar''' : Bah, tu pollues, alors.
'''Gérard''' : Ah, non, mais moi, je fume une cigarette chez moi. Nuance.
'''Phildar''' : Ouais, mais tu pollues quand même.
'''Gérard''' : Ah, non, mais moi, quand je fume une cigarette, j'ai la fenêtre ouverte.
'''Sucre d'orge''' : Ah, bah, ouais, donc tu pollues, hein.
'''Gérard''' : Un homme, non, mais je pollue quoi ? Je pollue personne.
'''Sucre d'orge''' : Tu pollues l'atmosphère.
'''Gérard''' : Bah, je pollue l'atmosphère... Mais dans ces cas-là, les pots d'échappement des voitures, ils polluent quoi ?
'''Phildar''' : Non, mais attends, pendant l'amour aussi, Gérard, il t'arrive d'avoir des pollutions nocturnes. On est d'accord.
'''Gérard''' : Ah, mais ça, il y a une personne qui pourra répondre si elle veut bien venir à côté de Manu pour répondre à la question, mais elle veut pas.
'''Phildar''' : Ah, mais c'est pas grave, on continue le débat, on va pas s'arrêter pour ça.
'''Moustache''' :Non, mais si tu veux, j'ai perdu une fil, donc... Je vais sauter cette question. Voilà, je vais écouter, comme ça, au moins, tu vois...
'''Gérard''' : Bon, bah, alors, Moustache, bonne nuit. Allez, hop. Au revoir. C'est pas la peine de le reprendre sur un autre nom, hein. Christian, de la Celle Saint-Cloud.
'''Bounty''' : Moi, j'aime bien faire l'amour, n'importe où. Même dans le foin.
'''Gérard''' : Ouais, mais... Peut-on faire l'amour en polluant ?
'''Bounty''' : Non, je crois pas.
'''Phildar''' : Pourquoi ?
'''Gérard''' : Non, mais pourquoi... Tu vois... Non, non, mais... On avait bien précisé. Il n'y a pas de pourquoi ni des comment. Donc, maintenant, tu le laisses répondre si...
'''Phildar''' : Alors, why ?
'''Bounty''' : C'est très difficile.
'''Gérard''' : Ouais, mais... Alors... Comment... Pourquoi...
'''Phildar''' : Ah, non, pas de pourquoi, Gérard.
'''Gérard''' : Ouais, mais...
'''Phildar''' : Ah, ouais, bah, ouais, t'es bien emmerdé, là.
'''Gérard''' : Dans quel sens...
'''Phildar''' : Non, non, pas dans quel sens, non plus.
'''Gérard''' : Non, non, parce que là, c'était des conneries, ici. Alors, moi, je fais ce que je veux.
'''Phildar''' : Ah, d'accord, toi, t'as le droit, OK.
'''Gérard''' : Donc, Christian, donc... Dans quel sens ? Peut-on faire l'amour en polluant ? Donc pour toi...
'''Bounty''' : Dans le foin.
'''Gérard''' : Ouais, dans le foin... Ouais, mais je vois pas... Je vois pas du tout le rapport. Parce que, dans ce cas-là, tu cherches une aiguille dans une botte de foin. ''[PHildar applaudit, les auditeurs ovationnent]''. Dans ce cas-là, Christian... Moi, je vais te dire une chose. Donc, je vais répondre à la question. Donc, si, admettons, t'arrives pas à trouver la foufoune de la personne, donc, t'es obligé de la chercher dans une botte de foin.
'''Bounty''' : Exactement.
'''Gérard''' : Alors, on va demander à Coquelicot.
'''Coquelicot''' : Non, moi, je crois pas que ça pollue. Franchement, non.
'''Gérard''' : Ouais, mais est-ce que t'as déjà essayé, toi ?
'''Coquelicot''' : Non, franchement, non.
'''Gérard''' : Non, mais attends, 19 ans, je pense que... C'est vrai, à Troyes, ils font pas beaucoup l'amour, hein. ''[rire bruyant, rocailleux, moqueur, envers Phildar, originaire de cette ville]''.
'''Phildar''' : Qu'est-ce que t'en sais, t'y habitais ?
'''Gérard''' : Hein, Phildar ? Braguette ?
'''Braguette''' : Oui ? Bah, moi, je suis d'accord avec Coquelicot. Je dis que ça pollue pas.
'''Gérard''' : Ouais, bah, toi non plus, t'as pas essayé, là-bas.
'''Braguette''' : Ah, si, si, moi, j'ai essayé... J'ai essayé dans les volcans, j'ai essayé dans les petites rivières autour des volcans et j'ai pas pollué.
'''Gérard''' : Ouais, non, mais, de toute manière, les volcans, j'ai annulé... Normalement, c'était le thème du deuxième débat, mais je l'ai annulé parce que... C'était... C'était pas évident. Non, et puis même...
'''Braguette''' : Harroun Tazieff était pas libre.
'''Phildar''' : T'as trop de problèmes, en ce moment, avec les volcans, la grève et tout, c'est chiant.
'''Gérard''' : Non, non, non, mais même, les volcans, c'était pas... Ils en parlent pas assez à la télé, tout ça. Moi, je sais, je sais très bien que j'ai été sur Clermont, il y a 3-4 ans, j'ai été me balader. Je sais que c'est là-bas qu'on voit... Il y a un coin qui est... Qui est volcanique. En Auvergne, je sais que c'est le truc des volcans. Donc...
'''Braguette''' : T'as été à Vulcania, non ?
'''Gérard''' : Ben, j'y ai été, oui, mais c'est pas évident parce que quand tu y vas à pied, faut quand même monter la côte. Parce que tu peux pas y monter en voiture.
'''Greenpeace''' : Gérard, je voulais te poser une question, c'est Greenpeace. Est-ce que t'as vu ce qui s'est passé à San Francisco, Volcano ? Il y a un volcan qui est sorti de San Francisco.
'''Gérard''' : Non, non, mais attends, pour l'instant, on est dans la pollution, d'accord ? Sucre d'orge.
'''Sucre d'orge''' : Oui. Ben, alors, moi, je trouve que l'amour, c'est trop beau, quoi. Ça pollue en aucun cas.
'''Gérard''' : Bon, ben, c'est tout ce que t'as à dire ? Non, mais je pense que, là, ce soir, on dirait que vous êtes pas réveillés, là.
'''Greenpeace''' : Mais si, Gérard.
'''Phildar''' : Non, ils sont calmes, nuance.
'''Greenpeace''' : Si tu veux, on peut s'exciter hein.
'''Sucre d'orge''' : Il y a un autre sucre d'orge là.
'''Gérard''' : Quoi, un autre sucre d'orge ?
'''Sucre d'orge''' : Ouais, il y a plusieurs sucres d'orge dans cette maison. On est trois sucres d'orge.
'''Greenpeace''' : Je vais te le foutre, mon sucre d'orge, moi, tu vas voir.
'''Phildar''' : Ben, réponds, alors, vas-y.
'''Sucre d'orge''' : Eh ben, moi, je me dis que ça pollue pas et que Gégé, je sais pas pourquoi il pose la question. T'as pollué en faisant l'amour, Gégé ?
'''Gérard''' : Ah, ben, ça, je vais te dire une chose, Sucre d'orge, tu vas te calmer, déjà.
'''Sucre d'orge''' : Mais non, mais je sais pas, j'ai pas compris ta question.
'''Phildar''' : Ouais, voilà pourquoi, toi, Gérard, t'as écrit cette question ? Pourquoi ? Toi, tu penses que l'amour, ça pollue ou pas ?
'''Gérard''' : Non, peut-on faire l'amour en polluant ? Bon, de toute manière, tu peux faire très bien l'amour comme Moustache disait, ou Greenpeace, ou Coquelicot, ou Bounty, je sais plus. Enfin, bref, on s'en passe. Mais je pense que faire l'amour, tu peux faire l'amour où que tu veux.
'''Phildar''' : Mais ça pollue pas.
'''Gérard''' : Ben oui, mais voilà, d'accord. Mais je crois pas pourquoi, tout de suite, y'en a qui s'attachent sur des trucs qu'on vient à voir sur ce thème du débat.
'''Phildar''' : Mais pourquoi t'as pensé à cette question, toi ?
'''Gérard''' : Ben, pourquoi ? Parce que c'était une question qui me venait à la tête. Je voulais savoir. C'est tout.
'''Phildar''' : D'accord. Comme ça, t'as la réponse. T'es content ?
'''Gérard''' : J'ai la réponse... De toute manière, y'a personne qui est capable de répondre. Alors, un orage provoque-t-il une pollution atmosphérique ?
'''Bounty''' : Un tonnerre. Un très fort tonnerre.
'''Gérard''' : Non, mais, un orage provoque-t-il une pollution atmosphérique ?
'''Christian''' : De gros dégâts. De gros... De gros... De gros... Accidents. Des gros... Qui provoquent pas mal de dégâts.
'''Gérard''' : D'accord. D'accord. Ouais, je vois ce que tu veux me dire. Sucre d'orge ?
'''Sucre d'orge''' : Moi, je dis que ça nettoie, un orage. Après, tout est beaucoup plus propre.
'''Gérard''' : Non, mais un orage... Un orage provoque-t-il une pollution atmosphérique ? Moi, je peux vous dire une chose que...
'''Sucre d'orge''' : Non, ça assainit.
'''Gérard''' : Non, non, mais... Non, mais attends, Sucre d'orge, je vais répondre à ta question, s'il te plaît. C'est que... Vu le cyclone Georges et tout ça... Ouais, mais ça, je vais vous dire une chose.
suPhildar''' : Et la couche d'ozone, ça a rapport ou pas ?
'''Gérard''' : Bah oui. Moi, je vais te dire une chose. Dans ces cas-là, on parle d'un orage. Tu viens de dire ?
'''Phildar''' : La couche d'eau jaune.
'''Gérard''' : La couche d'ozone. Donc, tu prends... le truc... météorologique. La couche d'ozone, avec les gaz d'échappement...
'''Phildar''' : Vous allez apprendre quelque chose ce soir, écoutez.
'''Gérard''' : Avec les gaz d'échappement, tu peux avoir plus de pollution. Donc, cet été, on a atteint le barème... voire 4, 5 à un moment donné sur Paris.
'''Bounty''' : Même 6.
'''Gérard''' : Non, non, non, non, Christian. Non, non, on n'a pas dépassé le barème 5.
'''Phildar''' : Le 5,9, je crois.
'''Gérard''' : Non, on est resté à 5. Mais il faut dire une chose, c'est que là-dessus, quand on dit « ouais, les pastilles vertes », donc, les pastilles vertes, je vois pas ce qu'elles ont à faire là-dedans, parce que, de toute manière, les gens prendront toujours leur voiture pour se déplacer, pour aller au boulot.
'''Manu''' : Ouais, mais ils ont pas besoin de bouffer de pastilles Valda pour ça.
'''Gérard''' : Mais non, mais la pastille verte, c'est... Arrête tes conneries, toi. Occupe-toi de ton standard et réponds pas aux questions.
'''Manu''' : Je peux accueillir un nouvel auditeur, par contre ? Donc, on accueille Kelnumero, 20 ans, de Toulouse, sur 105.9.
'''Kelnumero''' : Bonsoir, Paris, et bonsoir, le bar où je travavaille, c'est-à-dire le Maxi Eiffel Fire.
'''Gérard''' : Salut à toi, Kelnumero !
'''Phildar''' : Non, c'est une petite pub.
'''Gérard''' : Non, mais les pubs, on les fait pas.
'''Phildar''' : C'est la nuit sans pub, OK ?
'''Max''' : Et Manu, tu prends sur les 24 lignes, ok ? Parce que je suis venu lui donner un coup de main, il y a 24 lignes.
'''Gérard''' : Ouais, alors, t'accouches. ''[Manu pousse des cris et des respirations rapides, comme ceux d'une emme qui accouche]''. Je senq due tout à l'heure, il y en a un qui va se prendre une pêche. Donc alors, un orage provoque-t-il une pollution atmosphérique ?
'''Kelnumero''' : Moi, je ne sais pas, je ne pense pas, mon cher Gérard, je ne crois pas.
'''Gérard''' : Ouais, mais... Réponds quand même à la question. Non, mais attends, Kelnumero, pourquoi tu appelles ?
'''Kelnumero''' : Ben non, mais pour participer au débat, Gérard.
'''Gérard''' : Non, mais je te pose la question. Si tu ne veux pas répondre, si tu n'as pas la réponse, c'est pas la peine d'appeler.
'''Phildar''' : Ah si, quand même, attends. C'est pas parce qu'il n'a pas une réponse à une question qu'il n'est pas obligé de participer à tout le débat.
'''Gérard''' : Mais là, pour l'instant, il n'est même pas capable de dire...
'''Phildar''' : Non, c'est pas grave, il répondra la prochaine.
'''Kelnumero''' : Avec les éclairs et tout, oui, oui, tout à fait, je pense, oui.
'''Phildar''' : Pour sortir un peu du débat, excuse-moi, il y a Steph sur le Minite qui demande si les pète-fouf polluent l'environnement.
'''Gérard''' : Bon, ben ça, c'était quand on faisait l'amour. Je ne vois pas du tout... Le rapport.
'''Phildar''' : C'est une sorte d'orage. C'est une sorte d'orage. Non, ça ne pollue pas, alors.
'''Gérard''' : Christian. Christian, pour toi ?
'''Bounty''' : Ben, moi, je suis tout à fait d'accord avec toi.
'''Greenpeace''' : Christian, je t'ai reconnu. Pourquoi, Tony, tu prends cette voix de mongole ?
'''Gérard''' : Bon, eh, vous commencez à vous calmer, là. Hein Kelnumero !
'''Kelnumero''' : C'est l'autre, là, Moustache, là.
'''Greenpeace''' : Ouais, Moustache, Gérard, tu devrais le virer parce qu'il fout la merde depuis...
'''Gérard''' : Non, mais c'est bizarre, Manu, je t'avais dit...
'''Manu''' : Mais Moustache est parti, donc...
'''Gérard''' : Non, mais pourquoi qu'on le récupère ?
'''Manu''' : Mais il n'est pas là !
Oui, ben, moi, je dis que ça... Je pense pas que ça pollue, non.
'''Gérard''' : Ouais, mais... Ben... T'as pourtant bien vu des orages ?
'''Sucre d'orge''' : Des fois, il y a des orages de pluie acide. Des fois, ça pollue tout sur le son passage.
'''Braguette''' : Moi, je dis que c'est le contraire, en fait. C'est la pollution atmosphérique qui provoque les orages. Mais c'est bon, en fait. Un bon orage, une bonne pollution d'orage, c'est bien. Ça assainit, elle a raison. Et puis, l'électricité statique, ça fait peur aux enfants, c'est...
'''Gérard''' : Non, non. Moi, je peux vous dire une chose, que l'orage, pour moi, personnellement, vu ce qu'on en... Reego, vas-y, avant que je termine.
'''Reego''' : Ouais, c'est juste Choune sur l'IRC qui te demande ce que veut dire atmosphérique, parce qu'il sait pas du tout.
'''Gérard''' : Ben, atmosphérique, c'est... Atmosphère.
'''Greenpeace''' : Et c'est quoi l'atmosphère ?
'''Gérard''' : L'atmosphère, c'est les nuages et c'est tout ça. Quand vous voyez des gros nuages noirs, là, vous pouvez être sûr d'avoir un gros orage. Quand vous voyez des éclairs, c'est pareil.
'''Greenpeace''' : Gérard, c'est Greenpeace, moi, j'ai pas répondu. Moi, je pense que les orages, ça pollue carrément pas, puisque, en fait, quand il y a de la pollution, c'est qu'il y a de la chaleur. Donc, les orages, il fait froid, généralement, et voilà, ça pollue pas.
'''Gérard''' : Non, non, non, non, non, non, non.
'''Phildar''' : Pourquoi, Gérard ?
'''Gérard''' : Non, non, je vais dire une chose. En été, quand on n'a pas de flotte, on se plaint parce qu'on a trop chaud. Et quand il pleut, c'est pareil, on se plaint parce qu'on a trop froid.
'''Greenpeace''' : Oui, mais Gérard, moi, ce que t'as pas compris, c'est que, tu vois, quand...
'''Gérard''' : Non, mais attends, dis carrément que je suis un con, que je comprends pas.
'''Greenpeace''' : Moi, je le... Enfin, non, mais bon.
'''Gérard''' : Non, tu le penses... Tu veux pas le dire, mais tu le penses.
'''Greenpeace''' : Exactement.
'''Gérard''' : Bon, alors, Greenpeace, bonne nuit. C'est bon. Non, non, Greenpeace et Moustache, bonne nuit à vous deux. Allez, hop, terminé. On va terminer... Il nous reste deux questions. On va terminer avec Sucre d'orge, Bragate, Coquelicot, Bounty et Kelnumero. Voilà. Alors, le parfum est-il un moyen de pollution ? On va demander à Kelnumero.
'''Kelnumero''' : Oui, alors, moi, j'estime que oui, parce que je vois des grosses bonnes femmes, des fois, qui se foutent de la cocotte et tout. Et, tu sais, quand t'es dans un endroit, dans un magasin et tout, et que t'es à côté d'elles, elles s'en foutent plein, plein, plein. C'est une horreur. C'est une pollution du nez, quoi, oui.
'''Gérard''' : Ouais, mais ça... Ça, je vais te dire, Kelnumero, moi, je peux te confirmer, c'est que... Je pense que Coquelicot, Bounty, Braguette et Sucre d'orge, je pense que vous allez tous être d'accord avec moi. Donc, je pense que je vais vous dire une chose là-dessus sur le parfum. C'est que dès que, par exemple, une personne va avec sa copine pour y acheter du parfum... Donc, déjà... Rien que si elle en met le peu sur la paume de sa main, déjà, tu vas le sentir pendant un bout de temps.
'''Braguette''' : Mais ça dépend quel parfum, en fait.
'''Gérard''' : Oui, mais même que ça soit du parfum pour femme ou pour homme...
'''Braguette''' : Non, non, mais c'est même pas ça. C'est qu'en fait, il y a des bons parfums et il y a des mauvais parfums. Les mauvais parfums, il y a des mauvaises choses dedans, et c'est les parfums qui puent, genre marque de sport. Tu vois ce que je veux dire ?
'''Gérard''' : Non, non. Attends, attends, attends. Attends, attends, attends. Qui c'est qui vient de me parler de marque de sport, là ?
'''Phildar''' : Est-ce que l'Adidas, ça pue ou pas ?
'''Gérard''' :Attends, attends, attends. Justement, tu me coupes...
'''Max''' : J'ai aussi un jeune, là, que j'ai à l'antenne, mais ils ont été au moins... On parle de la pollution des téléphones portables. Il voulait savoir si les portables, portab, téléphones polluent. Tout ce qui est électronique. C'est une question qui revient souvent.
'''Gérard''' : Ça, sur l'électronique, ça m'étonnerait que ça pollue. Ça dépend des gens qui veulent... Ils veulent l'acheter.
'''Manu''' : D'autre part, excusez-moi tout le monde, d'autre part, on accueille Prof Salade, qui est chercheur au CNRS à la place de Greenpeace.
'''Gérard''' : Non, mais attends. Tu le dis au grand chef, parce que c'est lui qui l'a sélectionné.
'''Max''' : C'est moi qui l'ai sélectionné. Je ne sais pas s'il est valab.
'''Gérard''' : Oui, mais j'espère qu'ils n'ont pas changé de nom pour...
'''Max''' : Non, non, non. C'est moi qui viens de le rappeler, là, à l'instant, sur son portable. Par contre, il est sur son portable. Normal, il est dans son laboratoire.
'''Prof salade''' : Oui, allô ? Bonsoir, Gérard. Oui, je suis désolé de t'appeler d'un portable, mais voilà, je suis au moment... Oui, donc je vais te démontrer, comme deux et deux font trois...
'''Gérard''' : Non, deux et deux font quatre chez moi, pas trois.
'''Prof salade''' : C'est un incendie de forêt. Je suis désolé de revenir sur le début du débat...
'''Gérard''' : Non, non, non, non, on en est à la huitième, on parle du parfum,
on ne reprend pas les questions du départ. Parce que sinon, tu vas retourner voir le chef.
'''Prof salade''' : D'accord. Donc, est-ce que tu as fait de la chimie dans ta vie ? Voilà. Donc, est-ce que tu sais que la combustion du carbone avec de l'oxygène donne de l'eau et du CO2 ?
'''Gérard''' : Oui, mais attends, je vais te dire une chose, je me suis tapé de... Non, non, mais je me suis tapé des acides de carbone quand on était en Allemagne avec Sandy, chez Goodyear.
'''Phildar''' : C'est bon ? C'est pas mauvais, ça, non ?
'''Gérard''' : Oui, Reego ?
'''Reego''' : Non, rien.
'''Gérard''' : Non, je croyais que t'avais une question. Non, mais si t'avais... ...sur l'IRCE, moi, ça me dérange pas.
'''Reego''' : Non, on me dit juste que tu fumes des acides de carbone, mais je vois pas le rapport.
'''Gérard''' : Non, mais ça, moi non plus.
'''Prof salade''' : Les acides de carbone, ça n'existe pas, Gérard.
'''Gérard''' : Oui, ben, les acides de carbone, tu sais, ça sert à quoi ? À faire des pneus et des joints de voiture.
'''Phildar''' : Je le savais pas, en plus, je l'ai dit comme ça au hasard.
'''Sucre d'orge''' : Et Gérard, moi, je disais que les parfums, ben, ça pollue,
parce que c'est fait pour cacher les mauvaises odeurs, et les mauvaises odeurs, c'est de la pollution. Alors, les sportifs qui puent, ils mettent du parfum, et c'est pour cacher la pollution, et tout ça, c'est pour cacher la pollution. T'es d'accord ?
'''Gérard''' : Non, je suis pas d'accord avec toi.
'''Sucre d'orge''' : Mais il y a des parfums, quand ils sont doux, c'est agréable, ça pollue pas. Mais il y a les parfums de chiotte, aussi, ça pollue, parce que ça proue la couche d'ozone.
'''Bounty''' : Moi, je trouve que les parfums, ça sent très bon, même sur une femme. C'est très agréable. C'est très agréable à sentir, une femme qui a beaucoup de charme et du parfum.
'''Gérard''' : Ouais, mais, alors, Christian, moi, je vais te poser la question, et ça, toi, tu vas répondre, tu vas te mettre à côté de Phildar. Quoi, non ? Non, non, pourquoi ?
'''Phildar''' : Non, moi, je réponds pas, je croyais que je devais répondre, non, non.
'''Gérard''' : Parce que moi, je vais te dire une chose, une nana qui s'en met trop, par un moment donné, ça fait mal à la tête avec le...
'''Kelnumero''' : Pourquoi ?
'''Gérard''' : Non, attends, il n'y a pas de pourquoi, toi, tu vas la fermer ! C'est pas à toi que je m'adresse ! Quand je t'appellerai pot de chambre, tu sortiras de sous le lit, toi ! Ok ? ''[applaudissements du studio]''.
'''Kelnumero''' : D'accord, Gérard, je me soumets à ton courroux.
'''Gérard''' : Alors, dans ces cas-là, t'as qu'à fumer la moquette et on verra !
''Phildar ''' : Non, ça pollue, hein !
'''Gérard''' : Hein, ok ? Alors vas fumer la moquette !
'''Max''' : En même temps, je me permets, Max, c'est Max, si le mec, il dit, quand tu dis que quand une femme met trop de parfum, ça donne mal à la tête, quand il te demande pourquoi, c'est normal qu'il te pose pourquoi, parce qu'il est en train de savoir pourquoi.
'''Gérard''' : Ouais, mais j'en connais une, elle s'en met du matin au soir, c'est pas parce que moi, je m'en mets beaucoup, mais je voudrais bien qu'elle réagisse, là. Allez, hop !
'''Max''' : Ça, c'est peut-être pour camoufler la transpi, non ? ''[Sandy va s'asseoir près du icro mais peu convaincue]''
'''Braguette''' : Par contre, il y a des mecs qui se mettent pas de parfum...
'''Gérard''' : Non, non, attendez, s'il vous plaît, derrière, merci, il y a un morceau, là.
'''Sandy''' : Disons que le... Oui, bonsoir, disons que le parfum, c'est bien, t'es obligé d'en mettre, si tu vas à un rendez-vous, t'es obligé de mettre du parfum.
'''Gérard''' : Ah ouais, mais attends, attends, attends, tu vas à un rendez-vous, tu te mets... Attends, je te réponds à ta question, et là, je pense qu'on va se marrer sérieux. Tu crois que tu vas dans un bureau d'un directeur, par exemple, moi, je vais voir Axel. J'arrive, je suis avec ma bouteille, vas-y, hop ! ''[rires sarcastiques et forcés de tout le studio]''.
'''Sandy''' : Non, mais moi, je prends pas ma bouteille sur moi, hein.
'''Gérard''' : Non, mais attends, mais dans ces cas-là, c'est pareil.
'''Sandy''' : Et ce soir, j'ai même pas amené ma bouteille de parfum, donc tu vois...
'''Phildar''' : Elle est tombée dedans, OK ?
'''Gérard''' : Ouais, elle est tombée, parce que t'es à côté, toi. Tu te calmes, hein, tu gardes tes mains...
'''Phildar''' : Ah, t'inquiète. ''[le studio explose de rire]''. Je touche pas à ta cam'.
'''Gérard''' : Ça, c'est ma propriété. Défense d'y toucher.
'''Phildar''' : T'as un droit de bail, non ?
'''Gérard''' : Ouais, j'ai un droit. Donc, dernière question, je pense, ça, c'est... Le chef, il va répondre. Ça, c'est lui qui l'a sélectionnée. Moi, je pense que ça va me retomber sur la gueule, mais c'est pas grave. Les boissons sont-elles...
'''Kelnumero''' : Oui, oui.
'''Gérard''' : Ah, oui, oui ? qui ? Alors, Kelnumero, vas-y ?
'''Kelnumero''' : Bah oui.
'''Gérard''' : Bah oui, mais t'as même pas entendu la fin de la question.
'''Kelnumero''' : Est-ce que c'est une pollution pour toi ? Oui, certainement.
'''Gérard''' : Ah, voilà. T'es content de ta réponse ?
'''Kelnumero''' : Pour moi aussi, parce que moi, je bois beaucoup. Tu sais, ma mère est écossaise, donc... J'ai l'alcool dans le sang depuis que je suis petit donc...
'''Braguette''' : Ton père est boulonais, non ?
'''Prof salade''' : Euh, allô ? Est-ce que les chiottes de la Loco sont polluées ?
'''Gérard''', ''[explose]'': Bon alors Kelnumero, au revoir !
'''Kelnumero''' : Non, non, c'est pas moi.
'''Gérard''' : Bonne nuit ! Bonne nuit, bonne nuit, bonne nuit, bonne nuit !
'''Manu''' : C'est pas Kelnumero, c'est prof Salade. Ça y est. Voilà.
'''Gérard''' : Attends ! Hé, Manu ! Je te préviens !
'''Max''' : Non, parce qu'il avait son portable.
'''Gérard''' : Je te préviens ! J'avais prévenu. Ce soir, le premier débat, je veux pas le casser.
'''Phildar''' : C'est nickel, là.
'''Gérard''' : Là, t'es en train de me le niquer.
'''Manu''' : C'est prof Salade, il est parti.
'''Gérard''' : Alors maintenant, tu te démerdes. Je veux pas savoir. Euh... Bounki ? Bounky, pour toi ?
'''Bounty''' : Oui, bah moi, quand je vais dans... Quelque part, je bois de l'alcool, mais très modérément.
'''Coquelicot''' : Moi, je ne bois pas du tout. Donc, je peux pas répondre à cette question.
'''Braguette''' : Ouais, alors moi, je bois pas du tout et je supporte pas les gros cons qui picolent, quoi. Pour moi, c'est... Parce que eux, ce sont des pollueurs, oui.
'''Gérard''' : Alors, attends, euh... Je vais te dire une chose, Braguette. Quand tu vas dans une boîte de nuit, t'envoies des gros cons ?
'''Braguette''' : J'en vois pleins, oui.
'''Braguette''' : Et à Clermont-Ferrand, il y a des boîtes de nuit, quand même ?
'''Braguette''' : Et puis, il y a aussi des gros cons qui picolent.
'''Gérard''' : Alors, dans ces cas-là, pourquoi que tu vas dans les boîtes de nuit s'il y a des gros cons ?
'''Braguette''' : Bah, attends. J'ai le droit de sortir, quand même.
'''Sucre d'orge''' : T'as des bons DJs ?
'''Gérard''' : Ouais, sucre d'orge, pour finir ?
'''Sucre d'orge''' : Bah, moi, je bois beaucoup, mais que de l'eau. Alors, je peux répondre que boire, ça pollue pas quand tu bois de l'eau.
'''Gérard''' : Ouais, c'est ça.
'''Phildar''' : Ouais, c'est limite comme réponse.
'''Gérard''' : Ça m'étonnerait. À mon avis, ça m'étonnerait.
'''Sucre d'orge''' : Tu me crois pas ? Je bois un petit peu de champagne de temps en temps.
'''Gérard''' : Ouais, un petit peu, quand même.
'''Kelnumero''' : Est-ce que tu penses que, pour toi, ça en est une, Gérard ? Bah, une pollution.
'''Gérard''' : Non, mais moi, je vais te dire une chose, que si je bois, c'est mon problème, c'est pas le vôtre, et ça vous regarde pas, les auditeurs.
'''Phildar''' : C'était pas ça, la question, Gérard. C'était de savoir si c'est pour toi, de boire, c'est une pollution ou pas.
'''Gérard''' : Ben, ça regarde... Simplement, ma femme, c'est tout. Voilà, c'est tout. Ça regarde personne d'autre. Donc, conclusion...
'''Manu''' : Attends, Gérard, justement, pour la conclusion, on va accueillir Cactus, 22 ans, de Paris.
'''Cactus''' : Bonsoir, Gérard. Ça va ?
'''Gérard''' : J'ai pas regardé, ce matin.
'''Cactus''' : T'aurais dû regarder, comme ça, t'aurais pu me répondre.
'''Gérard''' : Ouais, ben, vas-y.
'''Cactus''' : Non, mais tu vas bien, Gérard ?
'''Gérard''' : Ben... Je sais pas, je te dis.
'''Phildar''' : Il a pas regardé, ce matin. Alors, ta conclusion, Cactus ?
'''Cactus''' : Alors, ma conclusion à tout ça... C'est que c'était un très long débat qui était très bien fait. Bien animé par Gérard. Et qui s'est vachement bien passé, pour une fois. Et puis, voilà. Voilà ma conclusion.
'''Gérard''' : D'accord. Ben, comme t'as fait la dernière question, tu vas rester sur le deuxième.
'''Phildar''' : Ah, la classe !
'''Gérard''' : On va demander à Sucre d'orge...
'''Sucre d'orge''' : Oui ? Eh bien, je crois que t'as... Enfin, ouais, bien organisé le truc. T'as viré ceux qu'il fallait virer, t'as gardé ceix qu'il fallait garder.
'''Gérard''' : Non, mais ça, je l'ai fait parce que j'avais...
'''Phildar''' : Ça vient du cœur, ce qu'il a fait.
'''Gérard''' : Non, non. Non, non. Ça, euh... Je le dois à quelqu'un, vu ce qu'il s'est passé mardi, donc... C'est tout. J'y avais promis que ce soir, le premier et le deuxième allaient bien se passer, donc...
'''Phildar''', ''[riant]'' : On avait pas dit le deuxième. On avait dit seulement le premier.
'''Gérard''', ''[souriant]'' : Attends, tu vois... Tu vois, c'est con, parce que toi, t'ouvres toute ta grande bouche. Mais manque de pot, tu vas te taper la réa ! Eh, les deux. Tu vas faire les deux. ''[Manu proeteste avec gestes à l'appui]''.
'''Manu''' : Oh, non, putain. Oh, mince. Je vais démissionner, moi.
'''Gérard''', ''[triomphant]'' : T'es baisé. T'es baisé, mon pote. Et toi aussi. Alors, Sucre d'orge. Conclusion.
'''Sucre d'orge''' : Eh bien, je pense que même si on a dit beaucoup de bêtises et beaucoup de choses intéressantes, le fait...
'''Gérard''' : Non, non, non, non.
'''Phildar''' : On n'a pas dit une chose intéressante. Je tiens à le signaler.
'''Manu''' : Par contre, on a dit de ces conneries...
'''Sucre d'orge''' : Non, mais le simple fait d'avoir répété le mot pollution toute la soirée, c'est bien parce que ça rentre dans la tête des gens et puis ils vont en prendre conscience petit à petit.
'''Braguette''' : Ouais, alors moi, sur le thème, en fait, sur la pollution, je trouve que c'est bien, la pollution, parce que ça fait réagir les gens, parce que maintenant, on privilégie l'électricité, on privilégie aussi le chauffage, tu vois, solaire. Et sinon, pour le débat en lui-même, quand t'es gentil avec les gens, les gens sont gentils avec toi.
'''Coquelicot''' : Moi, c'est la première fois que je viens à un débat avec toi. Je trouve ça très sympa et je trouve que ça a apporté beaucoup de choses quand même, même s'il n'y a pas que des choses intéressantes, c'est vrai, mais je trouvais que c'était très sympa et j'espère que ça va faire réagir des gens.
Christian de la Celle-Saint-Cloud.
'''Bounty''' : Oui, moi, j'adore beaucoup ton débat et c'est pas mal de... Ça apporte beaucoup de choses et j'adore pas mal ton émission.
'''Phildar''' : Qu'est-ce que ça t'a apporté, Christian, le débat de ce soir, toi ?
'''Bounty''' : Beaucoup de choses.
'''Phildar''' : C'est-à-dire ?
'''Bounty''' : Sur la pollution, sur le cinéma, sur le...
'''Gérard''' : Non, non, mais attends, Christian, Christian, Christian ! Christian !
'''Phildar''' : On l'a pas encore fait.
'''Bounty''' : Non, sur la pollution, sur certaines choses, sur les orages, sur tout. Sur les parfums.
'''Gérard''' : Oui, mais t'avais pas autre chose à demander ? Parce que je t'ai entendu tout à l'heure à 22h. Non, c'est pas grave. Kelnumero ?
'''Kelnumero''' : Bon, alors pour ma toute première participation aux débats de Gérard, moi, j'ai trouvé ça bien, mais bon, je sais que la pollution, toi, c'est ce que tu vis au jour le jour et c'est...
'''Phildar''' : À Paris, ouais.
'''Kelnumero''' : C'est pénible pour toi.
'''Gérard''' : Non, mais de toute manière, la pollution, on la vit dans toutes les villes, hein. Je vais te dire une chose, ça, tu peux pas t'y échapper, que ce soit sur Paris, sur... Même en province, je pense que tu peux pas y échapper, hein.
'''Phildar''' : Il y a des endroits dans le monde où il n'y a pas de pollution, Gérard ?
'''Gérard''' : Euh, je pense pas, non. Donc, conclusion sur le premier débat. Donc, j'ai répondu quand même un peu aux gens. J'ai même coupé la parole pour répondre sur les questions.
'''PHildar''' : C'était bien, ouais. T'as bien fait.
'''Gérard''' : Donc, je pense que le deuxième, je voudrais qu'il se passe comme ça.
'''Phildar''' : D'accord, mais la pollution, la pollution.
'''Gérard''' : Ouais, mais il faudrait qu'on aye moins de pollution, moins de voitures. Parce que là-dessus, ça sera dur. Donc, le deuxième débat qui va porter sur le cinéma. Et on va s'écouter Bernard Mauvaise-Hallen avec Drajets Fuca. Et vous pouvez toujours nous appeler au 0800 70 5000 et 0803 70 5000 et toujours 3615 code Funradio, rubrique Direct. Et l'IRC qui... fonctionne bien je pense ?
'''Reego''' : Ca pulse à mort !
'''Gérard''' : On se retrouve tout à l'heure d'ici dix minutes.
''[Musique]''.
== Le débat sur le cinéma ==
=== Contexte ===
Second débat de Gérard de cette nuit du 8 octobre. Le principal fait à noter est l'émergence de Reego comme régulateur. Discret jusqu'ici, il commence à prendre de l'ampleur pour devenir le vrai thermomètre régulateur de Gérard dans ses virées d'humeur. Au surplus, combiné à Phildar et Manu, il ajoute la dimension qui manquerait au surréalisme sur la durée. Pour la première fois, Max se permet de ne pas rester jusqu'au bout de l'émission, confiant à son équipe la direction réelle des opérations de cette nuit. Il ne le fera pas souvent cette saison-là, mais le fera beaucoup ensuite pour gérer d'autres obligations professionnelles. Le fait est que le format, tout en prenant son envol, trouve aussi déjà sa limite. Gérard est tellement limité dans son contenu qu'il aparaît déjà évident qu'il va falloir combiner d'autres éléments comiques pour pérenniser l'émission, le registre sérieux pouvant devenri ennuyeux. Il est même probable que les acteurs habituels, les auditeurs, n'y trouvent pas leur compte. Mais pour l'heure, c'est bien ce format qui perdure.
Ce débat montre aussi, pour une nouvelle fois, l'ambiguïté de gérard, très pointilleux ici sur sa vie privée et sa pudeur, alors qu'il est prêt à tout dévoiler, sans filtre, dans d'autres circonstances moins adaptées voire risquées. C'est ici que l'instabilité psychique du personnage est claire, par-delà la dimension théâtrale de cette aventure.
=== Les personnages ===
* Gérard Cousin : Gérard
* Phildar, Manu
* Igor : Reego
* Franck Bargine : Max
* Olivier Bouchet : Olivier de la pro
* Mégane : Moulinette
* Tulipe: anciennement Coquelicot
* Scooby-doo : anciennement Kelnumero
* Laura : Cactus
* Goldo : Ananas, Yoshimitsu, Multiplex
* Christian
* Sandy Threadkell : Poussin
* Tony Morestin : Rocco (le nez pincé)
=== Transcription ===
'''Gérard''' : Et voilà, bonsoir à tous. Donc vous nenez d'écouter Baba au rhum avec des petits ...de loup dans le nez.
'''Phildar''' : Non, ça c'était il y a trois disques, Gérard.
'''Gérard''' : Oui, mais le deuxième c'était ?
'''Phildar''' : Non, le premier, tu peux rappeler le premier et je te donne le...
'''Gérard''' : Le deuxième, le premier, je l'ai, là, c'est Baba au rhum avec...
'''Phildar''' : Non, le premier disque, là, on en a passé deux. C'était Bernard Mauvais-Hallen. Et le deuxième, c'était Blur. Voilà.
'''Gérard''' : Et donc, continuez à nous appeler au 0800 70 5000 et 0803 08 5000 et toujours 3615 4 Fun Radio, rubrique direct et sur l'IRC, on continue de nous appeler.
'''Reego''' : Oui, toujours énormément de monde. Je salue Féji, Seb Zed, Gaëtan, Corben, Miss Lover et tous les autres qui sont là.
'''Gérard''' : Et on a combien de personnes sans indiscrétion, Reego ?
'''Reego''' : Une petite seconde, je tape un petit truc et c'est vrai que ce n'est pas très bien de le dire, mais il y a 56 personnes.
'''Phildar''' : Ne le dis pas, ça reste entre nous, non ?
'''Gérard''' : Non, mais c'est bien, 56 personnes, il est 1h39, c'est bien quand même.
'''Max''' : Dites-le en direct, mais pas trop fort, il ne faut pas que les gens l'entendent.
'''reego''', ''[à voix basse mais devant le micro]'' : 56, il y en a 56.
'''Phildar''' : Et sur le Minitel, Gilles, l'inconnu, il y a aussi Babette et Sandy.
'''Manu''' : Et moi, j'aimerais saluer ma mère et ma copine.
Moi, je salue Titi et la Madrilaine et voilà.
'''Reego''' : Pas de marque, pas de marque.
'''Gérard''' : Non, mais la Madridaine, il se reconnaîtra.
'''Manu''' : Si, si, c'est une marque de vélo.
'''Gérard''' : Mais il se reconnaîtra, la Madridaine. On va accueillir Moulinette, 21 ans de Dijon. On écoute Fun Radio... Fun Radio sur 90.7. Tulipe, 19 ans, Toulouse, 105.9. Ananas, Saint-Leu-la-Forêt sur 101.9. Scooby-Doo, 23 ans, Du Havre. On écoute Fun Radio sur 106.9. J'espère que c'est la bonne fréquence.
'''Manu''' : C'est la bonne fréquence, Gérard.
'''Scooby-doo''' : Oui, oui. Bonsoir, Paris. Bonsoir, la Dreamtease.
'''Gérard''' : Cactus. Rebonsoir. Donc, Paris, 101.9. Et Christian de la Celle SaintèCloud, 101.9 toujours. Donc, deuxième débat qui porte sur le cinéma. J'espère qu'il va se passer aussi bien que le premier.
'''Phildar''' : Bien péchu aussi, parce qu'il va se réveiller un petit peu, Gérard. Un petit peu, oui.
'''Gérard''' : Non, mais j'espère qu'il va se passer impeccab, comme le premier, c'est tout ce que je demande. Alors, avez-vous déjà été au cinéma cette année ? Alors, on va demander à... Non, ben, tiens, comme Christian, il a répondu le premier.
'''Christian''' : Oui, j'ai été souvent au cinéma. Oui. Et j'ai vu pas mal de films.
'''Phildar''' : Comme quoi ?
'''Christian''' : Comme Le Titanic, Dîner de con, Six jours sept nuits, Prends garde à toi et Pédale douce.
'''Gérard''' : D'accord. Pédale douce, je peux te dire une chose, c'est un film qui est passé dimanche sur...
'''Christian''' : Sur Première chaîne. Avec Richard Berry.
'''Manu''' : Christian, t'es allé manger chez Gérard ? Il t'a invité ?
'''Christian''' : Non.
'''Manu''' : Non, c'est pas grave. Ouais ! Non, mais j'ai rangé la blague, elle est pourrie.
'''Gérard ''' : Non, non, mais tu te calmes, Manu, parce que... Cactus ?
'''Cactus''' : Ben, moi, j'ai pas trop d'argent, alors tu vois, je me souviens pas avoir été au cinéma.
'''Scooby-doo''' : Moi, ben, j'ai pas tellement eu l'occasion parce que je suis serveur dans un bar. Euh, le problème, j'ai pas vu beaucoup, beaucoup de films cette année. J'en ai vu quelques-uns, mais... ''[pendant ce temps, Manu transmet discrètement une feuille à Phildar]''. Oh là ya larcène là. C'est Olivier à la pro ?
'''Gérard''' : Non, c'est Cactus, à mon avis, qui a... Non, c'est Scooby-Doo qui doit avoir un truc bidon. ''([regardant Phildar]'' Non, mais tu vois, là, ce que Manu t'a donné, c'est pas...
'''Phildar''' : C'est des sondages.
'''Gérard''' : Non, non, mais ça, j'en ai rien à foutre.
'''Phildar''' : D'accord. C'est pas grave.
'''Gérard''' : Tu vois, parce que moi, tes sondages, j'en ai rien à foutre. Alors, on fait pas de sondages lors des débats.
'''Moulinette''' : C'est intéressant, les sondages.
'''Phildar''' : Non, mais c'était pas un sondage, c'était des statistiques, en fait. C'était des questions, genre, pour ou contre le cinéma. C'était pour savoir ce que les Français...
'''Gérard''' : Non, non, mais tu vois, maintenant, dans mes débats, je mets plus des pour ou contre. OK ? Alors, ça, tu me le donnes ?
'''Phildar''' : Il y avait aussi Qu'aimez-vous dans le cinéma. Tu peux le lire, si tu veux, tiens. ''[il lui donne la feuille]''.
'''Gérard''' : Non, mais ça...
'''Gérard''' : Non, mais tu peux le lire, c'est vachement intéressant.
'''Gérard''' : Non, non, mais je verrai ça après. Ananas ?
'''Ananas''' : Ouais, ben, moi, je suis un vrai fan de ciné. Je vais souvent au cinéma. Et dernièrement, j'ai vu Une chatte sur un doigt brûlant.
'''Gérard''' : Non, non, mais attends. Toi, si tu commences ta vulgarisé... Si tu commences à être vulgaire...
'''Ananas''' : Ah, mais je suis pas vulgaire, Gérard.
'''Gérard''' : Non, non, mais attends, une chatte... Une chatte, tu sais ce que ça veut dire, pour moi ?
'''Manu''' : C'est un petit animal à poils courts...
'''Phildar''' : Attendez, il faut savoir si on considère que le cinéma pornographique ne fait pas partie du cinéma, Gérard.
'''Gérard''' : Mais justement... Non, mais justement... Donc, si Ananas veut répondre... bien avant moi à la cinquième question... Donc, dans ces cas-là, prends les questions à ma place.
'''Ananas''' : Ben, je peux pas savoir.
'''Phildar''' : Donc, Ananas, tu gardes ta réponse, parce que ça, c'est pour la cinquième question.
'''Ananas''' : OK, alors, je serre les fesses jusqu'à la cinquième.
'''Gérard''' : Bon, ben, alors, tu vas serrer les fesses avec Manu au standard.
'''Phildar''' : Il a l'habitude, Manu, de serrer les fesses.
'''Tulipe''' : Ben, moi, je suis un peu prise par le boulot, donc j'ai dû aller au cinéma quelquefois, mais en ce moment, je peux pas trop.
e ?
'''Moulinette''' : Oui, alors, moi, j'y suis allée, mais bon, je peux pas te dire si c'est souvent ou un peu, beaucoup. C'est... je sais pas, une fois tous les deux mois, quoi.
'''Gérard''' : Ouais, non, mais je pense qu'à l'heure actuelle, vous pouvez quand même aller voir certains films qui sont sortis. Peut-être Minitel, non ?
'''Phildar''' : Ouais, je pense qu'ils vont aussi au cinéma.
'''Gérard''' : Non, mais on a des réactions ou pas ? Parce que sur l'IRC, on a du monde. Si sur Minitel, ils veulent pas répondre...
'''Phildar''' : Ben, on a Dada sur Minitel qui dit que tu es quelqu'un qui parle plus vite qu'il ne réfléchit.
'''Gérard''' : Ouais, ouais, dans ces cas-là...
'''Phildar''' : C'est flatteur.
'''Gérard''' : Non, non, mais dans ces cas-là, elle aurait pu dire l'homme qui parle plus vite que son ombre.
'''Phildar''' : Voilà, c'est un peu le même principe.
'''Gérard''' : Ou l'homme qui tire plus vite que son ombre, en parlant de Lucky Luke. Sur IRC ?
'''Reego''' : Oui, il y a Corben qui me demandait si le cinéma pollue.
'''Gérard''' : Oh, non, mais alors là...
'''Phildar''' : C'est plus le thème du débat.
'''Manu''' : Mais est-ce que la pollution, c'est du cinéma ?
'''Gérard''' : Non, non, mais ça... Non, non. Donc, alors là, je pense que c'est une question qui va faire plaisir à tout le monde. Je pense que tout le monde a entendu parler du film. On en a fait de la pub sur Fun Radio. Que pensez-vous du film Godzilla ?
'''Phildar''' : Ah, vous ne pouvez pas passer à côté.
'''Christian''' : Je trouve ça très bien, Christian. Zé vu le film, ze le trouve très formidable.
'''Gérard''' : Christian, sans indiscrétion, on va demander à Cactus, Scooby-Doo, Ananas, Tulip et Mouninette de se calmer. Où t'as été le voir ?
'''Christian''' : Au Gaumont-Parnasse, le matin de très tôt.
'''Reego''' : Pas de marque !
'''Philda''' : Gérard, il a été à New York alors...
'''Gérard''' : Tu vois, moi, j'ai été le voir avec Sandy qui se planque derrière là-bas.
'''Phildar''' : Il n'a rien compris. Il n'a rien compris, mais il l'a vu.
'''Manu''' : Tu as compris que c'était un monstre qui cassait une ville ?
'''Gérard''' : Oui, bien sûr. Je vais te dire une chose. Tu demanderas à Poussin de tout à l'heure, après l'émission, tu verras...
'''Phildar''' : C'est le nom qu'ils avaient donné au monstre dans le film.
'''Gérard''' : Non, non, mais tu demanderas à Poussin tout à l'heure. Donc, Christian, pour toi, tu as été le voir au Gaumont ?
'''Christian''' : Oui, au Gaumont-Parnasse, très tôt le matin.
'''Cactus''' : Écoute, moi, j'en ai entendu parler. J'en ai entendu parler que du bien. Donc, comme je te l'ai dit tout à l'heure, je n'ai pas d'argent. Je n'en ai pas beaucoup. Donc, je ne dépense pas mon argent là-dedans. Mais il paraît que c'est super bien. Mais dès que j'ai l'occasion d'y aller, j'irai le voir.
'''Gérard''' : Eh bien, il faudra peut-être se dépêcher parce que là, il est...
'''Manu''' : Il est déjà 1h46, c'est chaud, là.
'''Cactus''' : Non, mais ne t'inquiète pas, Gérard. Quand on veut voir un film, on arrive toujours à le voir.
'''Scooby-Doo''' : Gérard, je sens que tu vas me virer si je dis que je déteste Jean Reno, que je déteste les films américains de merde et tout ça, donc...
'''Gérard''' : Bon, alors... Non, non, non, mais là, Scooby-Doo !
'''Moulinette''' : Il a le droit, hein.
'''Scooby-doo''' : J'ai le droit, je ne l'ai pas vu et je n'ai pas envie de le voir.
'''Gérard''' : Oh, stop ! Stop ! On se calme. Scooby-Doo, si c'est pour insulter les acteurs de cinéma, dans ces cas-là, tu vas aller voir Manu parce que je pense que tu n'es pas encore rentré dans...
'''Scooby-doo''' : Je ne l'ai pas insulté. J'ai dit que je ne l'aimais pas.
'''Phildar''' : Ben oui, t'es sectaire quand même, Gérard. T'es un peu sectairé.
'''Gérard''' : Non, mais attends. Non, mais attends, je vais te dire une chose. Quand t'insultes des acteurs de...
'''Phildar''' : Non, il n'a pas insulté, il a dit qu'il n'aimait pas. C'est-à-dire que, ça se trouve, il n'aime pas Jean Reno dans Godzilla parce que le rôle est bidon.
'''Gérard''' : Ah, non, mais attends. Son rôle est vachement bien dans...
'''Phildar''' : Ben, explique pourquoi.
'''Gérard''' : Son rôle est... Attends, Scooby-Doo, tu permets ? Non, non, Scooby-Doo. Scooby-Doo, tu me laisses parler ? Maintenant, je réponds à la question à Phildar. Moi, je vais te dire une chose. Jean Reno, dans le rôle qu'il a dans Godzilla, fais-moi confiance qu'il est vachement bien. Il joue le rôle d'un...
'''Moulinette''' : Le dis pas, je ne l'ai pas vu.
'''Gérard''' : Il joue le rôle d'un...
' ''Phildar''' : D'un agent secret, non ?
'''Gérard''' : D'un agent secret.
'''Moulinette''' : Faites chier, merde.
'''Gérard''' : Oh, qui c'est qui a envie de chier, là ? C'est la deuxième porte à droite.
'''Manu''' : Non, mais elle n'avait pas vu le film, vous lui dites la fin.
'''Moulinette''' : Ne racontez pas, je veux le voir.
'''Gérard''' : Non, non, mais je peux te dire une chose. Jean Reno joue là-dedans dans un super... Il a un très bon rôle.
'''Manu''' : Ce n'est pas le monstre ? Ce n'est pas le monstre, Jean Reno ?
'''Gérard''' : Non, non, non.
'''Scooby-doo''' : Gérard ? Ce n'est pas parce que je n'ai pas les mêmes goûts que toi que tu dois forcément t'énerver et vouloir me virer. J'ai vu tout un tas de films avec Jean Reno, je n'aime pas du tout ce type.
'''Gérard''' : Oui, mais si tu n'aimes pas Jean Reno, dans ces cas-là, c'est... Dans ces cas-là, est-ce que tu as regardé...
'''Scooby-doo''' : Léon, tout ça, mais je n'ai pas aimé.
'''Gérard''' : Mais il est passé, il y a... Quand est-ce que c'est ? Il a joué dans...
'''Moulinette''' : Highlander.
'''Gérard''' : Non, il n'a pas joué dans Highlander, il a joué dans...
'''Ananas''' : Les Bronzés, les Bronzés.
'''Gérard''' : Non, pas dans les Bronzés. Le film, l'opération Cornet de Beaf.
'''Christian''' : Ils l'ont passé à la télé.
'''Gérard''' : Oui, mais il était très bien comme film. Je suis désolé.
'''Scooby-doo''' : J'ai regardé Big avec Tom Hanks.
'''Gérard''' : Oui, tu as raison. Tulipe ? Non, Ananas.
'''Ananas''' : Ananas. Écoute, moi, ce n'est pas les acteurs qui me posent un problème, c'est la bestiole quoi. En fait Godzilla, c'est quand même un petit peu un monstre de tapette, parce que si tu le mets à côté de King Kong, il ne fait pas le poids, Godzilla. Attends, moi, je suis prêt à organiser un combat entre Godzilla et King Kong quand tu veux, je suis prêt à mettre de l'argent quand tu veux, moi, je te dis, King Kong, il met une branlée à Godzilla, c'est tout.
'''Gérard''' : Non, mais attends, King Kong et Godzilla sont de la même taille. Godzilla, c'est un gorille... c'est un gros lézard. Et King Kong, c'est un singe.
'''Ananas''' : Mais King Kong, il est plus fort, c'est tout.
'''Manu''' : Ce qu'on ne sait pas, c'est que dans la vie, ils sont amants.
'''Gérard''' : Non, non, non, non.
'''Ananas''' : Là Manu, tu as balancé quelque chose, là, il ne fallait pas en parler.
'''Gérard''' : Non, non, Tulip, Tulip, Tulip.
'''Tulip''' : Moi, j'ai trouvé ça super.
'''Gérard''' : Tu as été le voir ?
'''Tulip''' : Oui, oui, j'ai été le voir, oui, oui.
'''Moulinette''' : Alors, moi, je ne l'ai pas encore vu pour la simple et bonne raison que je ne regarde pas les films américains en français, mais je les regarde en anglais, donc j'attends qu'il passen en anglais.
'''Phildar''' : Tu l'as vu en anglais, Gérard ?
'''Gérard''' : Non, américain.
'''Phildar''' : Ah, pardon. Excuse-moi.
'''Manu''' : Phildar, tu as fait une erreur... C'est impardonnable.
'''Gérard''' : C'était américain. Moi, je peux vous dire une chose, que ce film-là est très beau à voir. Même Poussin l'a vu. Et je pense qu'elle peut dire que... C'est sûr qu'on a du mal à le comprendre, le film, mais il est très bien. IRC ?
'''Reego''' : Oui, sur l'IRC, il y a Fedji qui demande si, au cinéma, les monstres peuvent remplacer les acteurs.
'''Gérard''' : Ah ben, la preuve, c'est que Godzilla, le monstre, s'est vu opposé avec Jean Reno.
'''Phildar''' : C'est un peu la vedette, aussi.
'''Gérard''' : Oui, mais ça, c'est Jean Reno qui a fait son film, donc...
'''Phildar''' : Non, mais Godzilla, c'est la vedette. Et pourtant, on ne l'a pas vu à l'avant-première en smoking. Il n'est pas venu. Pourtant, c'est la vedette.
'''Gérard''' : Jean Reno...
'''Phildar''' : Non, Godzilla.
'''Scooby-doo''' :Est-ce que Godzilla il va monter les marches de Cannes ?
'''Scooby-doo''' : Tu mets Gérard en face de Françoise, t'as Godzilla 2.
'''Gérard''' : Qui c'est qui vient de dire ça ?
'''Phildar''' : Ça, c'est pas cool.
'''Gérard''' : Scooby-Doo, bonne nuit.
'''Manu''' : Par contre, moi, je croyais que le monstre Godzilla et le gars qui faisait sauver Willy, la baleine, c'était le même.
'''Reego''' : Gérard, justement sur IRC, on me demande si tu connais le nom de l'acteur qui joue Godzilla.
'''Ananas''' : Sandy.
'''Gérard''' : Alors, celui qui vient de dire Sandy, bonne nuit.
'''Phildar''' : Non, c'est Brandy, il a dit.
'''Gérard''' : Non, mais même, ce n'est pas une raison.
'''Manu''' : C'est le nom de l'acteur, Brandy.
'''Moulinette''' : Brandy Walker, son vrai nom.
'''Gérard''' : Oui, c'est ça. C'est faux.
'''Phildar''' : Je pense que tout le monde a répondu à Godzilla. Maintenant, Gérard, on peut peut-être passer à la prochaine.
'''Gérard''' : Donc, combien payez-vous la place de cinéma ? On va demander à Moulinette.
'''Moulinette''' : Moi, je la paye 47. Sauf quand c'est en tarif réduit, c'est 37.
'''Tulip''' : 52.
'''Gérard''' : Attends, 52 francs à Toulouse ?
'''Phildar''' : Ça fait 5 francs de plus ?
'''Ananas''' : Ouais, bah écoute, tu sais, moi, je fais le bon vieux truc. J'y vais avec un copain, puis il vient m'ouvrir la porte de sortie de secours près des chiottes, et puis je rentre gratos, quoi.
'''Gérard''' : Bon, bah alors, Ananas ?
'''Phildar''' : Ça, c'est n'importe quoi.
'''Ananas''' : J'ai le droit, non ?
'''Gérard''' : Ananas ? Tu vois ? C'est terminé pour toi. Au revoir !
'''Manu''' : Mais qu'est-ce qu'il a dit ?
'''Ananas''' : J'ai pas le droit de resquiller ?
'''Manu''' : Pourquoi tu payes le métro, toi ? Tu resquilles pas ?
'''Ananas''' : Toi aussi, tu truandes des fois, Gérard. Chacun ses business, hein, GG.
'''Gérard''' : Allez, allez, hop. Ananas, c'est terminé pour lui. Hop ! Scooby-Doo ?
'''Manu''' : Ah bah, il est parti, Scooby-Doo, tu l'as jeté.
'''Gérard''' : Ouais, mais... Eh, tu me prends des gens au standard, là, ou quoi, toi ?
'''Phildar''' : Ah, les 24 lignes, là.
'''Gérard''' : Non, mais attends, ça va, moi, je peux faire des débats comme ça... ''[il lève les jambes pour mettre ses pieds sur la table]''.
'''Manu''' : Non, parce que là, les pieds près de moi, c'est pas possible, Gérard.
'''Phildar''' : Ah, tu bosses un peu, Manu, quand même.
'''Manu''' : Ouais, bah, j'y vais, j'y vais, j'y vais.
Non, mais t'y vas maintenant ! Tu me reprends deux personnes à place d'Ananas et de Scooby-Doo.
'''Reego''' : Le débat, Gérard, le débat.
'''Cactus''' : Euh, c'est... Je crois que c'est 48 francs, la place, moi.
'''Christian''' : Moi, ze paye 56 francs.
'''Moulinette''', ''[réagissant au fait que Gérard note tous les chiffres qu'on lui donne]'' : Ça rentre pas dans les cases du loto.
'''Gérard''' : Alors, 56... Alors, moi, je peux vous dire une chose, que là, il y en a aucun... Personne m'a donné la bonne réponse. Les meilleures places, c'est 30 balles la place du cinéma.
'''Phildar''' : Où ça ? Dans tes rêves ?
'''Gérard''' : Non. Non, moi, je peux te dire une chose, UGC, c'est 30 balles.
'''Phildar''' : Mais pour les moins de 12 ans.
'''Cactus''' : En tarif réduit ?
'''Gérard''' : Non, non, il n'y a pas de tarif réduit.
'''Moulinette''' : Pour les mongoliens.
'''Phildar''' : Attends, Gérard. Moi, j'ai rarement vu des places à 30 balles à Paris. Et même en province, je pense que c'est pareil.
'''Gérard''' : Non, mais attends. Toi, dans ta ville de Troyes, il n'y a pas de cinéma. J'y ai été une fois, il n'y a aucun cinéma dans ta ville de Troyes.
'''Phildar''' : Si, ya des cnnémas, mais moi je faisais comme Ananas. Je passais par derrière. Bon, le problème, c'est pas ça. Le problème, c'est que c'est 50 balles maintenant, parce que la vie évolue et qu'on pollue le système.
'''Gérard''' : Bon, quelle heure il est ?
'''Cactus''' : On revient toujours à la pollution.
'''Gérard''' : 1h50. 1h54. Non, on ne continue pas la pollution. Donc, oui...
'''Reego''' : Enchaîne la question.
'''Gérard''' : Vas-y, si quelqu'un voulait réagir sur les places.
'''Reego''' : Oui, alors, il y a Corben qui demande si Godzilla paye sa place quand la pollution est niveau 3.
'''Gérard''' : Non, mais ça, je ne vois pas le rapport.
'''Phildar''' : On s'en fout ça, Reego, on t'a déjà dit.
'''Reego''' : Non, non, mais il fait bien de poser la question, mais ce n'était pas le thème du débat. C'est qui sur IRC ?
'''Reego''' : C'était Corben.
'''Manu''' : Gérard, donc, à la place de Scooby-Doo, on accueille Poussin. Et à la place d'Ananas, on accueille Yoshimitsu de Caen, où on peut écouter Fun sur 96.3 FM.
'''Gérard''' : Donc, on va attaquer la quatrième. Regardez-vous la télé sur les films sortis ? Donc, alors, je refais la question. Par exemple, quand vous regardez la télé, par exemple, le mercredi... oh là, il y a des téléphones qui sont pourris, là, je n'aime pas ça.
'''Manu''' : Je crois que c'est Poussin.
'''Gérard''' : Eh Poussin, tu n'en es pas comme un bœuf.
'''Poussin''' : Non, non, ce n'est pas moi.
'''Phildar''' : Ben si, mais dès que tu parles, ça s'arrête.
'''Gérard''' : Donc, est-ce que vous regardez, par exemple, le mercredi, vous avez des films qu'on vous annonce à la télé ?
'''Cactus''' : Ça s'appelle des bandes annonces.
'''Gérard''' : Voilà, les bandes annonces.
'''Christian''' : Sur exclusif.
'''Yoshimitsu''' : Pas de gros mots.
'''Gérard''' : Non, sur exclusif, je ne pense pas que j'en ai encore eus. Alors, donc, est-ce que vous les regardez ? Est-ce que vous regardez l'avant-première du film qui sort ?
'''Phildar''' : Ah, il passe les avant-premières ?
'''Gérard''' : Oui, ils passent les bandes annonces du film. Et ça, je peux le confirmer. Donc, on va demander à Moulinette.
'''Moulinette''' : Alors, moi, je ne regarde jamais ça, parce que ça te donne toujours une image carrément faussée du film que tu vas aller voir. Je me fais une opinion plutôt par les journaux et plutôt par mes amis.
'''Gérard''' : Oui, mais attends, Moulinette. Dans ces cas-là, si tu ne regardes pas la bande annonce à la télé, donc, sur les journaux, c'est pareil. Donc, sur les journaux, ça te met la bande annonce du film qui sort. Donc, tu vois l'image.
'''Moulinette''' : Pas du tout, Gérard. Tu ne vois pas l'image sur le journal, Gérard.
'''Gérard''' : Moi, je peux te dire que si, et je peux...
'''Manu''' : C'est parce que tu lis des BD, Gérard.
'''Yoshimitsu''' : Avec Gérard, elle bouge l'image.
'''Gérard''' : Non, non, mais moi, je peux te ramener un journal, pas demain, mais mardi, si tu veux. Moi, je te ramène le journal, et tu vas voir que même mercredi, je peux te ramener le journal, comme quoi que la bande annonce... Ils vont te mettre la bande annonce des films qui sortent le jour même. Donc, Tulipe ?
'''Tulipe''' : Bah, moi, ça m'intéresse énormément, parce que vu le peu de films que je vais voir, je suis sûre au moins qu'il m'intéressera ou pas.
'''Gérard''' : Ouais, mais... Oh là, qui c'est qui a un téléphone pourri ?
'''Manu''' : C'est Poussin, je ne sais pas, elle le gratte sur son menton, c'est une horreur...
'''Yoshimitsu''' : C'est parce qu'elle a de la barbe ou quoi ?
'''Gérard''' : Oh vous vous calmez, s'il vous plaît, derrière, merci. Tulipe ? Je me demande si à Toulouse, vous avez... Je me demande si vraiment, vous avez des salles de cinéma.
'''Tulipe''' : Ah, si, si, franchement, Gérard, il y a des salles de cinéma, hein.
'''Gérard''' : Ouais, ça m'étonnerait, hein.
'''Moulinette''' : C'est pas le tiers-monde, hein.
'''Gérard''' : Ouais, mais attends, à 19 ans, je crois que t'es en pleine études, ça m'étonnerait que t'ailles voir des films.
'''Tulipe''' : Je travaille, Gérard, je ne suis plus dans les études, moi.
'''Phildar''' : Moi, je voulais te poser une question, Gérard. Imagine, tu vois la bande annonce le mercredi. Une bande annonce, ça dure combien de temps ? Ça dure une minute, une minute trente. Qu'est-ce que tu vas te faire chier après à aller voir le film ?
'''Gérard''' : Non, mais toute manière, sur la bande annonce, tu ne vois presque rien. Tu ne vois presque rien, il faut voir le film réel. Par exemple, sur Godzilla, t'as vu quoi ? T'as vu simplement le monstre qui cassait carrément l'hôtel.
'''Manu''' : Ouais, mais il n'y a que ça dans le film, de toute façon.
'''Gérard''' : Oui, non, mais il ne fait que ça, je suis d'accord.
'''Moulinette''' : Raconte pas, raconte pas, raconte pas.
'''Gérard''' : Non, mais attendez, je réponds à Manu. Oui, d'accord, Manu, il ne fait que ça.
'''Phildar''' : Donc, je me dis, ça ne sert à rien d'aller voir le film après.
'''Gérard''' : Mais si, pour les gens qui aiment bien voir des films comme ça, peuvent aller le voir. Moi, je leur conseille d'aller le voir.
'''Phildar''' : Mais ça ne sert à rien de dépenser 50 balles si tu vois une bande annonce où il y a tout.
.
'''Gérard''' : Non, mais ils ne vont pas dépenser 50 balles parce que le mercredi, c'est moins cher. Là, sur tous les chiffres que j'ai eus, le moins cher, c'est 30 balles la place. Donc, Reego, oui ?
'''Reego''' : Oui, ça va. Ok, c'est bon, on peut y aller. Il y a encore Corben qui demande si le Titanic a coulé à cause de Godzilla qui était monté à bord.
'''Gérard''' : Alors là, c'est vrai qu'on parle de Godzilla, on ne parle pas du film Titanic avec Céline Dion et Leonardo DiCaprio. C'est vrai que ce film-là, c'est vrai... Non, mais... Non, mais c'est vrai que ce film-là a fait un ravage. Mais je pense qu'à l'heure actuelle, c'est pas lui qui sera dans les premiers.
'''Yoshimitsu''' : Eh, Gégé, c'est Céline Dion ou c'est Lara Fabian, t'es sûr ?
'''Gérard''' : Non, non, c'est Céline Dion. Attends, tu permets... Non, non, mais attends.
'''Yoshimitsu''' : Je ne l'ai pas vu.
'''Gérard''' : Non, non, mais tu ne l'as pas vu, mais moi, je peux te dire une chose, que c'est Céline Dion. C'est pas Laura Fabian.
'''Manu''' : D'ailleurs, elle est super belle dans ce film.
'''Moulinette''' : Elle est trop belle.
'''Gérard''' : Elle joue un rôle... Elle joue le rôle, si je me souviens bien, elle doit jouer le rôle de l'épouse...
'''Phildar''' : De la vieille, non ? De l'iceberg.
'''Gérard''' : Ah, mais arrêtez, là ! Parce que ta l'heure, toi, je vais t'éclater ton bénur. Tu vas pas me casser les burnes, ok ? Je pense qu'elle joue le rôle de la femme de Leonardo DiCaprio, mais je ne suis pas sûr. Donc, on va demander à... Yushimitsu, là.
'''Yoshimitsu''' : Non, non, non, attention. Yushimitsu, tu restes correct, quand même. Attends, moi, je ne t'appelle pas Gérald. Alors, c'est Yushimitsu. Ben, moi, je suis un vrai fan de cinéma. En plus, on n'est pas très riches. Donc, moi, je n'ai carrément pas la télé. Je ne vais qu'au cinéma. Donc, en fait, les bandes annonces, je ne les vois pas à la télé, quoi.
'''Gérard''' : OK, Poussin. Poussin ! ''[silence]''. Oh, putain, mais merde !
'''Manu''' : Mais je n'ai rien fait ! Elle est là ! Mais elle est là !
'''Poussin''' : Non, mais je suis là, hein. Non, moi, ce que je voulais dire, c'est que les bandes annonces, c'est bien, quand même, de pouvoir les voir à la télé. Au moins, ça te donne envie d'aller voir les films. Et au moins, tu peux savoir les extraits de films, comment ça se passe et tout ça. ''[les auditeurs ponctuent par « d'accord », en voix de tête, accompagnés de Moulinette]''. Donc, tu peux y aller et puis tu peux...
'''Gérard''' : Celui qui dit, d'accord, super, tu la fermes derrière, s'il te plaît. Merci.
'''Poussin''' : Si, par exemple, ça ne t'intéresse pas, ty vas pas. Comme ça, ça te donne un point de vue.
'''Cactus''' : Ouais, moi, je m'y intéresse beaucoup aux bandes annonces parce qu'en fait, je ne me fie pas aux opinions des autres et... Quand j'accroche avec une bande annonce, je vais voir le film et quand je n'accroche pas, je ne vais pas le voir, voilà.
'''Christian''' : Oui, les bandes d'annonces, moi, je les vois dans les salles de cinéma avant de commencer les films. Ils présentent beaucoup de bandes d'annonces.
'''Gérard''' : Que pensez-vous des journaux sur les films X même voire à la télé ? Donc, vous allez réfléchir et on va se retrouver d'ici... Trois minutes. Et on va s'écouter les petits poils de bouc avec des slips et toujours 0800 70 5000 et 3615 code Funradio, rubrique direct. Et toujours l'IRC. On vous retrouve d'ici trois minutes.
''[musique]''
'''Gérard''' : Et voilà, vous venez d'écouter les petits poils de bouc avec des slips et on récupère donc Moulinette. Tulip. Yo... Poussin. Cactus. Christian de la Celle-Saint-Cloud Donc alors, cinquième question, vous l'avez entendue.
'''Moulinette''' : Tu peux nous la rappeler, s'il te plaît ?
'''Gérard''' : Oh, non, non, mais attendez, je vais pas...
'''Yoshimitsu''' : C'est sur le cul, c'est sur le cul.
'''Gérard''' : Alors, que pensez-vous des journaux sur les films X ou à la télé ? Putain, mais arrêtez de renifler comme des boucs !
'''Phildar''' : C'est vrai, arrêtez de renifler, quoi. Arrêtez de respirer, c'est tout.
'''Yoshimitsu''' : Vas-y, laisse-nous vivre.
'''Gérard''' : Si ça te plaît pas, toi, c'est le même prix, tu vas dégager, OK ?
'''Phildar''' : Bon, alors, la question, Gérard, on y va, oui.
'''Gérard''' : Alors, que pensez-vous des journaux sur les films X et même à la télé ? Donc, on va demander à Moulinette.
'''Moulinette''' : Ouais, alors, moi, t'as du pot, parce que j'adore ça. J'adore regarder, en fait, les petits journaux qui vendent des cassettes porno,
parce que t'as toujours le résumé de l'histoire avec des mots super crus. Ça donne vachement envie de regarder le film. J'adore également le journal du hard, parce que ça me fait délirer.
'''Gérard''' : Non, mais attends, le journal du...
'''Moulinette''' : J'ai pas fini. C'est fait sur un ton comique. Et tu vois vraiment des images...
'''Gérard''' : Mais non, mais attends, attends, Moulinette, Moulinette. Moulinette ! Moi, attendez, s'il vous plaît, derrière, on se calme. Alors, t'as 21 ans, tu fais quoi dans la vie sans indiscrétion ?
'''Moulinette''' : Oui, je travaille dans une boulangerie.
'''Gérard''' : Ah, ouais ? Et tu crois que tu peux te permettre de t'acheter...
'''Moulinette''' : Mais je dis pas que je les achète, je dis que je les regarde, les...
'''Gérard''' : Non, non, mais est-ce que... est-ce que, est-ce que, en travaillant dans une boulangerie... Tu peux te permettre de louer Canal Plus ?
'''Moulinette''' : Bah, bien sûr, hein.
'''Gérard''' : Ouais, tu te fais combien sans indiscrétion par mois ?
'''Moulinette''' : Bah, ça, ça te regarde pas, mais oui, j'ai les moyens d'avoir Canal, je fais ce que je veux, Gérard.
'''Gérard''' : D'accord. Tulipe ?
'''Tulipe''' : Bah, moi, sans vouloir paraître coincée, bah, ça m'intéresse pas vraiment. Mais bon... si ça intéresse des gens, moi, je trouve que c'est bien.
'''Moulinette''' : Ah, faut que t'essayes Tulipe, c'est génial, hein.
'''Gérard''' : Non, mais attends, Moulinette, pour l'instant, je demande à Tulipe, ok ?
'''Phildar''' : C'est plus Moulinex.
'''Gérard''' : Euh... Yo, Yoshimoutchou, là.
'''Yoshimitsu''' : Ah, Yoshimitsu, s'il te plaît, reste poli.
'''Gérard''' : Ouais, oh, t'as qu'à prendre un autre nom, d'accord ? Parce que tout à l'heure, je vais t'appeler, euh...
'''Yoshimitsu''' : T'es gentil, c'est mon vrai nom, je suis Thaïlandais, ça te pose un problème ? Bon, alors, tu te calmes. Bon, je te réponds, maintenant.
'''Gérard''' : Oh, oh, oh ! Oh, tu me parles sur un autre ton !
'''Phildar''' : Bah, toi aussi, Gérard.
'''Tulipe''' : T'énerve pas, Gérard, ça sert à rien, oh !
'''Yoshimitsu''' : On va repartir sur de bonnes bases, hein.
'''Gérard''' : Ouais, ouais, ouais, je pense. Hein, Tony ?
'''Phildar''' : Bah, non, y a pas de Tony, ce soir. Ils sont en vacances, je te dis, ils sont...
'''Gérard''' : Ouais, ouais, ils sont en vacances, ça m'étonnerait.
'''Phildar''' : Ils sont en Afrique. Ils sont en vacances.
'''Yoshimitsu''' : Alors, moi, ouais, je suis un gros fan de films X, j'en consomme pas mal. Et, dernièrement, j'ai vu Ouvre la fenêtre que je te mette et Change de trou, ça fume. Et, franchement, je les conseille à tout le monde.
'''Gérard''' : Non, mais d'accord, je vois pas du tout le rapport avec la question. Euh, Poussin ?
'''Poussin''' : Bah, écoute, je pense que si ça intéresse des gens pour regarder des cassettes porno, moi, je pense que, personnellement, c'est pas utile de regarder des cassettes porno pour prendre son pied.
'''Moulinette''' : T'en regardes pas, toi ?
'''Poussin''' : Non, pas du tout, non. Je trouve que c'est... Enfin, s'il y en a qui veulent regarder ça, ils regardent ça s'ils veulent, mais... C'est pas intéressant, tu peux prendre ton pied autrement.
'''Moulinette''' : Et ton mec, il regarde ça ?
'''Yoshimitsu''' : Attends, GG ?
'''Gérard''' : Non, attendez, attendez, 5 minutes, attendez. Vous allez répondre après, mais il y a une question...
'''Reego''' : Oui, sur IRC, SebZ te demande, Gérard, si tu préfères les films X, Y ou Z.
'''Gérard''' : Euh... Aucun des trois.
'''Phildar''' : C'est quoi la différence ?
'''Gérard''' : X, Y, Z ?
'''Reego''' : Non, les films X, ou les films Y, ou les films Z.
'''Gérard''' : Bon, déjà, les films X, c'est les films porno. Les films Z, ça existe pas. Et les films, quoi après ? Y, non plus.
'''Reego''' : On me dit que ça existe, et qu'en fait, tu connais rien sur le cinéma, et que tu devrais pas faire un débat là-dessus.
'''Gérard''' : Eh ben, dans ce cas, s'il n'est pas content, il va au ciné de lui-même. Cactus ?
'''Cactus''' : Moi, honnêtement, je m'intéresse pas à ce genre de truc, parce que j'ai assez l'imagination pour me passer de ce truc-là. Mais pour taper un bon délire, ouais, ça me dérange pas de regarder. ''[souffle de quelqu'un qui rit dans le combiné]''.
'''Gérard''' : Oh, derrière, quand quelqu'un parle, s'il vous plaît.
'''Manu''' : C'est poussin, Gérard. Si, si, je l'enlève, je la remets, c'est elle.
'''Phildar''' : Ouais, c'est vrai, en plus.
'''Gérard''' : Non, non, bien sûr. Vous voulez la virer... Christian, pour finir ?
'''Christian''' : Oui, ben moi, j'adore ça. Ça, j'envoie pas mal de photos à Max. Chez moi, à la Celle-Saint-Cloud, j'ai pas mal de tableaux des femmes avec des culs nus. Même dans les chiottes.
'''Phildar''' : Excuse-moi, avant que tu réponds, j'ai une question de Sucette, 22 ans, sur le Minitel, qui demande à quel âge tu as vu ton premier film de cul.
'''Gérard''' : Ça, j'y répondrai pas, à elle.
'''Phildar''' : Ben pourquoi ? C'est indiscret ? T'en as déjà vu un, ou pas ?
'''Gérard''' : Non, mais c'est des questions qui sont atteinte à la vie privée, donc... Sur la vie privée, je réponds pas.
'''Phildar''' : À 17 ans ? À 17 ans, tu l'as vu ?
'''Gérard''' : Je répondrai pas. C'est tout.
'''Yoshimitsu''' : J.J., c'est Yoshimitsu. Tout à l'heure, Poussin... Elle disait qu'elle connaissait pas trop les films. Moi, si elle veut, je me propose gentiment de lui faire découvrir. On pourrait échanger nos coordonnées hors antenne.
'''Gérard''' : Non, mais tu vois... Je pense qu'à mon avis, Poussin, elle sera peut-être pas d'accord.
'''Poussin''' : Non, mais en fin de compte, ça m'attire pas trop.
'''Yoshimitsu''' : Non, mais je vais te faire découvrir, après, on essayera et tout, non ?
'''Poussin''' : Non, non, c'est pas un truc qui m'attire.
'''Yoshimitsu''' : Tu as ce qu'il faut à la maison ?
'''Poussin''' : Non, c'est pas ça, mais je regarde pas ce genre de choses. Je regarde plutôt des cassettes comiques ou des cassettes plus intéressantes que ça.
'''Phildar''' : Il y a aussi les mangas. Les mangas, c'est des dessins animés comiques et il y a du cul aussi.
'''Gérard''' : Ouais, mais ça... Moi je regarde pas les dessins animés. Donc une question... ça je pense que... c'est dommage parce qu'on n'en a pas beaucoup là. Et c'est bête, parce que cette question-là, je vais la poser.
'''Phildar''' : Aux nanas, c'est pour les nanas ?
'''Gérard''' : Non, ça concerne certaines personnes... donc c'est un reportage que j'ai vu hier, donc c'est malheureux. Je vais le passer parce que c'est ma question. Avez-vous déjà vu... Avez-vous déjà vu un film sur les routiers ? Ça, je sais, c'était...
'''Phildar''' : C'est du cinéma, ça ?
'''Yoshimitsu''' : De cul ?
'''Gérard''' : Non. Non, non, non, non, non, non, non, non, non, non, non, non, non, attendez, attendez. Je peux vous dire une chose que... Ça, avez-vous déjà vu... Avez-vous déjà vu un film sur les routiers ? Je peux dire une chose que c'est un film qui est passé sur... Je sais plus quelle chaîne.
'''Manu''' : Mais c'était pas un film, Gérard, c'était un reportage.
'''Gérard''' : Non, non, je sais, il y avait un reportage hier sur les routiers. Mais il y a un film qui est passé sur la 6, M6.
'''Yoshimitsu''' : Ça s'appelait Asphalt Fucker.
'''Gérard''' : Non, non, ça s'appelait Le Convoi.
'''Phildar''' : Non, c'était un non-voyant.
'''Cactus''' : C'était un téléfilm, ça n'a rien à voir avec le cinéma, Gérard.
'''Gérard''' : Moi, je vais dire une chose, Cactus, que le film est passé sur M6 et qui a duré pendant une heure et demi. C'est un mec...
'''<mznu''' : Gérard, Gérard, excuse-moi, il y a eu une grave erreur, pas de marque. Sur la chaîne...
'''Reego''' : Et à propos de films sur les routiers, on me conseille Mêlée Ouverte pour routiers à moustache.
'''Gérard''' : Non, mais ça...
'''Phildar''' : C'est un bon film, je l'ai vu, c'est un bon film. Il y a deux nanas moustachues là-dedans, ça s... grave.
'''Gérard''' : Non, non, non, non, non, non, allez. Non, non, allez. On revient sur la question des routiers. Donc, je peux vous dire que ce film-là est bien passé et je l'ai vu.
'''Christian''' : Avec Jean Gabin.
'''Manu''' : Attendez, excusez-moi, parce que, bon, Gérard, t'as vu le film, explique-nous un peu, peut-être, ce que ça racontait.
'''Gérard''' : Ben, attends, on va demander s'il y a des gens qui l'ont vu.
'''Yoshimitsu''' : Yoshimitsu, je l'ai vu. C'est l'histoire d'un routier qui glisse sur une plaque de verglas et ça se finit mal.
'''Gérard''' : Bon, alors, toi, tu peux dire...
'''Manu''' : Ça y est, il a fait ses valises. Ça y est, il est parti.
'''Gérard''' : C'est plus la peine qu'il revienne. Tu me prends quelqu'un d'autre sur les 24 lignes.
'''Manu''' : Non, sur les 3 lignes, là.
'''Gérard''' : Ah, il n'y a plus que 3 lignes ?
'''Manu''' : Non, c'est parce que c'est plus le 0800 70 5000, mais le 0803 08 5000 exclusivement.
'''Gérard''' : Alors, donc, si vous voulez nous appeler pour réagir sur cette question-là, faites vite, parce que dans 4 minutes, je change de question.
'''Phildar''' : Le numéro vert est toujours disponible sur IRC et sur Minitel.
'''Gérard''' : Donc, Christian ?
'''Christian''' : Oui, ben, moi, zé vu un film comme ça, de con... de routier.
'''Phildar''' : De con, oui, tu peux le dire.
'''Gérard''' : Non, non, c'est le titre du film. Ça s'appelle Le Convoi.
'''Christian''' : Oui, c'est ça, que j'avais vu avec Jean Gabin, puis qu'il traversait un camion.
'''Phildar''' : En moto ?
'''Gérard''' : Non, non, tu te trompes. Cactus ?
'''Cactus''' : Ben, écoute, personnellement, je ne l'ai pas vu, mais si tu me raconterais un petit peu de quoi ça parle, je pourrais te dire un petit peu mon avis.
'''Gérard''' : Non, ben, pour l'instant, je vous raconterai tout à l'heure, parce que je peux vous le dire, je l'ai vu, ce film-là, il est très beau à voir.
'''Cactus''' : Bon, ben, je ne me ferai pas d'opinion, alors.
'''Gérard''' : Non, mais j'expliquerai après. Poussin ?
'''Poussin''' : Ben, moi non plus, je n'ai pas vu le film, donc je ne pourrais pas te répondre.
'''Tulipe''' : Moi non plus, je n'ai pas vu.
'''Moulinette''' : Moi, je ne l'ai pas vu, et par contre, j'ai vu un épisode de Drôles de Dames où elles enquêtaient sur le milieu des routiers, et elles étaient routières.
'''Phildar''' : Ah, c'était bien, ça, je l'ai vu aussi, ouais.
'''Gérard''' : Non, je pense que là, vous faites illusion.
'''Phildar''' : Donc, c'est quoi l'histoire du film ?
'''Gérard''' L'hiistoire du film... en fin de compte, c'est un gars qui... qui part avec un autre pote, et bon, c'est malheureux à dire, c'est un black. Donc, il se fait taper sur la gueule.
'''Tulipe''' : Et pourquoi c'est malheureux à dire ?
'''Moulinette''' : Pourquoi c'est malheureux, Gérard ?
'''Phildar''' : Non, parce qu'il y avait un peu de racisme dans l'histoire du film, c'est ça.
'''Gérard''' : Voilà. Et en fin de compte, t'as tout le monde, t'as même un truc, ça, c'est ce qui m'a, dans le passage du film, ce qui m'a fait marrer le plus, et je voudrais bien qu'il repasse, c'est que tu vois des prêtres qui sont tous en train de dire « Amen ».
'''Phildar''' : Ouais, c'est excellent.
'''Gérard''' : Non, mais ils s'amusent, et en fin de compte, ils vont… Après, t'as les routiers…
'''Phildar''' : T'as Alain Delon, ouais.
'''Gérard''' : Non, non, il n'y avait pas Alain Delon. T'as tous les routiers qui organisent une chaîne, parce que… Non, qui organisent une chaîne, parce que…
'''Phildar''' : Parce que t'avais pété celle de ton vélo.
'''Gérard''' : Non, parce que lui, sa femme est enceinte, et il veut la retrouver.
'''Phildar''' : Ah, ils veulent la porter jusqu'à la clinique.
'''Gérard''' : En fin de compte, il se fait arrêter par les flics, il se fait tabasser dessus, à mort. Et en fin de compte, t'as tous les routiers qui se mettent… qui déboulent tous, tu vois, plus de 150 routiers…
'''Manu''' : Ah ben, ça doit faire un beau bordel.
'''Cactus''' : Ah, la solidarité.
'''Phildar''' : Ça fait un paquet de posters de cul aussi.
'''Gérard''' : Comme dit Manu… Ça fait un beau bordel. Quand tu vois 150 routiers, tu vois même les mecs qui nettoyent la route avec leur gros camion, là, et qui t'envoient de l'eau des deux côtés. Donc, tu les vois tous qui arrosent. T'as les motards qui les escortent jusqu'au bout. Et après, t'as tous les camions qui dépensent le commissariat. Et après, ils vont dans un stade et ils font le truc du corbillard parce que, soi-disant, qu'il serait morts. Et en fin de compte, tu le revois…
'''Moulinette''' : Raconte pas la fin.
'''Gérard''' : Non, mais c'est drôle à voir. Et en plus, c'est un camion, c'est un camion-citerne et il y a une nana qui est avec.
'''Moulinette''' : Enfin, faut aimer les camions, hein.
'''Gérard''' : Ah oui, ça, faut apprécier. Oui, Reego ?
'''Reego''' : Oui, la plupart des gens sur IRC disent que les routiers, c'est pas du tout le thème du débat.
'''Phildar''' : Et ça, tu le prends dans les dents, quand même. Déjà que t'en as plus beaucoup.
'''Gérard''' : Non, mais c'est peut-être pas le thème du débat, mais la question, c'est avez-vous déjà vu un film sur les routiers ?
'''Reego''' : Ok. Et il est bientôt 20, on va passer à une autre question.
'''Manu''' : Et d'ailleurs, Gérard, avant ta prochaine question, à la place de Yoshimitsu, on va accueillir Multiplex 19 ans de Toulon, où on peut écouter Fun sur 93.1 FM.
'''Multiplex''' : Oui, salut, bonsoir à tous.
'''Gérard''' : Salut à toi. Donc, t'as écouté la question, non ?
'''Multiplex''' : Ouais, c'est bon. Ouais, non, mais je voulais dire que moi, le film, le convoi, je l'ai vu. Je suis derrière toi à 100%.
'''Gérard''' : Voilà. Donc, regardez-vous les reportages sur le cinéma ? Eh ben, tiens, Multiplex, on va te demander à toi.
'''Multiplex''' : Les reportages sur le cinéma ? Du genre Exclusif et tout ça, c'est ça ?
'''Gérard''' : Non, mais pas spécialement Exclusif, n'importe quelle chaîne.
'''Multiplex''' : Je préfère regarder le cinéma directement, en fait. Le reportage, la vie des stars et tout, tout ça, ça nous intéresse pas, quoi. C'est un peu leur vie privée, quoi.
'''Gérard''' : Ouais, mais attends, Multiplex, je pense que tout le monde va réagir. Ils vont me dire, oui, mais la vie des stars, ça regarde personne. Mais en fin de compte, la vie des stars, c'est quand même eux qui font le film.
'''Multiplex''' : C'est quand même eux qui la vivent, la vie des stars.
'''Manu''' : Attends, Multiplex. On va demander à Christian de la Celle.
'''Manu''' : Non, ben justement, Christian, je viens de l'avoir, il est parti se coucher. Donc, 0803 08 5000 pour nous joindre.
'''Gérard''' : Donc, Cactus ?
'''Cactus''' : Ben, écoute, honnêtement, je m'intéresse pas trop à la vie privée. Chacun fait sa vie comme il veut. Tant que le film est bon, le reste, après, je m'en fiche, quoi.
'''Poussin''' : Ben, jusqu'à présent, j'ai pas vu de reportage sur les films. Mais, pourquoi pas, ça peut peut-être être intéressant.
'''Tulipe''' : Moi, je suis de son avis aussi, pareil.
'''Moulinette''' : Moi, j'aime bien savoir ce qu'il se passe dans la vie privée des stars. Parce que je suis une grande curieuse. Et j'aime bien savoir qui couche avec qui, enfin, tu vois. Et par contre, leur capacité à bien faire le film, ça passe après, quoi.
'''Phildar''' : C'est ça que je me demande. Je me posais comme question dans le cinéma, c'est est-ce que les stars, elles couchent vraiment ensemble dans les films ou pas ?
'''Moulinette''' : Ben, ouais, ouais, elles font pas semblant, hein.
'''Gérard''' : Non, Moulinette, je pense que tu te trompes.
'''Phildar''' : Ils mettent des capotes ou pas ?
'''Gérard''' : Ouais, ouais, ouais.
'''Phildar''' : Ils couchent ensemble, ils mettent des capotes. Pour éviter d'avoir des...
'''Gérard''' : Non, non, mais ça, c'est pour le film sur la scène.
'''Multiplex''' : Ouais, mais réel, hein.
'''Moulinette''' : Non, non, ils en mettent, hein.
'''Phildar''' : Des capotes réelles.
'''Gérard''' : Ouais, mais ça, ils mettent vraiment des capotes, mais je peux te dire une chose, que c'est le truc, bon, ben, c'est pour le passage du film. Bon, donc, tu vas les voir, ils vont s'embrasser sur la bouche et autres, ils vont mettre des capotes, ça, ok. Mais c'est simplement que pour le passage du film. Que pour le passage de l'extrait.
'''Phildar''' : Ah, ils couchent seulement pendant le passage, ils couchent pas pendant tout le film.
'''Gérard''' : Non, non, tout le film, tu les auras pas...
'''Phildar''' : en train de coucher ensemble.
'''Poussin''' : Comment tu peux le savoir qu'ils mettent des capotes ?
'''Gérard''' : Ben, attends, ça se voit, ça se voit vraiment.
'''Phildar''' : ça se sent.
'''Manu''' : Oui, donc, à la place de Christian qui est parti se coucher, on accueille Rocco, 26 ans, de Tignes. Et la fréquence sur Tignes, c'est 94.3 FM.
'''Rocco''' : Oui, tout à fait. Bonsoir.
'''Gérard''' : Salut. Donc, pour toi ?
'''Rocco''' : Ben, j'ai pas écouté la question.
'''Gérard''' : Oh, non, mais je vais pas m'amuser à faire que ça, hein.
'''Rocco''' : J'étais au standard, excuse-moi.
'''Gérard''' : Ouais, alors, regardez-vous les reportages sur le cinéma.
'''Rocco''', ''[retenant difficilement un fou-rire]'' : Ben, oui, tout à fait. Ouais, tout à fait, ouais.
'''Gérard''' : T'aurais pas fumé la moquette ?
'''Rocco''', ''[tousse pour tenter d'expulser son fou-rire]'' : Non, non, pas du tout, pas du tout.
'''Gérard''' : Non, t'aurais pas bu un coup ?
'''Phildar''' : Il est un peu malade, je crois.
'''Rocco''' : C'est pas évident de parler comme ça.
'''Gérard''' : Ouais, tu serais pas malade ?
'''Rocco''' : Un petit peu.
'''Gérard''' : Ouais, un petit peu. Alors, si t'as rien à dire dans ce cas-là...
'''Manu''' : Non, oui, moi, il m'a pas raconté plein de trucs au standard, mais bon.
'''Gérard''' : Non, mais attends, Manu. Le premier s'est bien passé, le deuxième, pour l'instant, il a l'air de se passer impeccab. Non, mais je voudrais pas qu'il foire.
'''Manu''' : Non, mais, tranquille.
'''Reego''' : Non, c'est sur IRC, y'a un... Enfin, c'était juste pour dire à Manu qu'il faut qu'il rappelle Arnett.
'''Gérard''' : Non, non, non.
'''Phildar''' : Non, pour les cadeaux, parce qu'on lui a offert un CD de Céline Dion.
'''Rocco''' : Ça, faut rappeler Arnett. Pourquoi pas.
'''Gérard''' : Ouais, alors, Rocco, tu vas te coucher. D'accord, Tony ?
'''Rocco''' : Pas du tout.
'''Gérard''' : Ouais, ouais, d'accord, Tony. Allez, bonne nuit. Allez, bonne nuit.
'''Phildar''' : Salut, Tony. C'est coupé. Coupé, c'est coupé, hein, avec Manu.
'''Manu''' : Non, bah, moi, tu me dis qu'on coupe, on coupe, hein.
'''Gérard''' : Non, mais, tu vois, j'aime pas trop avoir...
'''Phildar''' : Il aime pas trop, ça, tu le sais.
'''Gérard''' : J'aime pas, c'est pas parce que le chef, il est plus là que les souris dansent, hein. OK ? ''[applaudissement du studio]''.
'''TUlipe''' : Bravo, Gérard.
'''Gérard''' : Donc, tu me... Tu me... Tu m'envoies le disque, parce qu'il reste trois questions, donc...
'''Phildar''' : En pleine gueule ? Tu le veux en pleine gueule ou pas ? Non, mais je sais pas, je te demande.
'''Gérard''' : Tu veux un café en pleine gueule ?
'''Phildar''' : Non, non, mais tu peux peut-être poser la question, on gagnera du temps, déjà. Comme ça, ils pourront réfléchir.
'''Gérard''' : La Formule 1 est-elle un moyen de film ?
'''Phildar''' : Oh, non, c'est naze. Non, non, tu me dégages cette question, c'est...
'''Reego''' : Sur IRC, on m'a dit, s'il parle de Formule 1, il faut lui dire que c'est pas le thème du débat.
'''Phildar''' : Les auditeurs, vous avez déjà vu un film sur la Formule 1 ?
'''Gérard''' : Oui, oui. ''[les auditeurs dient non]''. Si, si, si, si, ça existe, ça existe, ça existe.
'''Reego''' : Sur IRC, c'est marqué.
'''Gérard''' : Non, mais sur IRC, ils me diront ce qu'ils veulent, mais moi, je peux vous dire que ça existe.
'''Phildar''' : Mais t'as vu ça où, toi ?
'''Gérard''' : Voilà. D'accord, super. ''[musique]''
'''Phildar''' : C'était les Rita Mitsuko avec le sexe des bébés éléphants est plus gros que le tien.
'''Gérard''' : Donc, on va faire un petit... statistique...
'''Phildar''' : Sur le cinéma. Et vous pouvez toujours appeler au 0803 08 5000 si vous voulez réagir, bien sûr, aux statistiques de Gérard sur le débat qui porte sur le cinéma.
'''Gérard''' : Et donc, toujours 3615, code...
'''Phildar''' : Fun Radio, rubrique direct... où il y a encore sucette, tige de cote, je sais pas ce que c'est.
'''Manu''' : Voilà, on accueille Tony, d'ailleurs.
'''Tony''' : Oh, bonsoir. Ça va bien se passer.
'''Gérard''' : Non, non, mais Tony, je t'ai dit quelque chose.
'''Phildar''' : De toute façon, t'as géré ça hors antenne, Gérard, donc c'est bon, on peut y aller.
'''Gérard''' : Donc, alors, les statistiques sur le débat sur le cinéma. Donc, à la question, que pensez-vous du cinéma ? Donc, il y a 40 personnes qui ont répondu... Bah, voilà, c'est tout. On répondu à la question...
'''Phildar''' : 40%, pas 40 personnes.
'''Gérard''' : Ouais, 40%, mais moi, j'aime bien quand on me donne des trucs comme ça. À la question, qu'avez-vous vu dans les cinémas, donc ? Alors, 20% aiment les pop-corn, donc je vois pas du tout le rapport avec le film. 30% aiment les ouvreuses, je vois pas du tout. Et 50% aiment rester chez eux.
'''Phildar''' : Ah, il y a pas beaucoup de gens qui aiment le cinéma, alors.
'''Gérard''' : Donc, 30% qui aiment les ouvreuses. Ça, j'en ai rien à foutre, parce que ça rentre pas dans les films.
'''Phildar''' : C'est quoi, les ouvreuses ?
'''Gérard''' : Les ouvreuses, c'est celles qui te placent.
'''Phildar''' : Mais il y en a plus beaucoup, en plus.
'''Gérard''' : Si, je crois qu'il y en reste encore pas mal sur...
'''Phildar''' : Il y en a deux sur Nantes, je crois.
'''Gérard''' : Ouais, et puis 20% qui aiment les pop-corn. Alors, ça, c'est les trucs qu'ils nous donnent pendant l'entract.
'''Phildar''' : Ouais, mais c'est vrai que les meilleurs pop-corn qu'on a pu manger, c'est quand même au cinéma.
'''Gérard''' : Ouais, mais ça, je vois pas du tout le rapport, donc pour moi, c'est...
'''Phildar''' : Donc, il y en a qui vont peut-être au cinéma seulement pour manger les pop-corn, qu'est-ce qu'on pense ?
'''Gérard''' : Ou voir les ouvreuses. Enfin. Alec, oui, Reego ?
'''Reego''' : Non, non, vas-y.
'''Gérard''' : Parce qu'Arnette, c'est pas la peine d'essayer d'appeler, on te... Ça sert à rien. Ça servira à rien pour toi. Donc, alors, à la question pour ou contre le cinéma, donc 30% qui sont pour. Donc, j'avais pas posé la question pour ou contre le cinéma, donc ça, je vois pas pourquoi qu'on me donne ça.
'''Phildar''' : Et peut-être que les auditeurs veulent répondre aussi aux questions des stats, Gérard.
'''Gérard''' : Ouais, mais 20% sont pas contre. 18% sont d'accord. Et 100% sont contre.
'''Phildar''' : Il y a une erreur de calcul, je crois. C'est 99.
'''Gérard''' : Ouais, ouais. Non, mais à mon avis, ça, c'est vous, là. Bande de guignols, là. Hein Olivier ? Non, c'est pas toi, non. Non, c'est pas toi. C'est jamais toi. Non, non, c'est jamais toi. C'est jamais toi qui fais des conneries.
'''Olivier''' : Mais j'ai rien fait, non.
'''Gérard''' : À la question, quel est votre acteur préféré ? Alors, 100% ont répondu Georgette Bitoun pour sa prestation dans Les Pigeons aiment les Goélands. Alors, ça, Olivier, ça, je vais te dire une chose, que maintenant, c'est toi. Alors, ça, c'est toi. Alors, il y a 100% qui dit, vos gueules, les mouettes, vlà les Goélands. Donc, tu ferais mieux de... Pas pour moi, tu me mouettes, alors là les Goélands. Allez, hop, dégage.
'''Phildar''', ''[hilare]'' : Tu peux rappeler le titre du film ?
'''Gérard''' : C'est 100% Les Pigeons aiment les Goélands. Donc, à mon avis, c'est 100% vos gueules, les mouettes, vlà les Goélands. Ok, Olivier ? Merci. Merci, Olivier, pour le larsen. Alors, à la question, quel est le dernier film que vous avez vu ? Alors, 50% ont vu O, les beaux camions. O, les beaux camions.
'''PHildar''' : Je l'ai vu aussi, il est super, celui-là.
'''Gérard''' : Avez-vous vu CB ? Hein, Olivier ? Et 100% ont vu, C'est pas le thème du débat. Olivier ! Olivier ! ''[il froisse le papier et le jette vers Olivier]'' Tu prends ça et tu vas te torcher les fesses avec.
'''Olivier''' : Mais c'est pas moi qui l'ai fait.
'''Gérard''' : Non, non, c'est pas toi.
'''Phildar''' : Mais c'est les Français qui ont répondu, c'est cool.
'''Gérard''' : Non, non, non, non, non, non. Ça, pour moi, c'est des conneries.
'''Reego''' : C'est un sondage.
'''Gérard''', ''[adouci]'' : Non, non, ouais, mais même pour moi, c'est des conneries.
'''Multiplex''' : C'est un sondage à la Goldo, ça.
'''Gérard''' : Ouais, ouais, ça, c'est un sondage bidon.
'''Olivier''' : C'est Sam Zell qui nous l'a passé.
'''Gérard''' : Bah oui, c'est Sam. T'as raison. Tu veux que je lui garde et que je lui fasse voir demain ?
'''Tony''' : Et tu pourrais rajouter sur ta liste, éclate-moi la chatte à la grenade.
'''Gérard''' : Ouais, bah, toi, tu ferais mieux d'éclater ta voix basse. OK ? Merci. Alors, les montgolfières ont-elles sorti un film ?
'''Phildar''' : Les sœurs montgolfières.
'''Poussin''' : Qu'est-ce que t'entends par là, Gégé ?
'''Gérard''' : Alors, les montgolfières... Les montgolfières, c'est un ballon dirigeable qui s'allume avec du gaz.
'''Poussin''' : Donc, ce n'est pas des parachutes, alors ?
'''Gérard''' : Non, c'est un zizi avec des poils qui tombe tout seul du désert et qu'on retient avec quelque chose.
'''Cactus''' : Eh ben voilà ! Maintenant, je comprends déjà beaucoup mieux ce que tu veux dire.
'''Poussin''' : Moi, personnellement, je n'en ai jamais vus.
'''Tony''' : Tu vois des b... avec des...
'''Gérard''' : Tony, Tony, Tony, Tony, Tony, Tony, Tony.
'''Phildar''' : Ça va ?
'''Gérard''' : Tony, tu vas la fermer parce que les ..., je ne veux pas entendre ça à 2h36 du matin. Alors, tu vas voir Manu au standard.
'''Phildar''' : Il va te donner, en fait, les synonymes qu'on peut dire à cette heure-là. Et tu reviens, ne t'inquiète pas. Donc, Poussin voulait répondre à toi.
'''Poussin''' : Donc, ce que je voulais dire, Gégé, c'est que les montgolfières, ça n'a rien à voir avec le cinéma. Je ne comprends pas pourquoi tu...
'''Gérard''' : Non mais il y a des films sur les montgolfières.
'''POussin''' : Oui, mais ça dépend si tu parles de reportages, oui, mais si tu parles de films, je n'en ai jamais vu.
'''Gérard''' : Ben, tu as qu'à regarder de temps en temps la télé. Oui, Reego ?
'''Poussin''' : Non, mais je n'ai pas le temps de regarder la télé.
'''Reego''' : Non, mais c'est bon, Poussin, merci. À propos de montgolfières, il y a Yankee qui demande si tu as un cerveau lent.
'''Gérard''' : Non, mais de toute manière, c'est pareil. Les cerfs-volants, tu les tires sur des trucs, mais il faut avoir du vent, pour les cerfs-volants. Les montgolfières, c'est avec du gaz.
'''Phildar''' : D'accord, mais ça, c'est super calé dans le ciné, ça.
'''Manu''' : Gérard, excuse-moi, on va peut-être revenir, justement, dans le thème du cinéma, parce que là, je crois qu'on s'égare. Donc, allez, on y va.
'''Gérard''' : Donc, tiens, Tony, maintenant, toi.
'''Tony''' : Oui, mais le problème, c'est que moi, je suis tout le temps au standard, pour un rien, pour un oui, pour un non. Alors, moi, je voudrais bien que tu me répètes la question, s'il te plaît.
'''Gérard''' : Non, mais attends. Non, non, mais tu as entendu la question avant que tu ailles au standard.
'''Tony''' : Ah, les sœurs mongolfière ? Oui, je suis allé voir tous leurs films.
'''Phildar''' : D'accord, et qu'est-ce que tu en as pensé ?
'''Tony''' : Franchement, c'est de la balle.
'''Phildar''' : C'est planant, non ?
'''Tony''' : Oui, c'est planant, c'est le mot. J'aime bien passer comme ça, Philippe, quand tu es de bonne humeur. Je te kiffe.
'''Cactus''' : Oui, c'est vachement planant, comme film.
'''Multiplex''' : Moi, je suis tout à fait d'accord. C'est très bien, mais il ne faut pas se moquer de ces gens-là. Il n'y a pas de quoi être fier, c'est tout.
'''Tulipe''' : C'est super aussi, moi, je trouve.
'''Moulinette''' : Oui, moi, j'ai vu pas mal de films sur les Mongols. Maintenant, savoir s'ils étaient fiers, je ne sais pas.
'''Gérard''' : Bon, alors, Moulinette.
'''Manu et Phildar''' : Ils n'ont pas compris la question.
'''Gérard''' : Non, non, mais je pense qu'on parle des Mongolfières, on ne parle pas des Mongols. D'accord ? Parce que toi, pour l'instant, t'as une tête de Mongole, toi.
'''Multiplex''' : Et si je te dis trisomie 21 ?
'''Moulinette''' : Toi, t'a un QI de mongol.
'''Gérard''' : Alors, Moulinette, bonne nuit. Moulinette, au revoir.
'''Tony''' : On appelle Arnette.
'''Multiplex''' : Ou Goldo.
'''Gérard''' : Non, non, Moulinette, bonne nuit. De toute manière, on ne rappelle plus personne, là. Ça va être terminé, alors.
'''Olivier''' : Ah, c'est dommage, il y avait des filles qui voulaient te parler.
'''Multiplex''', ''[en voix de tête]'' : Allô ? Oui, Gérard ? C'est Conchita.
'''Gérard''', ''[crescendo]'' : Non, non, mais c'est bon, c'est pas la peine, j'ai dit. Conchita, tu vas faire ton ménage. Donc, dernière question. C'est la dernière, et là... Oui, c'est la dernière, il est 40 et on arrête après, c'est tout.
'''Tony''' : Ah, mais il faut ller jusqu'à 3h, là.
'''Gérard''' : Non, non, mais on arrête après, c'est tout.
'''Tony''' : T'as signé un contrat, il faut aller jusqu'à 3h.
'''Gérard''' : Mais attends, si t'es pas content, Tony, tu dégages.
'''Phildar''' : Non, mais attends, c'est vrai, Gérard. T'es payé pour trois heures de débat, si tu commences à te casser avant la fin...
'''Manu''' : On pourrait faire encore 2 questions.
'''Phildar''' : Non, mais j'aurai une question, j'aurai une question cinéma, après.
'''Multiplex''' : Il faut qu'il enlève 100 francs de ticket au restaurant, c'est tout.
'''Gérard''' : Alors, là, tu le dégages.
'''Tony et Multiplex''' : C'était Polo.
'''Manu''' : Bon, allez, on va reprendre, là. On enchaîne la question.
'''Gérard''' : La France sort-elle plus de films qu'aux Etats-Unis ?
'''Phildar''' : Ça, c'est une question intéressante.
'''Multiplex''' : Tout à fait, tout à fait. Tout à fait, je pense que la France sort, elle sort bien, elle sort tard, et beaucoup plus qu'aux Etats-Unis, bien sûr.
'''Gérard''' : Non, mais attends. Multiplex. La France sort-elle plus de films qu'aux Etats-Unis. Je ne vois pas du tout avec ce que les Français auront à faire dans la rue.
'''Multiplex''' : De toute façon, les chiffres, on leur fait dire ce qu'on veut.
'''Tony''' : Oui, mais la France, elle sort plus que 2 films par an.
'''Poussin''' : Gérard ? Donc, c'est Poussin. Moi, ce que je voulais dire, c'est que les films en Amérique, ils sortent plus... Enfin, ils sortent en première... Enfin, en première fois, par rapport aux Français. Ils sortent d'abord en Amérique et après, on les voit, ils sortent en France.
'''Multiplex''' : Non, non, non, on n'a rien à voir. Regarde, un film, regarde,
un film français, Les Visiteurs, tu ne vas pas me dire qu'il est sorti d'abord aux Etats-Unis.
'''Tony''' : Non mais quand Sandy et Gérard, ils sont allés à New York, c'était un peu Les Visiteurs.
'''Poussin''' : Godzilla, il est sorti en Amérique d'abord.
'''Gérard''' : Oui, et il est sorti en avant-première en Amérique. Tulipe ? ''[silence]''. TUlipe ?
'''Tulipe''' : Ah, pardon, excuse-moi, Gérard. Parce que je m'occupe d'une petite, alors elle pleurait. Excuse-moi.
'''Gérard''' : Ah, non, non, mais dans ces cas-là, si t'as quelqu'un avec toi, ça sert à rien de réagir.
'''Phildar''' : Non, mais elle fait du babysitting. ''[prononcé babysittinge)''.
'''Multiplex''' : Elle a besoin d'un rempotage, Tulipe. Moi, je vais te rempoter.
'''TUlipe''' : Eh bien, moi, je sais pas. Franchement, je sais pas. Pour la France et les Etats-Unis, je sais pas du tout.
'''Gérard''' : Alors, moi, je peux vous dire une chose, que le film Godzilla, qu'on a été voir en avant-première, est sorti à New York...
'''Phildar''' : Alors, explique-nous, Gérard, pourquoi, alors, Godzilla est sorti à New York en avant-première et pas en France, par exemple ?
'''GTony''' : C'est pour se faire pardonner parce qu'il a détruit New York.
'''Gérard''' : Non, non, non, non, non, non. Non, c'est un film qui est sorti à New York en premier. Ça a été sorti sur New York parce que c'est... C'est pas parce que c'est un film que Jean Reno a fait en avant-première, là-bas, dans les villes de New York, que... ça sort en premier. Donc, il est sorti, d'abord, en avant-première. Après, il est sorti sur les écrans parisiens depuis le 16 septembre.
''Multiplex ''' : En avant-dernière.
'''Gérard''' : Ben non, arrêtez vos conneries. Cactus ?
'''Cactus''' : Ben, moi, je dirais que... que je laisse la parole à quelqu'un d'autre parce que je ne sais pas quoi te répondre.
'''Phildar''' : Pourtant, c'est un sujet intéressant. Moi, j'aimerais bien savoir pourquoi, en fait...
'''Gérard''' : Non, mais, hé, Cactus ? T'as jamais été au cinéma, encore ?
'''Cactus''' : Mais si, j'ai déjà été au cinéma, Gérard.
'''Gérard''' : Non, mais attends, t'as jamais été voir des films ?
'''Cactus''' : Mais si, j'ai été voir Le Titanic. J'ai déjà été voir des films, t'inquiète pas pour moi, Gérard.
'''Phildar''' : Non, c'est ce que je voulais te demander, Gérard. Pourquoi... Ah, Reego, une question IRC, pardon.
'''Reego''' : Oui, on a Riff qui demande s'il y a plus de pollution en Amérique qu'en France.
'''Gérard''' : Non, mais ça... On est plus...
'''Manu''' : Reego, tu suis rien, hein.
'''Gérard''' : Non, non, mais... Non, non, mais c'est pas Reego, c'est l'IRC. La pollution, c'est terminé depuis une heure, donc...
'''Moulinette''' : Il y en a eu quand Gérard est arrivé...
'''Phildar''' : Donc, ce que je voulais te demander, Gérard, c'est que tu sais,
il y a des films français, par exemple, je sais pas si t'as vu 3 hommes et un coufin... Et ce film-là, tu sais, c'était un succès. Et les Américains l'ont copié et ont refait le même film en Amérique.
'''Tony''' : 3 hommes et un oursin, ouais.
'''Phildar''' : Qu'est-ce que tu penses, en fait, des versions dans le cinéma, par exemple, des films français qui ont du succès et qui se font aux Etats-Unis après ?
'''Multiplex''' : Longue ou courte.
'''Gérard''' : Non, mais attendez, s'il vous plaît. Oh, on se calme derrière, je réponds. Non, mais ça, de toute manière, que ça soit des films qui sortent en France, qui soient repris par des acteurs américains, de toute manière, en principe, ce qui sort en premier, c'est des films américains, non français.
'''Moulinette''' : N'importe quoi...
'''Gérard''' : Quoi, n'importe quoi, si ça te plaît pas, tu vas te faire foutre. OK ?
'''Phildar''' : Non, mais tu vois, parce que, en fait, le film avait tellement de succès en France que les Américains nous ont copiés. Est-ce que tu trouves ça normal ?
'''Gérard''' : Non, mais ça, c'est un truc, c'est à eux de voir. C'est pas à nous, parce que c'est... On sait pas...
'''Multiplex''' : C'est une histoire de fric. C'est une histoire de fric, c'est tout.
'''Gérard''' : Oui, mais de toute manière, c'est pas qu'il y a eu une histoire de fric, c'est de savoir... Mais c'est de savoir les nombres d'entrées qu'ils ont fait en salles.
'''Multiplex''' : Mais non, il y a des dessous de table.
'''Gérard''' : Non, mais attends, parce que moi, le film Godzilla, il a fait plus d'un million d'entrées en France. Et nous, quand on y a été, quand on a été le voir à New York en avant-première, il y a eu 150 000 personnes.
'''Moulinette''' : Tout ça pour toi ?
'''Gérard''' : Non, mais il y a eu 150 000 personnes et faites-moi confiance que 150 000 personnes dans une salle qui hurlent dès qu'ils voient Jean Reno dans un passage, la salle se met à hurler.
'''Manu''' : Pourquoi ils hurlent ? Il n'est pas beau, Jean Reno ?
'''Gérard''' : Non, mais c'est pas qu'il n'est pas beau, c'est que dès qu'ils le voient dans la... Dès qu'ils l'ont vu sur un passage, par exemple, quand il passe à...
'''Phildar''' : Un clouté, un passage clouté, tu vois.
'''Gérard''' : Non, quand il passe avec une voiture de l'armée et qu'il mâche un chewing-gum pour pas qu'on le reconnaisse, tout le monde, tu les entends tous hurler même quand il joue le rôle du médecin là-dedans.
'''Manu''' : Il mâche un chewing-gum pour pas qu'on le reconnaisse, donc.
'''Multiplex''' : C'est un gros chewing-gum alors.
'''Tony''' : Alors que moi, personne ne me reconnaît, je suis vraiment une merde.
'''Gérard''' : Bon, tais-toi, toi, Tony.
'''Multiplex''' : Et toi, attends, Gégé, et toi, New York, les gens, ils ne t'ont pas reconnu du coup, alors ? Vu qu'il y avait Jean Reno ?
'''Gérard''' : Mais attends, de toute manière, on paraît...
'''Phildar''' : C'est vrai qu'il t'a un peu pris la vedette, quand même.
'''Gérard''' : Non, non, il n'y a aucune personne qui nous a reconnu.
'''Poussin''' : Est-ce que tu penses que les acteurs américains jouent mieux dans les films que les acteurs français ?
'''Gérard''' : De toute manière, maintenant, voir comment qu'on a des films en salle, je vais te dire une chose, je pense que c'est les Américains qui vont bientôt nous dépasser.
'''Tony''' : Non, mais t'es d'accord, Gérard, qu'il y a une différence entre Al Pacino et Bernard Ménez, quand même.
'''Gérard''' : Non, mais attends, toi, Tony, Tony, dégage. Je veux plus t'entendre.
'''Manu''' : Non, non, il a raison.
'''Reego''' : Il a raison.
'''Gérard''' : Non, mais moi, je peux vous dire une chose, qu'à l'heure actuelle, maintenant, on n'a plus grand-chose parce que maintenant, il faut qu'on prenne des films américains.
'''Multiplex''' : Et pourquoi pas des films du Turcménistan ?
'''Manu''' : Non, regarde Un dîner de cons, justement, on en parlait tout à l'heure. Un dîner de cons, c'est français, ça a bien marché.
'''Gérard''' : Oui, mais attends, un dîner de cons, c'est sorti en cassette vidéo, ce n'est même pas sorti sur les grands écrans.
'''Manu''' : Je l'ai vu au cinéma.
'''Cactus''' : Et toi, tu préfères quoi, Gérard ? Les films américains ou les films français ?
'''Gérard''' : Moi, je n'en ai rien à foutre.
'''Cactus''' : Argumente ?
'''Gérard''' : Moi, personnellement, pour l'instant, je n'ai pas les moyens de me payer le ciné.
'''Phildar''' : Non, Gérard, il n'a pas les moyens d'aller au ciné, il préfère aller à New York voir le cinéma.
'''Gérard''' : Donc, voilà. Je pense que vous avez été contents de...
'''Phildar''' : De sa réponse. Ça vaut le détour.
'''Multiplex''' : Ce que j'aurais voulu savoir, c'est si une carrière, un jour d'acteur se présentait à toi, parce que tu as commencé dans la radio, mais tu vas peut-être aller plus haut. Si une grande carrière d'acteur, comme tout à l'heure, on parlait de Jean Gabin ou Lino Ventura, se présentait à toi, est-ce que tu penses que ça t'intéresserait ?
'''Gérard''' : Je peux te dire une chose que là-dessus, personnellement, non. Je préfère rester à la radio que d'aller faire du cinéma.
'''Multiplex''' : Il y a des rôles qui sont faits pour toi.
'''Phildar''' : Justement, en parlant des gens qui font un autre métier et qui veulent se lancer dans le cinéma, il y a Sucette sur le Minitel qui te pose la question, Gérard, est-ce que tu trouves qu'Ophélie Winter est une bonne actrice ? Et que penses-tu des chanteurs qui se lancent dans le ciné, justement ?
'''Gérard''' : Ça, chacun voit midi à sa porte dans les chanteurs. C'est vrai qu'on n'en a pas parlé. Je n'ai pas pensé à faire la question. C'est vrai qu'il y a beaucoup de chanteurs qui se lancent dans le cinéma.
'''Phildar''' : Est-ce que tu trouves que c'est bien et est-ce qu'ils sont bons
dans le cinéma aussi bien que dans la chanson ?
'''Gérard''' : Ophélie Winter, elle, je la vois mieux dans la chanson. Il y a Michel Sardou que j'adore. Lui, il a sorti deux films.
'''Phildar''' : Sur CD ?
'''Gérard''' : Il a sorti Cross, qui était pas mal. Il y a Patrick Bruel aussi.
'''Multiplex''' : Michel Sardou, il vaut mieux qu'il arrête de chanter, il vaut mieux qu'il arrête de faire des films et qu'il fasse de la poterie.
'''Gérard''' : Oui, qui c'est qui vient de dire ça ? Multiplex...
'''Phildar''' : Chacun ses goûts, Gérard.
'''Tony''' : Qu'est-ce que tu as pensé de la prestation de Guy Béard dans Scarface ?
'''Gérard''' : Non, mais là, tu te trompes. Allez, conclusion du débat.
'''Moulinette''' : À chier.
'''Gérard''' : À chier. Qui c'est qui vient de dire ça ?
'''Multiplex''' : Une fille. C'est toujours les filles qui foutent le bordel. Je ne sais pas si tu as remarqué. Avant, c'était les garçons, maintenant, c'est les filles.
'''Manu''' : Allez, chacun votre tour. Multiplex, conclusion.
'''Multiplex''' : Multiplex, moi, je pense que Gérard, tu pourrais faire carrière dans le cinéma. Je pense que notamment des rôles comme celui de Quasimodo te conviendra très bien.
'''Manu''' : Ou le bossu de Notre-Dame, non ?
'''Multiplex''' : C'est le même, c'est celui-là.
'''Tulipe''' : Moi, j'ai trouvé ça bien. C'est sympa.
'''Cactus''' : Moi, je pense que le cinéma n'existerait pas, on n'aurait pas eu de débat ce soir. Je trouve que c'est pas mal.
'''Tony''' : J'ai trouvé ça trop calme comme débat. Déjà, je voulais te le dire. Il faudrait que tu respectes un petit peu plus ton équipe parce qu'elle est quand même là pour travailler avec toi.
'''Gérard''' : Non, mais attends, Tony, déjà pour commencer, l'équipe ce soir, elle a bien travaillé. Je voulais la remercier.
'''Phildar''' : Merci, chef.
'''Gérard''' : Je voulais remercier Phildar quand même qui a fait les deux débats à la réa.
'''Phildar''' : Et tu sais que ça me démangeait.
'''Gérard''' : Manu, qui a fait un peu n'importe quoi au standard, mais c'est pas grave.
'''Manu''' : C'était nickel, il n'y a pas eu une insulte, pas eu un truc.
'''Gérard''' : Oui, mais quand je demande de retirer des gens, c'est pas la peine d'essayer de les passer sur d'autres personnes. Sur le premier débat, c'est ce que tu as voulu jouer et puis là, c'est le deuxième avec Ananas et l'autre et Multitex. On a vaguement repéré.
'''Tony''' : D'ailleurs, c'est Goldo, je te le dis.
'''Manu''' : Non, ce n'est pas possible, c'était un 03. Il n'a pas déménagé, Goldo, je l'ai vu ce midi.
'''Gérard''' : Je vais voir parce que j'ai gardé les fréquences.
'''Tony''' : Je n'aime pas trop que vous fassiez des coups comme ça à mon Gérard, je vous le dis.
'''Phildar''' : T'es un peu lèche-botte, Tony.
'''Gérard''' : Mais Rocco qui s'est fait passer pour Tony, donc on l'a reconnu tout de suite.
'''Tony''' : Non, ça c'est faux. C'est faux parce qu'ils m'ont appelé un quart d'heure avant la fin. Et Reego, tu l'as pas remercié ?
'''Gérard''' : Non, mais Reego, de toute manière, il a fait comme le mardi dernier. Il a bien travaillé. De toute manière, si j'ai qu'un truc à dire, c'est Reego qui a le mieux. C'est le mieux qui a travaillé parce qu'il a voulu que tout le monde réagisse sur l'Internet et je remercie.
'''Reego''' : Et d'ailleurs, pour la conclusion, il y a Arnette sur l'IRC qui chie sur ton débat.
'''Gérard''' : Eh bien, Arnette, moi je te...
'''Phildar''' : On a bien compris.
'''Poussin''' : Donc c'est vrai que les salles de cinéma, s'il n'y en avait pas, on ne pourrait pas en parler et puis on ne pourrait pas aller voir les films, c'est clair.
'''Gérard''' : Oui, mais il faut dire une chose que les salles de cinéma, c'est qu'il y en a beaucoup en France et elles sont moins fréquentées qu'avant.
'''Poussin''' : Mais il n'y en a pas beaucoup par contre dans les petites campagnes.
'''Gérard''' : Oui, mais ça dans... Oui, c'est...
'''Phildar''' : Excusez-moi, justement sur Minitel, il y a une question de Sucette encore qui dit étant donné qu'il y a trop de salles de cinéma, est-ce qu'il ne faudrait pas en abandonner sur le bord de la route ?
'''Gérard''' : Non, mais ça, voilà, Sucette, tu vois, je ne préfère même pas te répondre à ta question. Donc la semaine prochaine...
'''Phildar''' : Ta conclusion Gérard sur le cinéma avant ?
'''Gérard''' : Non, mais attends, je vais annoncer le thème du débat de la semaine prochaine. Donc la semaine prochaine, le premier débat, comme ça va intéresser tout le monde et qu'il y a longtemps qu'on ne l'a pas fait. Disons qu'on l'a fait mais on va le refaire. On va faire les boîtes de nuit.
'''Phildar''' : Oui, le milieu de la nuit, les DJ, tout ça.
'''Gérard''' : Voilà. Et le deuxième débat, on verra.
'''Phildar''' : D'accord. Tu vas réfléchir chaque semaine et tu vas donner ta conclusion sur le cinéma, bien sûr.
'''Gérard''' : Donc en conclusion sur le cinéma, je pense que ce soir ça s'est bien passé, les deux débats se sont bien passés, personne ne s'est énervé. Ça, c'est ce qui m'a fait le plus plaisir et ça fera plaisir à Max s'il est encore dans le quartier mais je ne pense pas. Et donc, j'espère que la semaine prochaine ça sera pareil. Et donc, on va se quitter pour finir avec Banga avec Montez-moi dessus sans selle et vous allez avoir Rousseau Rousseau pour la nuit sans pub et bien sûr demain 22h minuit Max, le Star System. Bonne nuit à tous et à la semaine prochaine.
== Le débat sur les boîtes de nuit ==
=== Contexte ===
Cette semaine, la routine semble reprendre ses droits. Pourtant, il semble bien que l'équipe, et en particulier Phildar, tente de réintroduire des éléments comiques dans l'émission. Par ailleurs, Gérard prenant confiance, il libère son instinct de bavard et l'émission renforce encore son surréalisme dans le contenu de ce qui y est dit, largement alimenté par Max. Cette tendance n'est pas sans risque de dérapage, et cette émission en est une belle démonstration. Alimenté par des auditeurs à l'esprit vif, rebondissant sur d'anciennes expressions qu'il utilisait dans le cadre de ses conseils comme « Sans indiscrétion » ou d'autres liées à ses courriers comme « Ca se termine, au tribunal », ils accélèrent le déroulé de la scène, ce qui rend gérard confus, et l'expose aux vrais dérapages. L'équipe contrôle et surtout, on le voit ici, il n'y avait pas la même sensibilité au sujets de genre et autres. On peut en effet parier que en 2026, nombreux seraient ces dérapages qui l'auraient exclu de l'antenne alors qu'ici, un simple recadrage suffisait. C'est l'image de cette liberté qui reste intéressante aussi à explorer à travers ces programmes, liberté qui peut d'ailleurs se discuter au regard des cibles de ces propos parfois maladroitement outranciers.
Enfin, c'est le premier débat où Gérard accordera de l'importance à l'IRC et au nombre de connectés. Nous y reviendrons, cet élément prendra une ampleur imprévisible ensuite.
=== Les personnages ===
* Phildar et Manu
* gérard Cousin : Gérard
* Franck Bargine : Max
* Igor : Reego
* Crouton (idem que Tulipe la semaine dernière)
* Axel : Oignon
* Tuteur, Col roulé
* Tony Morestin : Tony
* Mladen Derek :
* Olivier Bouchet : Olivier de la pro
=== Transcription ===
'''Gérard''' : Et voilà donc bonsoir à tous, 0h42, on est un petit peu en retard donc c'est un peu de ma faute parce que j'ai eu des petits problèmes mais c'est pas grave... Donc là vous venez d'entendre deux passages des Bee Gees, Philippe si tu peux...
'''Phildar''' : Helle woman et le deuxième je te le laisse annoncer quand même.
'''Gérard''' : Ouais mais... Steve... Alave Steve Alave, donc c'était le un, je pense que ça devait être la fièvre du samedi soir...
'''Phildar''' : Non c'est le deuxième, la fièvre du samedi soir et le premier c'était... Ouais mais c'était quoi comme film à peu près ?
'''Manu''' : Rocky IV je crois.
'''Phildar''' : Ouais ça devait être dans Rocky... Enfin bref, c'était un bon film.
'''Gérard''' : Voilà, donc le premier débat il va porter... Il va porter sur les boîtes de nuit. Donc on va accueillir pour ça Crouton, 21 ans de Beauvais. On peut écouter Funradio 101.9... A mon avis, tu vois, Manu... A mon avis Beauvais, on écoute, Beauvais c'est dans l'Oise
'''Manu''' : Ouais, c'est 101.9.
'''Gérard''' : Non, à mon avis je pense pas.
'''Manu''' : Bah c'est marqué sur mon truc.
'''Gérard''' : Ah ouais mais c'est marqué sur ton truc mais ton truc il doit pas être à jour.
'''Manu''' : Ah ok. Alors je peux pas savoir, je m'en excuse.
'''Gérard''' : Donc alors Beauvais, ça m'étonnerait que ça soit sur 101.9. Crouton, t'es là pour me confirmer ?
'''Crouton''' : Oui oui, bonsoir Gérard, mes respects d'abord.
'''Gérard''' : Bonsoir. Non non mais tu peux me confirmer la fréquence ?
'''Crouton''' : 101.9 oui
'''Gérard''' : Ah non non, Beauvais dans l'Oise ?
'''Phildar''' : Attends Gérard, elle habite dans l'Oise, si elle te dit que c'est sa fréquence c'est la sienne.
'''Gérard''' : Non mais attends...
'''Phildar''' : Bon on va faire des recherches, on va faire des recherches, on va continuer les présentations, allez on y va.
'''Gérard''' : Donc petit_poil, donc il y a Bondy, donc 101.9, pas de problème pour cette fréquence, 23 ans. Allo ? Oh là, vous vous réveillez quand je dis bonsoir ou pas là ? Allo ?
'''Petit_poil''' : Tu m'entends ? Allo
'''Gérard''' : Oh là, ça commence très très très mal hein Phildar... Je sais pas comment vous... Tuteur d'Aix-en-Provence, on peut écouter Fun Radio sur 103.1.
'''Tuteur''' : Ouais c'est ça, c'est là-bas.
'''Gérard''' : Voilà. Oignon, donc Brest 98.9.
'''Oignon''' : Oui, bonsoir Gérard, bonsoir à toute l'équipe
'''Gérard''' : Tony, 20 ans. Tony, gentil hein ?
'''Tony''' : Ah oui. Sans problème. On est gentil et puis on écoute Fun Radio sur 101.9.
'''Gérard''' : Voilà. Et... Col_roulé. Donc... Ou qu'on peut écouter Fun Radio Lille 96.8. Et voilà. Donc alors, les débats vont porter sur les boîtes de nuit. Donc... Avez-vous déjà été en boîte de nuit ? ''[silence]''. Non, non mais attendez. Là, je ne vais pas commencer à parler dans un mur.
'''Tony''' : Calme-toi Gégé, calme-toi.
'''Gérard''' : Non, non mais attends, Tony, Tony Tony. Attendez, attendez, s'il vous plaît derrière. Tony, je vais me calmer. De toute manière, tu sais que la semaine dernière je t'ai eu, ok ? Non mais moi je voudrais... Quand je pose la première question, je voudrais pas déjà... J'aimerais déjà pas avoir un blanc. Parce que là...
'''Phildar''' : Attends, j'ai une idée pour ça. Pour pas avoir de blanc, quand tu poses la première question, tu fais, par exemple : « Col roulé, qu'est-ce que t'en penses ? ». Comme ça, il y aura moins de blancs.
'''Gérard''' : Alors donc... Donc, déjà, la première question : avez-vous déjà été dans une boîte de nuit ? On va demander à... Col roulé.
'''Col roulé''' : Ouais, ben ok. Ouais, ben ouais... Moi, j'ai déjà été en boîte de nuit, ouais. Et puis, en fait, je voudrais dire que c'est vachement cool parce que tu rencontres plein de gens.
'''Gérard''' : Ouais, mais ça... Non, mais attends ! Là, déjà, commencez pas à me casser le thème du débat parce que... petit à petit, on va y revenir là-dessus.
'''Col_roulé''' : J'approfondis, Gérard, j'approfondis.
'''Gérard''' : Bon. Donc, pour toi, t'as déjà été en boîte de nuit ?
'''Col roulé''' : Ouais, voilà, quoi. Ouais.
'''Gérard''' : Tu peux me citer... euh... Non. Non, non, j'allais dire : « Tu peux me citer... ».
'''Phildar et Manu''' : Non, pas de marque. Non, non.
'''Gérard''' : Euh... Tony ?
'''Tony''' : Oui, oui, bien sûr. J'ai déjà été en boîte de nuit. J'aime bien y aller, mais je préfère plutôt les ambiances soirées.
'''Gérard''' : Euh... Dans... dans quel sens ? Si ça te dérange pas.
'''Tony''' : Ça me dérange pas du tout, mon Gérard... euh... bah, je préfère... si tu veux, je préfère les soirées. Parce qu'en boîte de nuit, je trouve... bon, c'est bien, on s'éclate, on s'éclate bien... Mais je trouve ça un petit peu... il y a trop de monde, si tu veux. On fait moins de rencontres que, par exemple, si on fait une petite soirée en appartement.
'''Gérard''' : Ouais, non mais... euh... Dans ces cas-là, Tony, moi je peux... je te renvoie la... Oh, non ! Mais attendez derrière, s'il vous plaît !
'''Tony''' : Tu me renvoies un rot, là. Parce que j'ai entendu un...
'''Gérard''' : Non, non, non, non, non. Je t'envoie pas un rot. Parce que je dis aux gens qui sont derrière qu'ils se calment, parce que moi, je vais quand même répondre à la question. Donc, je suis d'accord avec toi. Donc, c'est vrai qu'on a du mal à... Dans des boîtes de nuit, je pense que c'est... Col roulé qui a dit... On peut faire plus de rencontres. Moi, je suis pas d'accord.
'''Tony''' : Ouais, moi non plus, hein.
'''Col_roulé''' : Non, bah si, mais ça dépend du tempérament aussi, Gégé ! Si t'as un tempérament ouvert, tu vas vers les gens, franchement, tu peux faire des rencontres, quoi.
'''Crouton''' : Oui, mais par exemple, je pense que ce ne sont pas que des bonnes rencontres.
'''Gérard''' : Oui, Crouton. Bah, vas-y alors, dis, toi, dis ta pensée.
'''Crouton''' : Moi, personnellement, je crois que ce ne sont pas que des bonnes rencontres.
'''Gérard''' : Oui, mais dans ce cas-là, je vais rejouer avec... les... les... les jeux avec Manu : « Pourquoi et comment ». Donc, pourquoi que ce ne sont pas des bonnes rencontres ?
'''Crouton''' : Bah, quand je dis des bonnes... pas que des bonnes rencontres, ça veut dire que tu peux tomber sur des gens sympas et des gens sincères, comme tu peux tomber sur des loubards
'''Col_roulé''' : Des gros obsédés, quoi.
'''Gérard''' : Non, non, non, non, mais... Non, non, non, non, attendez, attendez, attendez ! Là, je vais demander à... Tony, Col_roulé et Crouton... donc on va laisser parler les autres. Après, on va essayer de... de rentrer dans...
'''Col_roulé''' : dans le débat.
'''Gérard''' : Non, non, non, non. On va essayer de... d'approfondir la question. Parce que moi, je... je peux... je peux vous dire que des rencontres... j'ai jamais eu l'occasion d'en faire là-dedans. Donc, Petit Poil, pour toi ?
'''Petit Poil''' : Alors, pour moi, j'aime bien... j'aime bien aller en boîte pour m'éclater, pas forcément pour draguer. Pour être dans mon trip sur la techno. J'aime bien aussi les soirées pour plus rigoler, faire connaissance.
'''Tony''' : Voilà, comme moi.
'''Gérard''' : Ok. Tuteur ?
'''Tuteur''' : Moi, j'aime bien aller en boîte pour me détendre le week-end, quand j'ai rien à faire. Et puis, on peut sûrement faire des rencontres sympas. Et puis, quand elles disent que... qu'on peut tomber sur des gens pas cool et tout ça... ben, je veux dire, où que t'ailles, de toute façon, tu peux avoir des gens sympas ou pas, quoi.
'''Tony''' : Excuse-moi, Gérard. Est-ce que je peux poser une question à cette jeune demoiselle ?
'''Gérard''' : Oui, tu peux si tu veux. Mais attends, Tony.
'''Tony''' : Oui.
'''Gérard''' : On a Ognon qui n'a pas répondu encore.
'''Ognon''' : Ben ouais, Gérard, bien sûr. Ouais, je vais en boîte. Je vais en boîte... une fois par semaine, à peu près, quoi. Tous les week-ends, plutôt le samedi.
'''Gérard''' : D'accord.
'''Ognon''' : Et voilà, quoi. Je m'éclate bien, plutôt dans les boîtes techno.
'''Gérard''' : Ouais, mais... Ouais, mais d'accord, mais bien sûr ! Tout le monde me parle de boîtes techno, mais il n'y a pas que la techno en France.
'''Ognon''' : Ah ouais, mais ça, ça dépend en fonction de toi, ton style de musique. Moi, je préfère aller dans une boîte pour m'éclater sur de la techno plutôt que... enfin, je sais pas, je me vois mal en boîte pour danser sur du rap, par exemple, ou du raggameuf.
'''Gérard''' : Non, non, non. Attendez, attendez, attendez ! Attendez, attendez. On va quand même... on va quand même éclaircir la question.
'''Tony''' : Ça devient intellectuel tes débats. Oulala !
'''Gérard''' : Ouais, mais... Avez-vous déjà été en boîte de nuit ? Donc, moi je peux vous le dire : oui. Parce que j'y ai été plus d'une fois. J'ai... bon, Tony, je pense que tu dois savoir...
'''Tuteur''' : à la Loco.
'''Tony''' : On avait dit qu'on en parlerait pas.
'''Gérard''' : Non, mais justement, donc ! On va en parler parce qu'il y a quand même Jean-Marie K., tout à l'heure, qui était parmi... ouais, avec Max, qui en a parlé. Donc, maintenant, si je ne retourne plus à la Loco, c'est qu'à l'heure actuelle, bon ben, moi j'ai trouvé ma... la personne avec qui faire ma vie.
'''Tony''' : Tu peux retourner en boîte pour t'éclater avec Sandy.
'''Phildar''' : Ce que je voulais dire, c'est qu'on n'est pas forcés d'aller en boîte pour trouver une nana.
'''Gérard''' : Voilà. Je pense qu'à la Loco, de toute manière, vous allez pas... vous allez pas trouver la chaussure à votre pied.
'''Tuteur''' : Pourquoi ?
'''Gérard''' : Ah ben, je pense pas. Ah non, parce qu'il y a trop de nanas...
'''Tony''' : Ouais, il y a un tas de nymphomanes, il faut le dire.
'''Gérard''' : Ouais, ben oui. Mais de toute manière, un tas de nymphomanes... Attendez, attendez, attendez ! Pour finir, pour répondre à la question à Tony...
'''Tony''' : Oui.
'''Gérard''' : Donc, moi je peux te dire : des "nymphos"... je vais te dire une chose, c'est même pas une nympho. C'est des allumeuses, pour moi.
'''Crouton''' : Ah ouais, exactement.
'''Gérard''' : T'as plus d'une personne, ils vont te dire : « Ouais, ben, tu me payes un verre », et après ça va se terminer juste... juste... Attendez, attendez, attendez ! Attendez. Tout le monde me dira oui ou non derrière si vous êtes pas d'accord. Mais moi, je peux vous dire une chose : que ça se termine, à la fin, juste par un verre ou par une soirée à la casba et après c'est terminé, tu revois plus la personne.
'''Phildar''' : C'est une autre boîte, ça, la casba ?
'''Gérard''' : Non, ça c'est... c'est mon terme.
'''Phildar''' : Ah, pour dire chez toi ?
'''Gérard''' : Non, non, c'est mon nouveau... mon nouveau truc. J'ai envie de dire ça, c'est tout.
'''Tony''' : Ouais, Gérard, j'avais une question.
'''Gérard''' : Oui, mais attends. Attendez, attendez. Me laissez voir sur Internet si des fois on a des réponses sur la première, non ? Non, pas pour l'instant. Ok reego, mais de toute manière, tu peux réagir sur Internet. Donc, c'est quoi le site Internet ?
'''Reego''' : C'est irc.funradio.fr.
'''Gérard''' : Voilà, donc vous pouvez réagir sur le débat de la boîte de nuit. Et le deuxième portera sur les routiers. Alors donc, Ognon, tu voulais rajouter quelque chose ?
'''Ognon''' : Ouais, est-ce que ça t'est déjà arrivé ? Parce que, justement, je t'entends parler de ça... est-ce que ça t'est déjà arrivé de te faire draguer par une allumeuse ?
'''Gérard''' : Euh... ça m'est déjà arrivé, oui. Oui, oui, oui.
'''Tony''' : Sans indiscrétion, comment ça s'est passé ? En tout bien, tout honneur ?
'''Gérard''' : Non, non, mais je peux te dire qu'en boîte de nuit, même à la Loco, même que j'étais avec Sandy — Sandy, ça fait 8 mois que je la connais — je peux te dire une chose : j'ai eu des gens, des nanas qui sont venues me voir.
'''Ognon''' : Ça s'est terminé, comme t'as dit, par un verre ?
'''Gérard''' : Non, non, non. Ça s'est pas terminé par un verre. C'est que...
'''Crouton''' : Et avant Sandy ?
'''Gérard''' : Avant Sandy, ben... avant Sandy, il n'y avait rien d'autre.
'''Crouton''' : T'avais connu qui ?
'''Gérard''' : À part Christine, c'est tout.
'''Tony''' : On la salue d'ailleurs.
'''Phildar''' : Tu l'avais rencontrée pas à la Loco, celle-là ?
'''Gérard''' : Non, non, mais Tony ! On la salue pas.
'''Tony''' : Ah, pardon.
'''Crouton''' : Qui t'avais rencontré à la Loco ?
'''Gérard''' : Ben, j'ai rencontré plus d'une personne. Bon, ben, je pense qu'elle nous écoute, donc voilà.
'''Crouton''' : Non, mais c'est qui ?
'''Gérard''' : Ah non, mais je ne citerai pas tous les noms.
'''Crouton''' : Ah, pourquoi ?
'''Phildar''' : Parce que ce n'est pas le thème du débat !
'''Gérard''' : Non, non, ce n'est pas le thème du débat.
'''Crouton ''' : D'accord. Donc pour répondre à la question que tu disais. Donc, il y a des nanas qui allument, qui se font payer un verre et puis qui se cassent. C'est ça, hein ? Donc, qui veut répondre à la question ? Non, mais c'est... c'est vrai, franchement. Il y en a beaucoup comme ça.
'''Gérard''' : De toute manière, dans les boîtes de nuit, de toute manière, c'est ça. Si t'es à pied et que la nana elle a un petit coup dans le verre, un petit coup dans le nez... c'est de savoir si le mec il a une voiture pour la raccompagner. Et après ça se termine dans le plumard.
'''Ognon''' : Au tribunal oui.
'''Gérard''' : Non, non, non, attendez ! Attendez, attendez. On se calme, Tony.
'''Tony''' : Oui, ce qu'il faut dire, Gérard, aussi...
'''Gérard''' : Non, non, mais Tony, on ne dit pas « ça se termine au tribunal », d'accord ?
'''Phildar''' : Ce n'était pas Tony, Gérard, c'était Ognon.
'''Gérard''' : Bon, Ognon ! Manu, tu me prends Ognon et tu lui dis qu'il reste...
'''Manu''' : Donc, je lui prends l'Oignon et je lui dis qu'il se calme...
'''Gérard''' : Non, non, tu le prends hors antenne !
'''Phildar''' : Tu prends l'Oignon de Tony...
'''Gérard''' : Tu prends Ognon et tu lui dis...
'''Ognon''' : Je me calme, je me calme !
'''Gérard''' : Non, non, mais tu vas aller voir Manu, là.
'''Ognon''' : Non, pas de problème, je me calme, Gérard.
'''Gérard''' : Non, non, mais parce que... Non, non, mais parce que moi, cet après-midi, on a fait une réunion avec toute l'équipe. Donc je voudrais...
'''Phildar''' : Donc c'était cet après-midi, et là il est 1h du matin... donc on en était où ?
'''Gérard''' : Oui, non, mais je voudrais que le débat se passe comme la semaine dernière : impeccabe.
'''Tony''' : Qui c'est qui va me prendre le cul là ? parce que je suis perdu...
'''Petit poil''' : Oui, Gérard ? Je voulais dire aussi, il ne faut pas généraliser. Toutes les filles ne sont pas comme ça, hein.
'''Gérard''' : Oui, non, mais attends. C'est qui qui parle, là ?
'''Petit Poil''' : C'est Petit Poil, là.
'''Gérard''' : Oui, mais Petit Poil, moi je vais dire une chose. Tu as certaines nanas, quand tu les vois à la Loco, il faut dire une chose : il faut voir comment vous êtes habillées. Parce que les trois quarts...
'''Petit Poil''' : Oui, les trois quarts, mais pas toutes !
'''Gérard''' : Oui, mais... Non, mais...
'''Crouton''' : Moi je crois qu'il ne faut pas généraliser.
'''Gérard''' : Oui, mais d'accord. Vous venez en boîte pour vous éclater.
'''Tony''' : Mais nous on veut vous éclater, c'est ça le truc !
'''Gérard''' : Mais venez pas, dans ces cas-là, nous allumer.
'''Petit Poil''' : Oui, mais Gérard, si on vous allume, c'est pour avoir un verre, hein.
'''Tony''' : Oui, mais nous on veut bien payer un verre, mais il faut que vous couchiez !
'''Gérard''' : Ah oui, voilà ! Voilà. Non, bon. Tony, Tony, Tony !
'''Tony''' : Je ne sais pas si tu es d'accord avec moi...
'''Gérard''' : Non, non, mais c'est bon, on arrête. Parce que là, sinon, la question on va en faire... On va garder...
'''Tuteur''' : Je veux dire quelque chose, c'est Tuteur qui parle.
'''Gérard''' : Oui.
'''Tuteur''' : Il y a des filles — enfin, moi j'en fais partie, j'en ai déjà fait partie, quoi — qui viennent en boîte que pour trouver un mec. Donc...
'''Gérard''' : Oui, mais Tuteur ?
'''Tuteur''' : Oui.
'''Gérard''' : Tuteur, est-ce que tu crois que dans une boîte de nuit tu vas rencontrer l'âme sœur ?
'''Col roulé''' : Ah si si, elle va rencontrer Col roulé, c'est tranquille. Voilà.
'''Gérard''' : Non, non, mais Col roulé, s'il te plaît, tu te calmes.
'''Col roulé''' : Ok.
'''Gérard''' : Maintenant, on va passer à la deuxième question : que pensez-vous des ball-traps en plein air ?
'''Intervenant''' : Des quoi ?
'''Gérard''' : Des ball-traps.
'''Tony''' : Alors, un ball-trap, c'est quoi ? Reego, oui ?
'''Reego''' : Non, non, ils se demandent ce que c'est un ball-trap.
'''Gérard''' : Un ball-trap, c'est des soirées qui sont organisées en plein air. Style, par exemple... Non, pas la fête à Neuneu ! Parce qu'il n'y a pas de bal.
'''Phildar''' : La fête des Loges ? La fête des Foire du Trône ?
'''Gérard''' : Non, non. Où c'est qu'on pourrait trouver des ball-traps ?
'''Manu''' : Bah, dans mon village, à la kermesse. Les kermesses, toutes les kermesses, il y a des bals à la fin.
'''Gérard''' : Voilà, voilà, genre kermesse.
'''Phildar''' : Il y a pas mal de bals-tringues aussi, chez Manu.
'''Gérard''' : Non, des ball-traps, abruti !
'''Phildar''' : Ah, pardon.
'''Gérard''' : Eh, commence pas toi parce que... sinon je vais te gaufrer, toi.
'''Manu''' : Sur IRC, on me dit que les ball-traps, c'est à Trappes.
'''Gérard''' : Non, mais ball-trap, c'est pas à Trappes !
'''Gérard''' : Non mais c'est des trucs pour danser, c'est pas à Trappes spécialement.
'''Crouton''' : Ouais, mais t'as les farces-et-attrapes aussi.
'''Gérard''' : Oui, mais ça, les farces-et-attrapes, ça c'est autre chose.
'''Crouton''' : Bah, c'est comme un bal, hein.
'''Gérard''' : Oui, mais... Non, non, mais... Donc, répondez déjà à la question. D'accord, alors... Donc, Crouton ?
'''Crouton''' : Bah moi, je pense que c'est pas mal, mais enfin... c'est peut-être réservé à une certaine catégorie d'âge.
'''Gérard''' : Oh là, mais Crouton !
'''Crouton''' : Oui ?
'''Gérard''' : Crouton, t'as un téléphone sans fil ?
'''Crouton''' : Bah non... Enfin, si, ouais, c'est un sans fil, mais c'est pas un portable.
'''Tony''' : Ah, ça marche pas avec Gégé, ça...
'''Gérard''' : Non, mais apparemment, t'as un décalage entre nous.
'''Crouton''' : C'est vrai ?
'''Gérard''' : Ouais, parce que...
'''Crouton''' : Bah non, bah là... Moi je suis le plus près possible, je peux pas faire plus près.
'''Tony''' : Allez, avale-le !
'''Gérard''' : Non, non, mais on se calme derrière, hein ! Tony, on se calme.
'''Tony''' : Désolé, c'est pas moi.
'''Petit Poil''' : Alors, moi je suis pas d'accord avec Crouton qui disait que c'est pour que un certain âge. Moi je dirais, quand tu vas dans des petits patelins, il y a des jeunes aussi, ils ont pas le choix. Donc il faut bien qu'ils aillent essayer les bals à Trappes pour rencontrer des personnes.
'''Gérard''' : Ouais, non mais ball-trap, c'est... Non, mais attends, Tony, s'il te plaît.
'''Tony''' : Pardon, pardon.
'''Gérard''' : Je vais y répondre quand même, parce que c'est quand même moi qui gère le débat.
'''Tony''' : Oui, oui, tout à fait.
'''Gérard''' : Donc, le ball-trap, c'est un truc qui se passe en plein air avec de la musique.
'''Petit poil''' : C'est comme la fête de la musique, quoi, c'est en plein air !
'''Gérard''' : Bah oui, si tu veux. C'est pour ça que je dis les ball-traps, parce qu'on peut très bien parler de la fête de la musique. Justement, ça sera la onzième question. Donc tu y reviens maintenant, donc c'est même pas la peine. Donc c'est pareil : sur la fête de la musique, est-ce que tu peux rencontrer des gens ?
'''Petit poil''' : Oui, oui. Bah bien sûr, tu peux faire connaissance de plusieurs personnes en, je sais pas, en prenant un verre, en dansant, en écoutant la musique.
'''Tony''' : Moi ce que je voulais dire, c'est que Petit Poil là, elle dit qu'elle voit des jeunes... mais moi je suis déjà allé à des ball-traps. Bon...
'''Gérard''' : Tony, Tony ?
'''Tony''' : Oui ?
'''Gérard''' : Bon, vas-y alors, toi.
'''Tony''' : Ouais, mais parce qu'il y a...
'''Gérard''' : Non, mais court, court, court, hein ! Parce que... faut qu'à une heure... à une heure et demie... faut qu'à une heure... Non, non, mais faut qu'à une heure et demie j'attaque le deuxième, hein.
'''Phildar''' : Non, on a pris plus tard, donc on peut aller au moins jusqu'à deux heures moins le quart quand même.
'''Gérard''' : Non, non, non, non. Une heure et demie, comme la semaine dernière. Non, non, mais c'est pas vous qui commandez ! Donc moi j'ai les consignes : c'est une heure et demie, terminé. Le deuxième : deux heures... euh... deux heures moins le quart jusqu'à trois heures.
'''Tony''' : Je peux réagir au débat quand même ?
'''Gérard''' : Bon, alors... euh, Tony ?
'''Tony''' : Oui, je voulais réagir à la personne qui vient de parler.
'''Gérard''' : Oui, Petit Poil.
'''Tony''' : Oui. Ouais, tu disais que... Mais tu sais qu'il y a un...
'''Gérard''' : Attends, Tony. Moi je voudrais savoir qui c'est qui a un téléphone qui est pourri parce que là, c'est impossib.
'''Phildar''' : On l'a dit, Gérard, c'est Petit Poil, c'est ça ?
'''Petit Poil''' : Ah, non non, c'est pas moi.
'''Manu''' : C'est pas Petit Poil, c'est Crouton. S'est rapproché de la base et ça doit aller mieux.
'''Phildar''' : Ça va mieux là.
'''Gérard''' : Là, on va pas continuer le débat avec un son comme ça !
'''Crouton''' : Mais écoute, Gérard, je suis déjà passée dans le débat et ça a jamais fait ça, quoi.
'''Gérard''' : Ah, mais alors pourquoi qu'aujourd'hui ça le fait ?
'''Crouton''' : Eh ben, je suis désolée. Je m'excuse, t'énerves pas. C'est peut-être pas que moi...
'''Gérard''' : C'est pas la première fois que t'appelles, toi ?
'''Crouton''' : Ben non, c'est pas la première fois.
'''Phildar''' : Elle a appelé l'année dernière quand on faisait le débat la nuit.
'''Gérard''' : Bon, donc Tony ?
'''Tony''' : Oui, moi je voulais réagir à ce que disait Petit Poil. Parce qu'elle disait qu'il y avait beaucoup de jeunes qui venaient aux ball-traps. Moi je suis allé à des ball-traps, et les jeunes que j'ai vus, c'était des bouseux qui venaient en tracteur.
'''Gérard''' : Non, mais attends ! Pourquoi des bouseux ? Non, mais attends, Tony ! Pourquoi que tu vas tout de suite chercher des trucs comme ça ? Des gens...
'''Tony''' : Bah écoute, je te fais part de mon expérience.
'''Petit Poil''' : C'est peut-être pas dans les bons endroits que t'as été.
'''Tony''' : Bah écoute, moi je suis allé à Jouy-en-Josas.
'''Gérard''' : Non, non, mais ça y est ! C'est bon, c'est pas la peine de citer les villes. Ok, Tony. Donc t'as été dans certaines villes et ça s'est mal terminé, c'est ça ?
'''Tony''' : Non, pas du tout ! Parce qu'elle disait qu'il y avait beaucoup de jeunes. Moi j'ai vu que des vieux, et puis des mecs qui venaient en tracteur.
'''Gérard''' : Bon, on va demander... on va demander à Tuteur.
'''Tuteur''' : Bah moi j'ai... moi je sais pas, je suis jamais allée dans un ball-trap. Mais je trouve que c'est pas très sympa de dire des bouseux, parce que je trouve que c'est méprisant.
'''Tony''' : Tout le monde me déteste, de toute manière.
'''Gérard''' : Non, mais attends, stop Tony !
'''Petit poil''' : Mais non, pas moi...
'''Gérard''' : Attends, Tuteur. Avec Aix-en-Provence, je pense que t'as dû déjà aller dans des ball-traps, me dis pas le contraire. Attends, avec Aix-en-Provence...
'''Phildar''' : y a un festival en plus là-bas.
'''Gérard''' : Y a pas mal de trucs.
'''Tuteur''' : Mais si tu veux, ça fait que cette année que j'y habite, donc...
'''Gérard''' : Ah ouais, donc y a pas longtemps.
'''Phildar''' : Parce qu'il y a le festival des ball-traps là-bas.
'''Ognon''' : Ouais, bah moi j'ai jamais été dans un ball-trap. Mais bon, pour les fans de bal musette et Licence IV en tout genre, ouais, ça peut être sympa.
'''Gérard''' : Non, mais ça on en a rien à foutre de Licence IV ! Non, non, non, non. Non, mais moi je vais te dire tout de suite qu'on en a rien à foutre de Licence IV parce que je sais sur quoi tu veux me parler.
'''Phildar''' : C'est quoi la différence entre ball-trap et bal musette, par exemple ?
'''Gérard''' : Non, non, mais attends ! Licence IV, il veut parler de...
'''Phildar''' :Mais c'est un groupe, Licence IV. Mais c'est du bal musette. alors quelle est la différence, Gérard, entre ball-trap et bal musette ? Est-ce que tu pourrais expliquer la différence aux auditeurs ?
'''Gérard''' : Là-dessus, non.
'''Tony''' : C'est pas pareil.
'''Phildar''' : Ouais, c'est pas pareil. C'est peut-être pas la même musique ?
'''Gérard''' : C'est pas du tout la même musique !
'''Phildar''' : Qu'est-ce qu'on écoute dans les ball-traps, alors, comme musique ?
'''Gérard''' : Un peu de tout, hein.
'''Phildar''' : C'est-à-dire ?
'''Gérard''' : T'écoutes... de l'accordéon...
'''Phildar''' : Yvette Horner !
'''Gérard''' : Non, non ! De l'accordéon, on vient de le dire. Alors euh...
'''Tuteur''' : De la guitare ?
'''Gérard''' : Euh, de la guitare... euh... avec qui ?
'''Tuteur''' : Du synthé.
'''Gérard''' : Euh... je pense pas que Jean-Michel Jarre prenne un truc sur les ball-traps, hein.
'''Tuteur''' : Bah si, il doit en faire.
'''Gérard''' : Non, non, non, non.
'''Tony''' : Il joue de l'accordéon électronique, hein.
'''Gérard''' : Ah ouais, ouais. Non, mais attends... Euh, Tony ?
'''Tony''' : Oui ?
'''Gérard''' : Tony ?
'''Tony''' : J'ai déjà vu, j'ai déjà vu, hein !
'''Gérard''' : Non, non, mais attends. C'est toi qui viens de dire « de l'accordéon électronique » ?
'''Tony''' : Oui, tout à fait, ça existe.
'''Gérard''' : Donc, moi je peux te dire une chose : c'est que Jean-Michel Jarre, quand il fait venir des gens, euh... fais-moi confiance qu'il fait déplacer des camions ! Et son truc c'est... c'est pas de l'accordéon comme tu dis. C'est ça ? Non, non, mais attends Tony... Tony, tu me laisses finir ? De toute manière, on va faire... là, on va pas en discuter trop parce que je risque la semaine prochaine de faire un débat sur les synthés.
'''Reego''' : Sur quoi, sur la santé ?
'''Gérard''' : Non ! Le synthé.
'''Phildar''' : C'est quoi ça ?
'''Gérard''' : Le synthétiseur.
'''Ognon''' : Est-ce que t'as déjà joué du synthé, toi, Gérard ?
'''Gérard''' : Non !
'''Tuteur''' : Est-ce que tu penses que, toi, les ball-trap, c'est de la balle, hein ?
'''Gérard''' : Euh... ball-trap, c'est de la balle... ça dépend dans quel sens que tu veux le dire.
'''Tuteur''' : Bah, dans le sens figuré.
'''Gérard''' : Ouais, mais dans quel sens ? Ouais, mais dans quel sens ?
'''Tuteur''' : Bah, c'est-à-dire que c'est de la balle, c'est bien quoi.
'''Gérard''' : Ouais, c'est de la balle. Tu peux même dire que c'est de la bombe, bébé !
'''Col roulé''' : En fait, moi je veux dire sur les ball-traps que j'étais un petit peu de l'avis de Tony. C'est que, en fait, bon, c'est réservé à une certaine catégorie de gens, quoi... à peu près la cinquantaine, quoi. Et plus.
'''Gérard''' : Ouais, non, non, mais attendez, attendez ! Attendez, attendez, oh ! Stop, stop, stop, stop. On va pas mettre les personnes âgées là-dedans, parce que de toute manière, un ball-trap, c'est fait pour tout âge. Pour tout type d'âge. Ça peut être de 7 ans jusqu'à 77 ans. Attendez, attendez ! Et chacun fait ce qu'il veut. S'il n'a pas envie de danser sur la musique, ne danse pas. On est d'accord ?
'''Col roulé''' : Mais attends, j'ai pas fini de dire ! Donc j'ai dit qu'en fait, c'était réservé à une certaine catégorie d'âge. Il y avait aussi des gens qui étaient un petit peu moins âgés, mais le problème c'est qu'ils avaient le même tempérament, quoi. C'est pour une certaine catégorie de gens, quoi.
'''Gérard''' : Ouais, mais Col roulé, moi je vais te dire une chose : dans les ball-traps, tu vois tout style d'âge. T'as pas un âge spécial.
'''Col roulé''' : Non, d'accord, mais c'est tous des gens qui écoutent que de l'accordéon, quoi.
'''Gérard''' : Non, pas spécialement que de l'accordéon !
'''Col roulé''' : Est-ce que tu y as déjà été, toi, Gérard ?
'''Gérard''' : Euh, non.
'''Tony''' : Tu verras jamais des jeunes danser sur Verschuren.
'''Gérard''' : Non, mais attendez ! Mais attendez ! Non, mais on va pas s'amuser à prendre des noms comme ça. Danser sur André Verschuren, sur Yvette Horner ou sur... votre... votre... Des accordéonistes on en a pas mal.
'''Ognon''' : C'est bidon.
'''Gérard''' : Ouais, c'est bidon. Bah si ça te plaît pas...
'''Phildar''' : ça dépend de l'âge.
'''Gérard''' : Non, mais attends, il y en a un qui vient de dire : « Si, c'est bidon ». Pour toi, si c'est bidon la question... c'est l'accordéon qui est bidon.
'''Phildar''' : Mais dans ce cas-là, il n'en écoute pas, c'est tout.
'''Gérard''' : S'il aime pas, il n'en achète pas, il n'en écoute pas. Non, mais il achète autre chose, comme CD !
'''Petit poil''' : On peut écouter les deux aussi. On peut aimer l'accordéon et la techno.
'''Gérard''' : Non, mais attendez ! Parce que là, si on part comme ça sur l'accordéon et sur la techno, je peux tenir jusqu'à 3h, même à 4h, et on fera qu'un débat.
'''Tony''' : D'ailleurs, moi j'ai acheté Cyber Accordéon Volume 4, c'était le top.
'''Gérard''' : Bah, bien sûr ! Dis-moi plutôt : Musique de Nuit Volume 4, tu veux ? Ok Tony. Terminé, terminé, stop ! Donc, la troisième question : quel genre de danse que vous aimez ? Vous allez réfléchir à cette question.
'''Phildar''' : Je répète la question : quel genre de danse aimez-vous, par exemple quand vous allez en boîte de nuit ? Parce qu'il faut bien tourner la question.
'''Gérard''' : J'ai pas précisé toujours...
'''Phildar''' : Dans le monde de la nuit, le monde des boîtes de nuit, des DJ, tout ça.
'''Gérard''' : Et donc on va s'écouter Guy Préjean avec « Viens voir la vie de l'autre côté de l'autoroute ». Et vous pouvez toujours nous appeler au 0803 08 5000.
''[musique]''.
'''Gérard''' : Donc, vous êtes toujours en direct de Fun Radio, c'est toujours les débats de Gérard. Et donc, vous venez d'écouter Guy Préjean avec « Viens voir la vie de l'autre côté de l'autoroute ». Et on récupère Crouton, Petit Poil, Tuteur, Ognon... Tony.
'''Tony''' : Salut, je te kiffe.
'''Gérard''' : Moi je te kiffe pas. Tony, tu restes poli, s'il te plaît, merci. Col roulé pour terminer.
'''Phildar''' : Et donc, la question c'était quoi ?
'''Gérard''' : Donc : quel genre de danse que vous aimez en boîte de nuit ? En boîte de nuit, même voire autre... c'est-à-dire, bien sûr, dans les ball-traps. Ognon ?
'''Ognon''' : Oui, Ognon. Moi je voulais répondre. Moi il y a un style que j'adore, c'est les breakers. C'est ceux qui font des "waves", tout ça, c'est les vagues.
'''Phildar''' : Ça, c'est génial. En boîte, ça se voit souvent en boîte de nuit. Généralement vers 2-3 heures du matin.
'''Tony''' : Ils sont tous pétés...
'''Ognon''' : Ils roulent sur la tête comme des...
'''Gérard''' : Oh, ouais ! Comme des... Col roulé ?
'''Col roulé''' : Ouais, bah alors moi, comme danse, ce que j'aime bien c'est le tango, tu vois. Ouais... les ball-traps, ouais. Ouais, ouais. Parce qu'en fait, c'est une technique de drague, quoi.
'''Gérard''' : Non, mais attends, Col roulé. Col roulé ! Col roulé ! Col roulé ! Je pense qu'à mon avis tu reviens dans la deuxième question, et on va pas s'éterniser.
'''Col roulé''' : Ouais, mais non, je t'assure ! En fait tu vois, j'aime bien cette danse, mais en plus c'est une technique de drague, quoi. Bah oui, tout à fait. Je remue, tu vois, mes petites fesses...
'''Gérard''' : C'est le métro qui passe, là ? Non, non, mais attends Col roulé ! Je suis en train de...
'''Phildar''' : Gérard est perturbé parce qu'il vient d'y avoir un métro à 1h15 du matin, donc ça le perturbe.
'''Manu''' : Non, mais là il est passé près celui là.
'''Tuteur''' : Je ne sais pas... Moi j'aime bien tous les styles de musique. Mais c'est vrai qu'en boîte, quand il n'y a que de la techno, enfin moi personnellement, ça me lourde, quoi.
'''Gérard''' : Ouais. Alors attends, Tuteur. Dans ces cas-là, tu n'aimes pas du tout ce que Max il passe le soir ? Attendez, attendez. Ognon, Ognon, Tony et Col roulé ? Et Petit Poil et Crouton, vous ne dites rien. Alors donc, pour toi Tuteur, ce que Max il passe le soir entre 22h et 1h du matin, donc ce n'est pas ton style de musique ?
'''Tuteur''' : Non, je n'ai pas dit ça. J'ai dit qu'au bout d'un moment, ça commençait à m'agacer. Ouais, enfin moi j'aime... moi j'aime pas tout sur la techno. Je n'ai pas dit que je n'aimais pas écouter ça.
'''Gérard''' : Ouais, mais alors attends. Tuteur, Tuteur ? Moi je vais te poser une question. Admettons que tu prennes ça de 23h jusqu'à 6h du matin...
'''Tuteur''' : Ouais. Ben, je ne peux pas.
'''Gérard''' : Ah, ben alors dans ce cas-là, tu n'iras jamais à Clichy...
'''Tuteur''' : Ben si !
'''Phildar''' : Non, mais attends Gérard, dans toutes les boîtes il y a différents styles. À la Loco, puisque tu parles en fait de la Loco... Tu restes au rez-de-chaussée, tu as de la techno. Tu vas en bas, tu as du rock. Et en haut, tu as de la funk, tu as du rap.
'''Gérard''' : Ouais, mais attends. Dans ces cas-là, dans ce cas-là, pourquoi qu'elle dit qu'elle n'aime pas la techno ? Donc elle n'aime pas ce que Max il passe.
'''Petit poil''' : Elle a le droit d'aimer ce qu'elle veut !
'''Tuteur''' : J'ai pas dit ça en plus, Gérard, déforme pas ce que j'ai dit. J'aime pas écouter trop de techno, quoi. Mais...
'''Gérard''' : Ben ouais, mais dans ce cas-là, dans ces cas-là, toute la journée t'écoutes que ça sur Fun.
'''Phildar''' : Non, on parle pas de Fun, on parle des boîtes !
'''Tuteur''' : Ouais, voilà, en plus.
'''Gérard''' : Non, non, mais attends, moi je peux lui dire...
'''Manu''' : Le dernier Céline Dion est quand même super deep house !
'''Gérard''' : Zora... Zora sourit. Ouais, je l'ai vu. Mais de toute manière, c'est pas...
'''Phildar''' : Il vaut mieux qu'elle arrête de sourire.
'''Petit Poil''' : Ouais, alors pour moi, j'aime bien tout style : salsa, zouk, techno. J'aime bien faire des pogos de temps en temps quand les mecs sont pas trop violents. J'aime pas trop le rap. J'aime bien le classique. J'aime bien un peu tout, quoi.
'''Gérard''' : Ouais, mais attends... le classique, tu verras jamais ça dans des boîtes de nuit.
'''Manu''' : Ya des boîtes de classique.
'''Gérard''' : Oh ouais, mais où ?
'''Manu''' : Ya une boîte qui s'appelle l'Opéra, où ils jouent plein de classique.
'''Gérard''' : Ouais, non, mais attends. Dans ces cas-là, si on prend l'Opéra Garnier, tout ça...
'''Petit poil''' : Ouais, il n'y a pas que ça ! Dans la journée, il y a des boîtes — bon, je dirai pas le nom — qui font du dancing pour les personnes.
'''Gérard''' : Ouais, ben je sais, je vois. Tu veux dire 103 avenue Foch ?
'''Petit poil''' : Non, non, c'est pas ça.
'''Ognon''' : Pas de marque !
'''Gérard''' : Non, mais au 103 avenue Foch ils jouent pas mal de dancing.
'''Petit poil''' : Ouais, mais c'est pas là.
'''Gérard''' : De toute manière, là-dedans ils en jouent pas mal, et en plus c'est une radio que je déteste parce que ça c'est une radio de blaireau.
'''Petit poil''' : Je parle pas de radio moi, hein ! Je parle pas de radio.
'''Gérard''' : Non, non, mais moi je peux te dire une chose : c'est que... au 103 avenue Foch, c'est une radio de blaireau : c'est Radio Montmartre. Alors je vais dire une chose : le mec qui a envie de s'endormir avec Radio Montmartre et qui se réveille avec ça... Non, mais... non, mais il est complètement servi ! T'entends du André Verschuren, du Yvette Horner, tout ce qui s'ensuit. Donc, on revient presque à la deuxième question. ''[bruit de Phildar qui mâche un sandwich]''.
'''Gérard''' : Donc, on entend...
'''Pildar''' : Ouais, je suis en train de manger. J'ai faim. J'ai pas mangé.
'''Gérard''' : Non, mais Phildar ! Phildar, t'es gentil.
'''Phildar''' : Bah quoi ?
'''Gérard''' : Quand tu manges, t'éteins ton micro. Tu fais pas comme mon chef, hein ? Parce que là on dirait un vrai porc qui mange.
'''Phildar''' : Ah, merci.
'''Gérard''' : On dirait un cochon. Alors, le chef il sait manger, mais toi tu manges comme un cochon. Donc Crouton ?
'''Crouton''' : Oui. Bah moi personnellement, moi j'adore me chauffer sur de la techno, mais finir un peu sur du reggae, quoi.
'''Tony''' : Toi, t'es chaude.
'''Gérard''' : Mais s'il vous plaît ! Allez Tony... Tony ?
'''Tony''' : Elle aime bien se chauffer, elle est chaude !
'''Gérard''' : Non, non, mais attends Tony ! Tu restes poli parce que sinon je vais t'obliger de te zapper, toi.
'''Tony''' : "Chaude" aussi c'est une insulte ? Faut que tu me fasses une liste !
'''Gérard''' : Ouais, bah alors... Euh, t’expliques à Tony qu’il se calme.
'''Crouton''' : Non, mais Gérard, chaude c’est pas une insulte.
'''Gérard''' : Non, non, mais on va... on va pas s’éterniser parce qu’il reste encore 7 questions et il est quand même 1h20 du matin.
'''Crouton''' : Alors, vas-y, pose ta 4ème question.
'''Gérard''' : Alors, moi je peux... Quel genre de danse ?
'''Phildar''' : Réponds au moins à la question, voilà. Qu’est-ce que t’aimes bien en boîte de nuit ?
'''Gérard''' : Moi, ce que j’aime bien danser, c’est style... bah, un techno. Parce que j’ai l’habitude de... Au début, j’y allais... Bon, je suis... je suis plus, maintenant, techno, slow et... et un peu disco. Bon, voilà.
'''Tony''' : T’étais plus souvent au bar, sans te manquer de respect.
'''Gérard''' : Bon, Tony, s’il te plaît ?
'''Crouton''' : Oui ! Mais c’est pas vrai, Gérard ?
'''Gérard''' : Ok. Euh, ça m’étonnerait. D’accord. Sortez-vous en boîte ?
'''Phildar''' : Attention, c’est la 4ème question. Attention, accrochez-vous, c’est la meilleure :
'''Gérard''' : Sortez-vous en boîte pour draguer ?
'''Phildar''' : Non, c’est faux, c’est pas la meilleure.
'''Gérard''' : Pourquoi, toi ? Parce que t’as déjà rencontré des nanas, toi, dans une boîte ?
'''Phildar''' : Non.
'''Intervenant''' : T’as déjà dragué ?
'''Phildar''' : Non. J’ai déjà dragué, mais j’ai jamais rencontré une nana dans une boîte.
'''Gérard''' : Ouais, bah... Donc, Crouton ?
'''Crouton''' : Bah, moi, franchement, je crois que la boîte c’est bien pour s’éclater. Mais au niveau des gars, c’est pas ça, quoi. Parce qu’en fait, c’est le gars que tu chauffes pour la soirée. Enfin, personnellement, moi je le chauffe pas parce que j’aime pas ça, mais c’est bien pour t’amuser une soirée, quoi. Puis après, basta. Enfin, moi c’est mon avis, hein. Parce que sinon, après, si tu commences à aller plus loin, en général, c’est sûr que ça va pas durer.
'''Gérard''' : Euh, qui c’est qui renifle comme un cochon, là ? Parce que ça m’énerve.
'''Phildar''' : Mais c’est pas le souci. T’as même pas écouté ce qu’elle vient de dire, Crouton. C’est quoi, ce travail ? Comment veux-tu, après, réagir par rapport à la question ?
'''Gérard''' : Mais attends, de toute manière, tu vas pas... Sortez-vous en boîte pour draguer ? À mon avis, t’es pas forcé d’aller en boîte pour draguer, je suis désolé.
'''Petit Poil''' : Bah, moi j’y allais pour draguer quand j’avais 14-15 ans.
'''Gérard''' : Ouais, non, mais attends. À 14-15 ans, tu crois que les videurs, ils te font rentrer ?
'''Petit Poil''' : Bah, je suis désolée...
'''Gérard''' : Non, non, non, non, non.
'''Phildar''' : Avec un petit billet, si !
'''Petit Poil''' : Je suis désolée, je rentrais, hein !
'''Phildar''' : Quand t’es nana... quand t’es nana,s te font rentrer à partir de 14 ans...
'''Gérard''' : Donc, moi je peux te dire une chose, Petit Poil : qu’à l’heure actuelle, maintenant, pour aller en boîte de nuit, si t’as pas la majorité, c’est pas la peine.
'''Petit Poil''' : Ah ouais ? Bah, je peux te dire qu’à la Loco, il y a des filles mineures qui rentrent, alors, hein !
'''Gérard''' : Ouais, ouais, ouais, ouais. Mais...
'''Phildar''' : mais elles rentrent avec Gérard. Non, mais je rigole.
'''Petit poil''' : Non, mais à l’époque, moi on me laissait rentrer.
'''Tuteur''' : Attends, on est toutes allés en boîte à 15 ans, en fait. Donc, quand j’avais 15 ans...
'''Gérard''' : Non, non, non. Non, non, non, mais attendez ! Attendez, attendez, attendez ! Attendez, parce qu’il y a... il y a d’autres personnes qui vont réagir. Donc moi, Petit Poil, moi je peux te dire une chose : là-dedans, c’est plutôt des soirées, des après-midi que les boîtes sont ouvertes aux nanas et c'est tout.
'''Petit poil''' : Bah, moi je suis pas d’accord.
'''Tuteur''' : Moi non plus. Pas que pour les filles, enfin je sais pas... Personnellement, moi je suis rentrée en boîte à 15 ans. J’avais un mec qui en avait 18, donc t’as aucun problème. Et puis c’est rare quand t’es... enfin, les filles de toute façon, elles font toujours plus âgées, quoi.
'''Gérard''' : Parce que la personne à l’entrée ne fait pas gaffe aux cartes d’identité.
'''Phildar''' : Il y a aussi le maquillage, les filles elles se maquillent.
'''Tuteur''' : Exactement. Et puis ils vont pas vérifier toutes les cartes d’identité. Mais c’est vrai que les jeunes qui vont en boîte, la plupart du temps, enfin c’est... c’est des gens de... mineurs, hein.
'''Gérard''' : Ouais, mais... bah ok.
'''Phildar''' : Moi j’avais... j’ai une anecdote à ce sujet. C’est... je connaissais une fille qui n’était pas majeure et qui prenait la carte d’identité de sa mère pour aller en boîte. Et les mecs, les videurs, ils la laissaient rentrer.
'''Gérard''' : Ouais, non, mais attends. Dans ces cas, si la personne prend la carte d’identité des parents, ça sert à rien non plus.
'''Phildar''' : Bah ouais, mais elle peut rentrer en boîte.
'''Gérard''' : Oignon ?
'''Tony''' : Moi, je connais un mec qui paye pas ses impôts.
'''Gérard''' : Bon alors, toi, Oignon, bonne nuit ! Allez, hop ! Toi... toi... Non, non. Non, non, non. Et toi, pour toi c’est terminé, Oignon.
'''Manu''' : Ça y est, ça y est. Ça y est, il est parti. Et il revient pas.
'''Tony''' : Non, moi ce que je voulais dire, c’est que j’allais à la Loco de temps en temps et ce que j’aimais bien, c’est aller au 3ème... enfin, au 1er étage.
'''Gérard''' : Non, mais attends. Sortez-vous en boîte pour draguer ? Tony, tu réponds à la question. Ou sinon je fais comme Oignon, toi.
'''Tony''' : Ah, d’accord. Ouais, bah oui, je sors en boîte pour draguer. D’ailleurs, il y a même des fois ça me surprend parce que ça marche.
'''Petit poil''' : Il y en a qui attendent que ça, aussi.
'''Gérard''' : Bon, bon, bon, bon. C’est bon, c’est bon, Tony.
'''Phildar''' : Ce que voulait dire Tony... Excuse-moi, Tony. Ce que voulait dire Tony, en fait, c’est quand il allait au 1er étage, c’est plus facile pour draguer. Parce que c’est pas évident de draguer sur de la techno.
'''Gérard''' : Ouais, mais attends. Ouais, tu montes au 1er étage, c’est archi-plein. Tu descends en bas au...
'''Phildar''' : C’est pas le problème qu’il y ait du monde ou pas ! C’est ça. Mais même, de toute manière, tu peux plus draguer sur de la musique que genre de la funk ou de la soul que de la techno.
'''Col Roulé''' : Ouais, d’accord. Ouais, bah moi je voudrais dire qu’en fait, je vais pas trop en boîte pour draguer, mais plutôt pour ploter, quoi.
'''Gérard''' : Ouais, bah d’accord. Je vois le style que t’es, toi. T’es un gros porc. T’aimes bien mettre la main au cul des nanas. Ouais, bah si ! Bah si, de toute manière. Excuse-moi de te le dire, Col Roulé, pour moi t’es un gros pervers. Comme... comme Petit Poil vient de te dire. T’aimes bien mettre la main au cul des nanas. Parce que si la nana... si la nana est bien foutue, tu vas lui mettre la main au cul et après tu vas lui monter aux seins. Et si elle est... si la nana est bien foutue... si la nana est bien foutue, si la jupe elle est au ras des genoux, t'iras...
'''Phildar''' : Si elle est pas bien, tu le fais quand même ?
'''Col Roulé''' : Non, bah non. Si elle est pas bien, non. J’ai un code d’honneur, quand même.
'''Phildar''' : Pourquoi ce serait toujours les canons qui se feraient ploter, pas les boudins ?
'''Gérard''' : Non, non, non. Non, non, mais attends. Moi je vais te dire une chose. Pourquoi les boudins ? Parce que là-dessus je te répondrai pas.
'''Reego''' : Oui, Internet... Oui, il y a Davy1 qui te demande, Gérard, si tu aimes sortir en boîte avec des sardines.
'''Gérard''' : Euh, non.
'''Reego''' : Et avec des thons ?
'''Gérard''' : Non plus. Ni avec des maquereaux ! Voilà, ok. Alors, je pense que on va faire... Non, non. Pour l’instant, c’est moi qui va poser la question parce qu’il reste 3 minutes.
'''Phildar''' : Non, mais attends, on n’a pas 5 minutes. T’es un vrai fonctionnaire, maintenant, toi ! Et à 3h t’arrêtes. 3h pile, t’arrêtes ?
'''Gérard''' : Ah ouais !
'''Phildar''' : Ok d’accord. Bon, alors pose ta question, vas-y.
'''Gérard''' : Alors, la question... Tiens ! Tiens, celle-là elle est bien. Tiens, toi. Comme toi, un apprenti des DJ... Lors de vos soirées, est-ce que vous aimez mixer ?
'''Crouton''' : Faut avoir l’occasion, aussi.
'''Tony''' : Gigi Caca, on t’écoute.
'''Phildar''' : Ah non, mais c’est pas moi qui fais le débat, c’est vous.
'''Gérard''' : Ouais, ouais, mais... Hé, Gigi Caca ? Toi qui sais mixer comme un cave... Parce que là, t’as un bon mixeur. ''[il désigne Reego du doigt, tout sourire, Phildar sourit aussi, entre gêné et amusé de cette attaque puérile]''. Là, lui, il sait mieux mixer que toi.
'''Phildar''' : Ouais, il fait des bons jus de fruits !
'''Gérard''' : Ouais, non, non, mais lui il sait mieux mixer que toi. Et le chef, encore plus. Donc toi, t’es un... ouais, Caca Boudin. Petit Gigi. Ouais, un petit qui a besoin d’apprendre.
'''Reego''' : Oui, encore sur IRC, il y a Malkavian qui me demande : "C’est quelle marque, le mixeur ?"
'''Manu''' : Seb, c'est bien.
'''Reego''' : Pas de marque, Manu.
'''Gérard''' : Voilà. Manu, je vais te mettre une gaufre.
'''Manu''' : avec du chocolat, s’il te plaît.
'''Gérard''' : Oui, non, mais moi je te la mettrai au sucre, la gaufre. Donc, alors, Crouton ?
'''Crouton''' : Ben ouais, ben franchement, moi je crois que c’est bien, quoi. Mais faut savoir mixer, déjà. Parce que moi, personnellement, c’est pas mon cas, hein. Mais j’aimerais...
'''Gérard''' : Non, mais... non, mais attends. Crouton ?
'''Crouton''' : Oui ?
'''Gérard''' : Moi je peux te dire une chose. Je sais plus dans quel reportage que j’ai vu, il y a quand même des nanas qui mixent.
'''Crouton''' : Oui, mais bien sûr, Gérard. Non, mais c’est pas ça que je te dis. Non, mais je veux dire, j’aimerais bien regarder, hein. Apprendre, je sais pas. C’est vrai que j’aime bien la techno, mais j’apprécie ceux qui...
'''Gérard''' : Ouais, mais... mais tiens justement, comme on parle de techno et qu’on parle de mixer.
'''Crouton''' : Oui.
'''Gérard''' : C’est dommage que Max il soye pas là. Mais je vais demander à Reego, parce que tout le monde... tout le monde me pose la question. Par exemple, quand tu prendre le vinyle ou le disque... Est-ce que ça esquinte le disque ou pas ?
'''Reego''' : Tu esquintes le disque de le passer ?
'''Gérard''' : Non, mais quand tu fais le...
'''Reego''' : De scratcher ? Ouais, ça l’abîme un peu quand même. Mais ça dépend du matériel. Avec du bon matériel, ça abîme pas beaucoup.
'''Gérard''' : Ah, voilà. Donc, parce qu’il y a certaines personnes qui m’ont demandé si on abîmait le disque.
'''Phildar''' : Des vigiles ? Des vigiles ?
'''Gérard''' : Toi, tout à l’heure, toi là-bas, toi tu vas te prendre des claques, mais grosses !
'''Phildar''' : Non, mais qui t’a demandé ça ? C’est intéressant.
'''Gérard''' : Non, non, mais ça c’est des gens qui m’ont demandé. Même moi, personnellement, quand j’ai vu Max faire dans des soirées, même à la Loco, même quand j’ai vu Reego dans les studios derrière, je me posais la question. Est-ce que...
'''Phildar''' : On peut dire que ça use un peu. Parce qu’à la base, le disque il est lisse, et à force de passer le... le manche dessus, ça te fait un sillon.
'''Gérard''' : Non, parce que tu passes la main dessus. C’était pour savoir : est-ce que le disque, après, si tu veux le réécouter, si t’as la platine tourne-disque, est-ce que le disque n’est pas esquinté derrière ?
'''Manu''' : Ça dépend, parce que si t’as les ongles trop longs, ça peut le rayer, quoi.
'''Crouton''' : Tu prends des disques spéciaux ? Tu prends des disques spéciaux ou n’importe quel disque ?
'''Gérard''' : On va demander à Reego. Il y a des styles de... de disques...
'''Reego''' : C'est pas mon débat, Gérard. C’est ton débat avec les auditeurs !
'''Phildar''' : On peut dire qu’il y a des disques en laine. Il y en a aussi en marbre.
'''Reego''' : Voilà. Le mieux, c’est les disques en marbre.
'''Phildar''' : Les disques en marbre, c’est plus résistant.
'''Reego''' : Je te montrerai, j’ai des disques en marbre.
'''Gérard''' : Tu me feras voir. Je demanderai au chef après. Petit Poil ?
'''Petit Poil''' : Petit Poil, ben écoute, elle a déjà mixé chez un copain. J’aime bien ça, par contre, j’ai pas le matos à la maison.
'''Gérard''' : Petit Poil ? Petit Poil, moi je pense que, à mon avis... je sais pas si Phildar pourra me répondre, mais je pense que faut compter à peu près combien pour avoir une table de mixage et tout le bon matériel ?
'''Phildar''' : En temps ou pas ?
'''Tony''' : 400 euros à tout casser.
'''Gérard''' : Bon, Tony, s’il te plaît !
'''Manu et Phildar''' : Non mais il a raison en plus.
'''Phildar''' : C’est 400 euros ! Parce qu’en fait, une bonne table de mixage, t’en as pour... allez, disons 252... Entre 250 et 400 francs.
'''Gérard''' : Tu rigoles, toi ? Non, mais attends. Attends. Tu vas aller...
'''Phildar''' : Combien coûte la table de mixage qu’on a derrière ? Elle coûte 342 francs, je crois, un truc comme ça.
'''Gérard''' : Ouais. Je pense que... c’est dommage que Max ne soue pas là pour me répondre. Je pense qu’il faut compter entre 1 million et 2 millions de francs.
'''Tony''' : C’est moins cher maintenant. Et en Russie, c’est encore moins cher.
'''Gérard''' : Bon, Tony, s’il te plaît ! C’est terminé pour toi, au revoir.
'''Phildar''' : C’est vrai ce qu’il dit.
'''Tony''' : Non, mais c’est la crise. Non, mais c’est vrai. Non, mais attends. Mais qu’est-ce qu’il se passe ?
'''Phildar''' : Attendez, on a Olivier de la Pro, un professionnel.
'''Olivier''' : Non, il faut compter au moins 50 millions maintenant. Moi, celle que j’ai là-bas dans le studio, c’est 50.
'''Gérard''' : Non, mais attends. Toi, c’est...
'''Phildar''' : Non, mais c’est de la pro.
'''Gérard''' : Ouais, mais toi c’est pas pareil, c’est avec tous tes petits boutons de caca boudin. C’est tous tes boutons de caca.
'''Phildar''' : Bon, disons que c’est entre 1 million et 2 millions de toute manière.
'''Gérard''' : Je demanderai... je demanderai à Max plus tard. Bon, Tony ? Tony, pour lui c’est terminé parce que là...
'''Phildar''' : on va souhaiter une bonne soirée à Tony.
'''Manu''' : Bon, bah ok alors.
'''Tony''' : Ah non, mais attendez ! Il ne faut pas déconner, les mecs, là !
'''Gérard''' : Non, non, mais attends, Tony. S’il te plaît. Tony ! Je pense que... j’avais été clair la semaine dernière.
'''Tony''' : Non, mais attends, qu’est-ce que j’ai fait ? J’ai rien fait, là !
'''Gérard''' : Non, non, mais... Alors dans ce cas, si tu continues, tu restes calme, ok ?
'''Tony''' : Attends, mais on ne peut pas parler des Russes ? Je ne peux pas dire "chaud".
'''Phildar''' : C’est vrai que c’est vachement moins cher en Russie, le matériel, parce qu’il y a la crise.
'''Gérard''' : Non, mais qu’est-ce qu’on en a à foutre ?
'''Phildar''' : Eh bien, c’est important ! Imagine, il y a des DJs français...
'''Gérard''' : Mais attends, mais je ne vais pas faire un débat sur la politique là-dessus !
'''Phildar''' : Il n’y a pas de polémique !
'''Gérard''' : Non, politique.
'''Tony''' : Ah, pardon. Je veux dire que les DJs français qui n’ont pas beaucoup d’argent, ils peuvent très bien aller acheter du matériel en Russie.
'''Gérard''' : Alors dans ces cas-là... dans ces cas-là, c’est dommage que Jean-Marie K ne soit plus là, Sonic non plus.
'''Phildar''' : Fais un appel. Fais un appel. Si tout DJ techno ou autre pourrait venir te renseigner, tu peux le demander.
'''Tony''' : Écoute, moi je peux te renseigner, Gérard, puisque je mixe un petit peu.
'''Gérard''' : Ouais, non, non, non, mais attends. Pour l’instant, non, non, allez, allez. On ne s’éternise pas là-dessus. Hop, la question elle va être vite passée.
'''Col Roulé''' : Oui ? Il n’y a qu’à le rouler ! Il n’y a pas répondu encore. T’arrêtes pas de m’oublier.
'''Gérard''' : Non, mais là, on ne va pas s’éterniser sur la question parce que là, je pense que... sinon...
'''Phildar''' : De toute façon, je pense qu’on a le temps pour le débat des routiers, parce que tu n’as pas fait les questions. Donc tu peux y aller, tu peux embrayer une question au moins.
'''Gérard''' : Non, mais de toute manière ils vont... Bon alors, Col Roulé, vas-y.
'''Col Roulé''' : Donc en fait, moi je dois dire que, ouais, j’aime bien mixer quand je fais des soirées. En fait, je dois dire que le mieux, en fait, pour mixer, quoi, c’est que tu aies une gonzesse sur la console. C’est vraiment comme ça, tu la...
'''Gérard''' : Oh, mais attends, mais attends ! Col Roulé, dans ces cas, tu prends... tu prends le truc de la Loco. Quand les nanas sont là, en train de danser, en train de s’éclater... mais attends, mais je vois ça. Je vais regarder le reportage qui a lieu vendredi sur une chaîne... sur une chaîne. Et ça, c’est un truc spécial techno.
'''Reego''' : Gérard ? Sur IRC, il y a Snul qui te demande si tu aurais aimé être DJ.
'''Gérard''' : Euh, non.
'''Phildar''' : Pourquoi ?
'''Gérard''' : Non, ça m’intéresse pas. Non. Voir trop de monde, non.
'''Tony''' : Gérard, avec tout ça, j’ai pas parlé... j’ai pas parlé de ma vie de DJ. Est-ce que je peux te raconter une anecdote ?
'''Gérard''' : Bon, on se dépêche, Tony, parce que... parce que là, je pense que...
'''Tony''' : Donc moi, bon, je mixe un petit peu dans des soirées. Moi, ce que j’aime bien, c’est faire bouger la foule. Mais moi, j’aime pas trop qu’on me fasse chier quand je suis dans mes aigus. Ça, je voulais le signaler. Et j’achète mes disques à Techno À Port. Voilà.
'''Gérard''' : Ouais, ben merci, Tony, pour ta publicité. Dans ce cas-là, tu vas aller voir Manu...
'''Phildar''' : Attends, attends ! Gérard, Techno Import c’est le magasin où Max va acheter ! Donc on peut en parler.
'''Manu''' : On peut le dire. On peut le dire.
'''Phildar''' : Sinon après, on n’a plus de vinyle... on n’a plus de vinyle gratos. C’est bien, Tony, c’est bien.
'''Gérard''' : Il retourne voir Manu au standard après, ok ?
'''Tony''' : Y a pas de problème. On y passe tous.
'''Gérard''' : Ouais, non, mais... Non, non, mais je pense que pour toi ça va être terminé, là.
'''Phildar''' : Tu y retourneras un jour, Gérard, au standard.
'''Gérard''' : Hein ? Qu’est-ce que tu dis, toi ? Moi au standard ?
'''Phildar''' : Ben pour aider Manu, ouais.
'''Gérard''' : Non, c’est pas moi qui va... qui va choper, qui va répondre aux gens qui sont derrière, ok ? Alors : Comment s’habiller pour aller en boîte ? Donc, c’est la dernière question. La... la, la, la, la sixième. Oh là là, merci pour le larcène. Et donc, on va s’écouter Joe Couscous avec Ma tante danse le...
'''Phildar''' : Oh là, c’est de pire en pire les titres !
'''Gérard''' : Non, non, mais attends. C’est toi qui écris...
'''Phildar''' : Ben oui. Joe Couscous avec Ma tante danse le reggae.
'''Gérard''' : Alors, Danse le reggae. Donc, vous pouvez toujours nous appeler au 0803 08 5000 et 0800 70 5000.
'''Phildar''' : À venir, le débat qui portera sur les routiers. Donc vous pouvez déjà nous appeler. Appelez Manu, voilà. Et il vous sélectionnera avec plaisir. Voilà. À tout de suite, Gérard. ''[Musique]''.
'''Gérard''' : Ben Philippe, t’annonces le disque, parce qu’à mon avis c’était pas ça.
'''Phildar''' : Ben, c’est quoi alors ? Joe Couscous avec Ma tante danse le reggae. Une nouveauté. C’est pas mal, là.
'''Gérard''' : Ok. Donc, on rappelle Crouton ? Petit Poil ? Tuteur ?
'''Phildar''' : Tu tiens debout ?
'''Tuteur''' : elle est facile, hein, franchement.
'''Gérard''', ''[rote bruyamment]'' : Pardon.
'''Manu''' : Gérard... Gérard, tu dégages au standard. Faut que je te calme, faut que je te parle. Tu dégages au standard.
'''Gérard''' : Euh, Tony ?
'''Tony''' : Ouais, Ouais, le disque c’était Zoubir avec ''[deux bruits de baiser]''.
'''Gérard''' : Euh, Col Roulé ? Donc, à la place d’Oignon, on a qui ?
'''Manu''' : À la place d’Oignon, pour l’instant on a personne parce que la personne que je devais rappeler, eh ben... j’y n’y arrive pas.
'''Gérard''' : Donc, dernière question. Donc : Comment êtes-vous habillé pour sortir en boîte ? Col Roulé ? Col Roulé ?
'''Col Roulé''' : Moi je dois dire que, en fait, pour aller en boîte, je m'habille très classe, quoi.
'''Gérard''' : Ouais, mais attendez ! Attendez, attendez ! Avant de répondre à la question, j’aurais bien voulu que Reego me donne un petit point internet pour savoir le nombre de connectés.
'''Reego''' : Alors, petit point internet : actuellement sur le site, il y a 182 connectés. Tu vois, t’as la liste ici. La classe ! C’est quand même la classe. Et il y a Sean qui te demande s’il peut passer un bonjour à Nicolas... Ah, c’est pas le thème.
'''Gérard''' : Ben non, non, mais si, si. Si, si, on peut lui faire un petit coucou à la personne.
'''Reego''' : Bah c’est fait.
'''Gérard''' : Donc voilà. Ben... donc... ben coucou. Non, non, mais donc on remercie tous les gens qui sont sur internet. Ça me fait plaisir quand même de voir un jeudi 182 connectés sur internet. Ça, c’est... Ça, c’est pas mal. J’applaudis. 182 ! Eh ben, continuez comme ça ! Donc, c’est bizarre parce que là j’ai fermé le Minitel, mais si je peux l’avoir devant mes yeux...
'''Phildar''' : Non, ça te ferait trop mal.
'''Gérard''' : Non, il y a... il y a zéro...
'''Phildar''' : 47 connectés.
'''Gérard''' : Bon attends... 47 connectés ? Fais voir, fais voir ! ''[il force l'appareil à se tourner vers lui et regarde l'écran]''. Attends, tourne-moi le...
'''Phildar''' : Non, mais c’est pas grave, je te le dis.
'''Gérard''' : Non, non, mais attends. Fais voir. Ouais, zéro connecté ! Bien sûr !
'''Manu''' : Putain, ça a chuté vite !
'''Phildar''' : Ah non, mais il y a deux minutes il y en avait 47, mais le temps... le temps que tu retournes...
'''Gérard''' : Non, non, mais de toute manière vous pouvez toujours nous appeler. Donc 0803 08 5000 et 0800 70 5000. Toujours le site internet www... point fr.
'''Reego''' : Voilà, exactement.
'''Gérard''' : Après je sais même plus.
'''Manu''' : Et le Minitel : 3615 Fun Radio.
'''Gérard''' : Voilà, toujours 3615 Fun Radio. J’essaierai de... de vous répondre en direct, mais si c’est pas des conneries. Donc on va attaquer la dernière question.
'''Phildar''' : Oui, ça fait déjà trois fois que tu la poses : "Comment préférez-vous être habillé en boîte ?"
'''Gérard''' : Non, non, mais même je pense qu’on va en faire deux quand même, parce qu’on est jeudi. Et donc, comme les gens sont un peu sympas, ça va être le week-end, donc on va... allez, allez, on va faire 10 questions.
'''Phildar''' : Ah non, non.
'''Gérard''' : il reste... il reste... il restera encore deux questions après la huitième.
'''Phildar''' : T’emballes pas, t’emballes pas non plus.
'''Manu''' : On va en faire une et puis on va voir.
'''Gérard''' : Allez : Comment êtes-vous habillés pour sortir en boîte de nuit ? On va demander à Crouton.
'''Crouton''' : Alors moi, je suis habillée sexy mais pas excentrique.
'''Gérard''' : C’est-à-dire ?
'''Crouton''' : C’est-à-dire, j’évite tout ce qui est fluo, tout ce qui est excentrique, mais je suis sexy.
'''Gérard''' : Non, mais là, sexy...
'''Crouton''' : C'est--dire un petit pantalon trompette...
'''Col roulé''' : Sal...
'''Gérard''' : Tony, s’il te plaît.
'''Col roulé''' : Non, c’était Col Roulé !
'''Gérard''' : Ouais, ben Col Roulé. Col Roulé, tu vas te calmer !
'''Col Roulé''' : Ouais, je me calme.
'''Gérard''' : Sinon moi je vais te calmer, tu vas... tu vas zapper direct. Je vais faire comme Oignon. Parce que là, maintenant, faudra peut-être qu’on fasse des débats corrects.
'''Tony''' : Non, mais ça se passe bien là, Gégé !
'''Gérard''' : Non, non, mais Col Roulé, pour l’instant... Moi je peux... je peux répondre à Crouton. Donc moi je peux vous dire une chose : que les trois quarts des nanas sont habillées au ras des genoux, et c’est... c’est tout juste si on ne leur voit pas leurs culottes.
'''Manu''' : Elles ont le cul bas quand même.
'''Phildar''' : Ouais, ou des grosses culottes !
'''Gérard''' : Non, non, non. Mais il faut dire... il faut dire que quand même les nanas, quand vous allez en boîte de nuit, vous n’hésitez pas... oui Reego ?
'''Reego''' : Continue ta phrase au moins !
'''Gérard''' : Les filles, vous n’hésitez pas... vous... vous n’hésitez pas à nous allumer.
'''Crouton''' : Ouais, mais n’empêche que vous aimez ça !
'''Gérard''' : Ouais, non, mais attends. Attends. On aime ça... Fais moi confiance que, tu vois, comme Tony le sait et tout le monde le sait maintenant, je suis avec Sandy. Et Sandy, jamais, jamais elle est sortie avec des trucs au ras des genoux. Parce que moi... moi je vais te dire une chose... bon. Non, non, mais attendez. Moi je peux vous dire une chose : que dans... dans les métros, quand je vois des trucs comme ça, ça me dégoûte. Non, ça me dégoûte quand tu vois des nanas comme ça ! Attends, parce que là... non, non, ouais, ouais. Ouais, mais attends. Elles peuvent être bien foutues si on veut, mais il y a des limites ! Non, non, mais ouais. Non, mais il y a des limites.
'''Manu''' : Et les limites c’est des genoux, voilà.
'''Gérard''' : Voilà, il y a des limites pour pas provoquer. Parce qu’après... après dans ces cas-là, on va dire : "Ouais, mais on se fait violer". Alors les nanas, arrêtez, hein ! Parce que...
'''Phildar''' : Attends, tu vas un peu loin Gérard ! Ouais, mais c’est pas... c’est pas parce que tu mets une mini-jupe en boîte que tu te fais violer automatiquement. Faut pas exagérer non plus.
'''Gérard''' : Ouais, mais attends. Combien que t’en vois de viols à l’heure actuelle ?
'''Phildar''' : Non, mais ça on s’en fout, c’est pas le thème du débat.
'''Crouton''' : Gérard ! T’es pas obligé d’être en jupe parce qu’on va en boîte. Il y a des femmes qui sont en jupe parce qu’elles y sont obligées par leur boulot.
'''Gérard''' : Ouais, mais Crouton, moi dans ces cas-là, moi je vais te dire une chose : dans ce cas-là, c’est de l’harcèlement sexuel, et c’est tout. ''[rire gêné et applaudissements de Phildar]''. Si, les trois quarts des patrons, si t’es pas en mini-jupe, de toute manière t’es pas pris.
'''Manu''' : Et si t’as des culottes aussi, faut pas en mettre !
'''Crouton''' : Alors, là-dessus, moi je suis secrétaire dans une entreprise et, excuse-moi, mais je trouve pas ça très sympa quand tu dis que le patron nous accepte pas lorsqu’on n'a pas de mini-jupe. Je suis en jupe, tout simplement, et j’ai jamais été harcelée, quoi.
'''Petit poil''' : Ouais, bah moi j’ai été harcelée, moi ! Parce qu’il m’oblige à me mettre en mini-jupe et sans culotte ! ''[la voix nouée de pleurs]''. C’est dégueulasse.
'''Phildar''' : Ah, voilà. Ça, c’est en plus... c’est dans le débat.
'''Manu''' : C’est grave dans le débat, c’est grave ! Le milieu de la nuit, la discothèque, tout ça...
'''Phildar''' : Bah, Gérard, ce que tu devrais faire, tu veux... elle t’a peut-être donné une bonne idée, là. Je sais plus si c’est Petit Poil... Petit Poil, tu pourrais peut-être faire, dans les semaines à venir, un débat sur le harcèlement.
'''Manu''' : Mais pour l’instant, on est quand même dans la discothèque et le milieu de la nuit. Et il serait sage d’y revenir au plus vite.
'''Phildar''' : Tu sais qu’on n’est pas restés longtemps dans la discothèque. On a été partout. On a été partout !
'''Manu''' : Entre René Verschuren, l'ccordéon et tout...
'''Reego''' : Justement, pour reparler de la discothèque, il y a Snul sur IRC qui te demande, Gérard : "Comment faut-il s’habiller pour aller en discothèque et pas se faire refouler par le gros gorille à l’entrée ?"
'''Gérard''' : Alors ça, c’est une très bonne question. Justement.
'''Phildar''' : C’est bien, Reego, tu travailles bien, toi.
'''Reego''' : Merci les gars.
'''Gérard''' : Non, non, mais de toute manière, pour l’instant, je ne vais pas trop me plaindre de Manu, à part qu’il n’a pas toujours fait ce que je lui ai demandé. Donc, toi pour l’instant... ça va, tu te la coules douce.
'''Phildar''' : La question, Gérard, tu réponds.
'''Gérard''' : Donc je réponds à la question. Donc c’est qui, Reego ? Alors Snul, moi je peux te dire une chose : c’est que j’ai quelqu’un, une fois, qui a voulu aller à la Loco, qui s’est pointé en jeans et qui a été refoulé. Il était habillé tout en jean. Comme moi, souvent je suis en jean et autres. Bon ça va, parce que moi je rentre avec vous. Mais le mec, il a été refoulé. Et il s’appelle Titi. Et Titi.
'''Tony''' : Je l’ai vu ce mec-là : il était venu en chaussons et avec un boa aussi. C’était abusé !
'''Gérard''' : Ouais, ouais, t’as raison. C’est celui qui nous a emmenés en Allemagne avec Sandy, d’accord ? Alors tu le connais pas, ok ? Alors tiens, Tony, comme t’as une grande gueule : comment que tu t’habilles, toi ?
'''Tony''' : Je vais l'ouvrir, je vais l'ouvrir, ouais !
'''Tony''' : Ouais, bah, tu vas l'ouvrir ta gueule ! Bah, parce que moi, je vais... bon, classique : en jean, en baskets et puis en chemise.
'''Tuteur''' : Ouais, tu rentres pas en baskets.
'''Tony''' : Moi, je rentre ! Moi, je suis Tony de Fun, moi.
'''Gérard''' : Dans ces cas-là, pourquoi pas... Moi, il y a une question que je suis en train de me poser : pourquoi pas y aller en costume-cravate ?
'''Reego''' : Tu te fais refouler, Gérard, en costume-cravate.
'''Gérard''' : Bah ouais, mais attendez ! Mais costume-cravate, tu vois que ça toute la journée : dans le métro, que ça soit dans les bus, n'importe où. Tu vas dans un café pour prendre un sandwich — moi j'ai vu ça cet après-midi — tu vois des mecs en costume-cravate.
'''Tuteur''' : Ouais, mais c'est des cadres.
'''Gérard''' : Mais attendez, mais attendez... Mais dans ces cas-là, pourquoi qu'on accepte des mecs en costume-cravate dans des boîtes de nuit et pourquoi qu'on refoule des gens en jean ? Moi, je ne suis pas d'accord, je ne suis pas d'accord !
'''Reego''' : Gérard, sur IRC, on me dit qu'on accepte les costards-cravate parce qu'on n'accepte pas les costards crados.
'''Gérard''' : Bah ouais, mais même... on accepte, ça ne sert à rien. Olivier ? Olivier ? Non, non. Non, non, toi tu vas travailler ailleurs.
'''Olivier''' : Je cherche les auditeurs.
'''Phildar''' : Pour une fois qu'Olivier bosse...
'''Olivier''' : Je suis seul à bosser mais j'ai rien fait, Gérard !
'''Gérard''' : Non, non, mais attends. Depuis tout à l'heure...
'Olivier' ''' : ça se passe plutôt bien.
'''Gérard''' : J'entends Allô, allô, allô... Et je viens de regarder, c'est toi.
'''Olivier''' : Alors donc, je ne dis plus allô.
'''Gérard''' : Non, non, mais dégage !
'''Olivier''' : Non, je te promets, je ne dis plus allô.
'''Gérard''' : Parce que ça s'est bien passé jusqu'à maintenant. Dégage ! Et voilà, hop, au revoir.
'''Olivier''' : J'ai rien fait !
'''Gérard''' : Dégage ! Tu prends ton café, tu vas sur le site internet, tu vas dialoguer avec Reego.
'''Olivier''', ''[sortant, boudeur]'' : Toujours pareil, et c'est tout.
'''Reego''' : Tu l'as vexé, Gérard.
'''Gérard''' : Non, mais même, attends... Toi, ça s'est bien passé jusqu'à maintenant. Je ne vois pas pourquoi qu'il arrive et j'entends des "allô" et "allô".
'''Manu''' : Oui, moi c'est clair, on ne m'entend pas dire allô.
'''Phildar''' : Donc, je me demande comment tu fais pour être aussi concentré dans ton débat Gérard. C'est extraordinaire.
'''Gérard''' : Tuteur ?
'''Tuteur''' : Oui, oui, je suis là.
'
''Gérard''' : Donc toi ?
'''Tuteur''' : Personnellement, moi je m'habille en pantalon parce que j'ai... enfin, je n'aime pas les jupes quoi. Mais bon, ça c'est... mais c'est aussi plus agréable d'être en pantalon pour danser parce que c'est plus pratique quoi. Si tu es en jupe, bon, enfin... Puis comme disait Petit Poil...
'''Gérard''' : Oui ?
'''Tuteur''' : Je ne sais pas. Enfin, les jupes, c'est vrai que c'est quand même... ça allume pas mal quoi.
'''Phildar''', ''[soufflant d'impatience]'' : Réveille-toi Petit Poil. On va te raser.
'''Gérard''' : Allez, qui c'est qui n'a pas répondu ? Non, Petit Poil, tu viens de répondre.
'''Petit poil''' : Mais non, c'était pas moi, c'était Tuteur.
'''Phildar''' : Ah, c'était Tuteur, pardon, excuse-moi.
'''Gérard''' : Petit Poil, vas-y.
'''Petit Poil''' : Ouais, alors moi j'aime bien aller en boîte en tailleur et en robe longue pour... donc pour pas allumer justement.
'''Tony''' : T'as pas chaud avec tout ça ?
'''Petit Poil''' : Non, je me déshabille vite fait.
'''Gérard''' : Bon, mais de toute manière, pour voir, il y a un vestiaire pour mettre les pringues. Mais faites-moi confiance : quand vous voyez après, vous êtes quand même des allumeuses. Alors venez pas nous dire le contraire !
'''Petit Poil''' : Mais il faut pas généraliser, Gérard.
'''Gérard''' : Ouais, mais de toute manière, je prends pas mon cas pour une généralité, d'accord ?
'''Petit Poil''' : Ok, chef.
'''Gérard''' : Ok ? Bon, alors maintenant on fait la conclusion. Donc, Crouton ?
'''Crouton''' : Bah, moi la conclusion, c'est que ça a pas apporté grand-chose sur ce débat. Donc bon, je veux dire, il y a eu des choses peut-être intéressantes pour certains. Enfin, pour moi, je trouve pas. Mais peut-être que pour certains il y a eu des choses intéressantes.
'''Gérard''' : Non, mais est-ce que... est-ce que pour toi, est-ce que le débat s'est bien passé ?
'''Crouton''' : Ah oui, ça c'est sûr, il s'est très bien passé. Mais il y a peu grand-chose d'intéressant parce que je trouve que tu t'es énervé un peu trop vite.
'''Gérard''' : Non, non, non, non, non ! Non, non, non, non. Hé, Crouton ? Crouton, je me suis pas énervé. Je pense que je vous ai répondu à chaque question que vous m'avez posée.
'''Crouton''' : Gérard, t'as trop généralisé sur tout le monde. T'as pris un exemple et ça y est, t'as généralisé.
'''Gérard''' : Bah oui, mais de toute manière, là-dessus, je suis obligé de... de voir pour essayer de... de mettre un peu d'ambiance. Ok ?
'''Phildar''' : Ah, t'as eu raison, t'as un peu d'ambiance.
'''Crouton''' : Ah pour de l'ambiance, t'en as mis...
'''Gérard''' : Ouais, bah pour un... à part Oignon que j'ai viré, sinon j'ai viré personne. Ah, maintenant Max est là ! Donc Max, il va peut-être nous renseigner sur le prix de...
'''Manu''' : C'est deux millions, deux millions !
'''Max ''' : J'ai écouté, j'ai écouté.
'''Gérard''' : Donc pour toi, dans les soirées, est-ce que vous aimez mixer ? Donc on m'a dit que... bon... ''[Olivier revient]''. Non, toi, dégage ! Merci Olivier.
'''Max''' : Non, je t'écoute... C'est quoi la question ?
'''Gérard''' : Non, parce que j'ai demandé...
'''Max''' : J'ai écouté, j'ai écouté. Donc on m'a... j'ai entendu des chiffres, j'ai entendu des chiffres. Donc genre, pour le prix, combien coûte aujourd'hui du matériel pour mixer correctement ? Donc j'ai entendu un, deux millions.
'''Gérard''' : Non, moi j'ai dit c'est...
'''Max''' : Non, Olivier a dit cinquante millions. J'ai écouté, c'est pour dire. Il a dit qu'il était comme toi, peut-être entre un et deux millions.
'''Gérard''' : Non, non. Il m'a dit deux cent cinquante balles.
'''Max''' : Non, ça c'est la table de mixage ! Reego a confirmé. J'ai écouté : deux cent cinquante-quatre francs. J'étais là.
'''Gérard''' : Oui. Et toi, pour toi personnellement, toi qui es... qui es un grand amateur de mixage, toi qui aimes bien mixer ? Donc pour toi le prix, on va...
'''Max''' : Alors moi, je pense qu'il faut aujourd'hui plus un ou deux millions. C'est-à-dire que si tu veux du bon matériel pour mixer un peu comme à la Loco, je pense qu'il faut mettre dans les sept, huit millions. Nouveaux !<ref name="hist5"></ref>
'''Gérard''' : Donc ça fait soixante-dix mille... soixante-dix mille francs. Soixante-dix mille à quatre-vingt mille...
'''Max''' : Quatre-vingt mille francs à peu près. Pour une table de mixage, j'entends. Si tu veux avec les platines — moi j'ai ça chez moi — il y en a pour cent-vingt mille balles.
'''Gérard''' : Ah bah d'accord.
'''Max''' : Attention... Non mais ce qui est bien après, c'est qu'une fois que t'as le matos — je parle pas des amplis, des enceintes, s'il y a plus des amplis, des enceintes faut rajouter quarante mille balles — après ce qui est bien, c'est que les disques, bon c'est du vinyle, comme c'est en import, souvent c'est des imports.
'''Gérard''' : Ouais, comme Tony nous a dit.
'''Max''' : Bon, je vais acheter ça, tu l'as dit tout à l'heure, sans faire de marques, chez Techno Import.
'''Gérard''' : Non non, c'est Tony qui l'a dit, c'est pas moi.
'''Max''' : C'est à peu près dans les quatre-cents francs un disque. Bon, c'est pas très très cher. Après... après c'est pas très très cher. Quatre-cents francs le disque, moi j'en achète à peu près quarante, je m'en sors pour quatre-mille à dix mille, enfin entre quatre et quinze mille, vingt mille francs.
'''Gérard''' : Une question... Une question qui...
'''Max''' : Te brûle les lèvres ? Elle te brûle les lèvres ? Je crois non. ?
'''Gérard''' : Je l'ai posée à Reego et Reego m'a dit que ça... il me dit oui. Est-ce que quand tu mixes, par exemple avec le disque comme tu fais toi à la Loco... Est-ce que ça l'abîme ou pas ? Reego me dit oui.
'''Max''' : Oui, parce que le problème c'est que lui c'est un DJ de hip-hop, ils savent pas manier les disques.
'''Phildar''' : Il l'a dit trop vite !
'''Gérard''', ''[entre sourire et vanne]'' : Toi tu te tais, tu sais pas mixer ! Alors toi, va prendre un mixer !
'''Max''' : Non mais en techno, en techno, on scratche pas comme ils scratchent. Nous on utilise pas ça, le scratch. On utilise un peu le velcro.
'''Gérard''' : Mais est-ce que ça... est-ce que ça abîme ?
'''Phildar''' : Non, parce que ça agrippe.
'''Max''' : Non, ça l'abîme pas. Ça abîme pas le disque que tu veux mettre. Parce que si tu veux pas abîmer le disque que tu veux mettre, par exemple au lieu de jouer la face A, tu vas faire exprès de scratcher sur la face B. Comme ça, le disque que tu veux écouter c'est sur la face A, tu l'abîmes pas le disque. Non mais c'est une technique. C'est une technique, c'est très technique, je reconnais. Je m'excuse, je fais un peu une parenthèse : si vous voulez pas abîmer les morceaux que vous aimez bien sur le vinyle, par exemple si sur la face A c'est le morceau que tu adores et que tu veux le mixer, pour pas l'abîmer, tu joues la face B.
'''Gérard''' : Ouais, mais dans ces cas-là, tu retournes le disque ? Mais comment tu peux retourner le disque quand t'es en boîte ?
'''Max''' : Tu joues pas ! Tu joues pas le disque,
'''Phildar''' : Tu l'écoutes pas c'est tout !
'''Max''' : C'est-à-dire que tu vas passer un disque en disant : "Voilà, sur la face A, je voulais passer le tube de Das Fuck, Das Puck". Et bah tu te dis : "Ok, je vais pas abîmer mon disque en mettant les doigts dessus, donc je joue l'autre face". Donc c'est un morceau qui est pas connu, mais les gens savent que sur ce morceau pas connu, sur l'autre face, y'a le tube.
'''Gérard''' : Donc ça abîme pas...
'''Max''' : Non, ça abîme pas la face A.
'''Gérard''' : Ouais, non mais même que ça soit la face A ou B, on s'en bat les...
'''Max''' : Non, ça le bousille le disque ! Ça le raye ! En gros, t'achètes le disque, tu le mets trois fois en soirée, il est mort. Faut en racheter un. Et un disque, je te dis, ça coûte pas cher, Reego peut te dire, en hip-hop c'est à peu près pareil, à 5 francs près, c'est dans les 400 francs. Normal. En import, ça va coûter 600 balles le disque. Mais ça vaut le coup !
'''Reego''' : Et en marbre, encore plus cher !
'''Gérard''' : Ouais, mais je pense que maintenant on n'arrive plus à trouver. Maintenant c'est...
'''Max''' : C'est-à-dire que si tu cherches le live du Palais des sports de Johnny en 77 en vinyle, c'est un peu dur. Non mais en techno, c'est à peu près 600 francs le disque, c'est pas très très cher. Pour faire une bonne soirée, pour faire un bon mix de 3 heures, il te faut à peu près 50 disques. Donc tu calcules : 50 disques à peu près, on va dire 110 pour faire une nuit complète, 200 000... à 600 francs le disque... 200 000 ? Ça fait à peu près 60 000 francs. Pour 60 000 francs, tu peux faire une bonne soirée.
'''Gérard''' : Et donc, grosso modo, donc pour finir, pour répondre à la question que j'ai posée — de toute manière, j'aurais pu la poser la question à tous les auditeurs...
'''Max''' : Oui, vas-y, pose la question !
'''Gérard''' : Donc c'est que pour toi, donc tu serais prêt à mettre combien dans toute une table ? Donc toi, pour toi, 120 000 ?
'''Max''' : Ma bite entière !
'''Gérard''' : Je te remercie, Max. Donc, Crouton ?
'''Crouton''' : Oui, bah je viens de te faire ma conclusion.
'''Gérard''' : Donc Petit Poil ?
'''Petit Poil''' : Ouais, bah alors moi je dirais que certaines choses t'as raison. Mais en fait, certaines choses tu crois toujours avoir raison et en fait quand on n'est pas d'accord, tu essaies toujours d'avoir le dernier mot, ce qui est dommage. Mais bon sinon ça s'est bien passé, c'était calme. On kifferait... enfin ça serait bien que ça bouge un petit peu.
'''Gérard''' : Ah bah que ça bouge ! Si vous voulez que ça bouge, dans ces cas-là, le deuxième, je vais bouger plus ! Ok ? Je vais m'énerver et ça va être encore plus dur. Parce que là, je vais m'attaquer... je vais m'attaquer... sur un truc que j'ai vécu : c'est les transports routiers !
'''Phildar''' : C'est du lourd !
'''Petit Poil''' : Ouais, mais on a déjà fait ça, les routiers.
'''Gérard''' : Et alors ? Si ça te plaît pas, tu fais une chose : t'écoutes ta radio, tu zappes sur une autre radio, ok ? En de bon entendeur, salut ! ''[applaudissements du studio)''.
'''Petit Poil''' : Ouais bon bref. Non mais ce que je veux dire... non mais t'es pas obligé de t'énerver pour avoir de l'ambiance.
'''Gérard''' : Non mais attends ! Dans ces cas-là, tu me dis : "Ouais, je me suis pas énervé". Mais attends, moi c'est... c'est mon chef qui m'a dit ne pas m'énerver ce soir.
'''Max''' : Non mais tu peux t'énerver si ça reste cohérent. Si tu t'énerves sur quelqu'un qui dit des conneries, d'accord. Si tu t'énerves parce qu'un mec à un moment donné parle au-dessus d'un autre, c'est pas normal. Par contre sur les routiers, ça risque de gueuler, mais c'est normal, c'est ton métier. C'est un amour de métier !
'''Phildar''' : Tu sais de quoi tu parles ! Putain merde... ''[applaudissements du studio]''
'''Gérard''' : Alors Tuteur ?
'''Tuteur''' : Moi c'est la première fois que je participe à ton débat et je trouve que c'était plutôt cool quoi. Faudrait qu'on s'écoute un peu plus les uns les autres, parce que c'est un peu le bazar des fois.
'''Gérard''' : Ouais non mais attends. Écoutez-nous les uns les autres
'''Phildar''' : Et aimons-nous aussi !
'''Tony''' : Oui, aimons-nous, aimons-nous ! Mais moi je voulais... puisque Max est là. Il faudrait que tu lui demandes parce que tu ne me croyais pas : le prix d'une platine russe.
'''Max''' : Alors, le prix d'une platine russe ? J'ai entendu parler d'en euros...
'''Phildar''' : 400 ?
'''Max''' : Ouais, c'était à peu près ça. Alors là, en russe, pfiou là là !
'''Manu''' : Ça fait 24 francs français je crois, je ne sais pas.
'''Max''' : Mais là-bas maintenant, ça s'échange avec des bouteilles de vodka. Donc il faudrait parler en Vodka. Je sais qu'une platine avec du bon matériel en URSS — moi j'ai vu ça — ça vaut...
'''Phildar''' : C'est Pierre Import. Moi je l'ai vu chez Pierre Import.
'''Max''' : Je ne sais pas... Je crois que c'est pour deux putes ukrainiennes. Je pense que tu peux avoir du bon matos.
'''Tony''' : C'est une demi-Lada quoi.
'''Max''' : Ouais, à peu près ouais.
'''Gérard''' : Bon. Col Roulé pour terminer.
'''Col Roulé''' : Ouais voilà. Bon bah pour ma conclusion, moi je voudrais dire que au début du débat je me doutais que les filles étaient des allumeuses en boîte de nuit, mais là j'en ai eu confirmation. Voilà.
'''Max''' : J'ai beaucoup apprécié ce qu'a dit, Gérard. Effectivement pour les filles qui se permettent de mettre des choses ras-la-foufoune jusqu'à la hauteur des genoux, moi je trouve ça également... je trouve que c'est en fin de compte, c'est provoquer l'acte sexuel.
'''Gérard''' : Voilà. Donc moi, conclusion de ce débat : bon bah, je pense que j'ai pas trop de choses à rajouter parce que j'ai répondu à peu près à vous, à toutes vos questions. Même sur internet — peut-être que j'ai pas pu tout... tout le monde a pas pu comprendre ce que je disais —
'''Reego''' : En plus là ça augmente, il y a 250 personnes !
'''Phildar''' : Oh là là ! Qu'est-ce que tu donnes...
'''Gérard''' : Donc bon bah, le deuxième débat portera sur les routiers. Donc on va s'écouter Patrick Petit Suisse avec "Ma cravate marche au diesel". Et vous pouvez toujours nous appeler... ''[Max explose de rire]''. bah mais attends c'est l'autre cave... donc les numéros à rappeler, Manu ?
'''Manu''' : Non, ça a l'air de marcher toujours. 0803 08 5000 et 0800 70 5000 si ça marche.
'''Gérard''' : Et toujours 3615 Fun Radio, rubrique Direct et toujours l'internet www.fr FunRadio. Et je vous retrouve d'ici 10 minutes !
== Le débat sur les routiers ==
=== Contexte ===
Dès cette semaine, Gérard perd quelque peu son équilibre professionnel. Dans l'avant-débat, on comprend qu'il n'a pas préparé ce débat, privilégiant un thème non prévu, face à un Max étonné voire inquiet. L'équipe va donc l'aider à bâtir des questions pour ce débat, lui donnant toute sa dimension surréaliste, ajoutée à la confusion généralisée de Gérard.
Le fait marquant est la confirmation que, désormais, Gérard va mesurer sa célébrité, son succès d'audience, au nombre de gens connectés sur Internet. Cette sensibilité à ce média va avoir une foule de conséquences : Reego va devenir un vrai régulateur important et adoré de Gérard, lequel va regarder en permanence le chiffre, qui deviendra bien sûr ubuesque au fil des émissions.
=== Les personnages ===
* Franck Bargine : Max, Antiroutier, Tam tam
* Igor : Reego
* Gérard Cousin : Gérard
* Phildar, Manu
* Arnet
* 35 tonnes (35t, ancien Col roulé)
* Laura : Tu me saoules (tumsoule)
* Dégage (ancien petit poil)
* Axel : Frigo
* Olivier Bouchet : Horloge, Marcel
* Goldo
=== Transcription ===
'''Gérard''' : C'était Patrick Petit suisse avec Ma caravane marche au Diesel, etdonc c'est toujours les débats de Gérard, 2h10. Donc vous pouvez toujours nous appeler au 0800 70 5000 et 0803 08 5000, et toujours le 3615 Code Fun Radio, rubrique "Direct". Et pour l'instant, j'ai zéro connecté.
'''Phildar''' : C'est pas cool ça, hein ?
'''Manu''' : C'est une honte !
'''Gérard''' : Et sur Internet, donc, vous pouvez toujours nous laisser des messages ; donc : ww.fr funradio.
'''Reego''' : Slash fun, pas de problème. Et on va bientôt atteindre les 300 connectés.
''Phildar ''' : Oh là là, le blé qu'on va se faire encore !
'''Gérard''' : Eh ben, c'est bien. Donc, on va accueillir Arnett pour le deuxième débat qui portera sur les routiers quand même. Arnett, bonsoir. On peut écouter Fun Radio sur 101.9 ? Alors, 35 tonnes, c'est quoi là, Manu ?
'''35 tonnes''' : C'est moi.
'''Gérard''' : Non mais tu donnes ton nom correctement s'il te plaît, parce que moi je vais pas m'amuser à faire "35 tonnes" sans arrêt.
'''Phildar''' : C'est son QRZ.
'''35t''' : Voilà, je suis un cibiste, c'est tout.
'''Gérard''' : OK, donc on peut écouter Fun Radio à Arras sur 96.9. Tu me confirmes bien la fréquence ?
'''35t''' : Ouais, je te confirme, ouais.
'''Gérard''' : Tu Me Saoules ?
'''Tumsoul''' : Bonsoir mon amour.
'''Gérard''' : Il n'y a pas de "ton amour", d'accord ? En de bon entendeur salut. OK, tu vas pas commencer comme ça, OK ?
'''Tumsoule''' : Excuse-moi Gérard, j'avais une envie et j'ai pas réussi à la contrôler.
'''Gérard''' : Moi je te dis tout de suite, je suis pas ton amour, OK ? Donc on peut écouter Fun Radio à Brest sur 98.9, c'est bien ça ?
'''Tumsoule''' : C'est tout à fait ça.
'''Phildar''' : Non, mais non, c'est pas ça !
'''Tumsoule''' : Mais si, ça lui fait plaisir !
'''Gérard''' : Donc, Horloge, 18 ans d'Arcachon, on peut écouter Fun Radio sur 92 FM. Dégage ? Euh au standard, tu vas te calmer Manu, parce que sinon je vais t'attraper ta tête, je vais te l'éclater ! Je vais faire comme dans opération "Cornet de beaf", tu vois ? Je vais prendre un pétard, je vais te mettre ta cervelle sur une bagnole ! OK, alors tu éteins ton micro et je ne veux plus t'entendre, OK ? Donc, Dégage, 21 ans, on peut écouter Fun Radio à Laval sur 102.3.
'''Dégage''' : Exactement Gérard.
'''Gérard''' : Et Frigo ?
'''Frigo''' : Oui, bonsoir Gérard, big big up à tous !
'''Gérard''' : Toulon, 93.1. OK. Donc, première question sur les routiers : que pensez-vous des routiers ? On va demander à Frigo.
'''Frigo''' : Ouais, moi je trouve que c'est une bonne solution parce que, de toute façon, sans les routiers on pourrait pas manger, c'est clair. Donc il en faut, il en faut.
'''Gérard''' : Eh oui, mais moi si je te dis... si on se met en grève et qu'on peut plus... s'ils peuvent ralimenter les grandes surfaces, qu'est-ce que tu fais ?
'''Frigo''' : C'est des emmerdeurs dans ces cas-là !
'''Gérard''' : Ah ouais, mais c'est des emmerdeurs ? Mais attention, c'est leur gagne-pain quand même !
'''Frigo''' : Ah ouais, mais faut pas qu'ils se mettent en grève !
'''Gérard''' : Ah ouais, mais attends ! Dans ces cas-là... Non mais attendez, attendez ! Parce que là je connais le truc, moi je peux vous dire une chose : quand t'as un patron qui dit "Bon ben il faut que tu soyes à telle heure là-bas"... Ouais, mais faut que tu respectes quand même le temps de coupure parce que moi j'ai vécu l'expérience avec un chauffeur là, il y a quinze jours, on était en Allemagne ; il fallait quand même qu'il respecte ses temps de coupure.
'''Phildar''' : C'est quoi les temps de coupure ?
'''Gérard''' : Par exemple, tu roules huit heures, faut que tu t'arrêtes au moins trois quarts d'heure.
'''Phildar''' : Pour pisser.
'''Frigo''' : Pendant les trois quarts d'heure tu fais quoi ?
'''Gérard''' : Eh ben tu te reposes, tu te mets dans ta couchette et tu t'allonges, et tu dors.
'''Horloge''' : Ils foutent rien !
'''Gérard''' : Ouais ben, Horloge, s'ils foutent rien, ben je suis désolé mais ils vont pas risquer leur vie à cause d'un patron, on est bien d'accord.
'''Manu''' : Mais nous, notre bouffe, elle arrive en retard aussi au supermarché !
'''Gérard''' : Ouais, mais d'accord, votre bouffe elle arrive en retard, mais de toute manière...
'''Manu''' : Parce que trois quarts d'heure au départ, ça fait six, sept jours à l'arrivée !
'''Frigo''' : En plus elle est périmée en plus après !
'''Gérard''' : Ouais ouais, c'est ça, t'as bien... t'as raison ! Tu me prends pour un con, toi ? Non, tu m'y prendrais pas, tu m'y laisserais ! OK, alors attention à toi, Horloge ! Ouais, mais attention à toi Horloge parce que maintenant... tiens, ben comme t'as... on va demander à Dégage.
'''Dégage''' : Écoutes, moi Gérard, c'est un métier que je respecte tout particulièrement parce que je trouve que c'est un super métier.
'''Gérard''' : Alors maintenant Horloge, avec ta grande gueule, oui, maintenant tu vas l'ouvrir !
'''Horloge''' : Bah écoutes, moi, je pense que les routiers font pas... ils font pas un métier si difficile que ça, faut pas exagérer non plus quoi.
'''Gérard''' : Non mais attends, attends ! Tu sais combien de temps qu'ils passent sur la route ? Ils passent pas loin de...
'''Phildar''' : Sur un an par exemple...
'''Gérard''' : sur un an, ils rentrent chez eux à peu près... à peu près... ça dépend des pays où qu'ils vont, mais t'en as les trois quarts, ils sont à peu près cinq jours sur la route. ''[applaudissements et rires dans le studio]''.
'''Manu''' : Par an, ça c'est du taff de pro.
'''Gérard''' : Alors je vais te dire une chose : non, non, non, non, non ! Mais attention, parce que là, là je m'attaque à... c'est moi qui ai décidé de faire ce débat-là parce que normalement on avait prévu la politique et je veux pas en faire. Donc avec Max, on avait décidé de changer. Donc maintenant, les questions sont pas préparées, maintenant ça va être des questions que je vais vous poser, mais faites-moi confiance...
'''Max''' : Pourquoi ? Parce que d'habitude, quand tu les prépares tes questions, c'est pas toi qui les poses ?
'''Phildar''' : Il joue gros, ce soir.
'''Gérard''' : Si, si ! Donc je peux... je peux vous dire que le premier qui va déconner surn ce métier-là...
'''Max''' : Ils ont le droit d'être contre par contre.
'''reego''' : Sur IRC, ya chasse qui me dit qu'il aime pas les routiers parce qu'ils sont toujours là pour créer des accidents.
'''Gérard''' : Là, par contre, Chasse, moi je vais te dire une chose : c'est pas les routiers qui créent les accidents ! Parce qu'il faut dire une chose, c'est que... d'accord on s'en prend toujours aux routiers, mais il faut dire une chose qu'on est bien content de les trouver. Mais les trois quarts du temps, c'est... c'est les bagnoles ! C'est des nanas même, voire même des mecs ou même des motos qui s'amusent à faire les cons. Par exemple, moi je l'ai vu il y a quinze jours, trois semaines, hein ? Fais-moi confiance qu'un mec sur deux... une file où que les routiers ne peuvent pas doubler, le mec qui roule à 60... je suis désolé ! Le mec... le routier, c'est... il y a des panneaux qui sont interdits pour doubler pour eux. Il peut pas doubler, il a beau faire des appels de phare au mec, eh ben le mec il n'en a rien à foutre à part freiner ! Les mecs qui s'amusent à faire ça, pour moi, qu'ils restent chez eux, qu'ils prennent leur voiture le dimanche ou qu'ils prennent les transports en commun, ça sera mieux. Ça coûte encore moins cher, ça fait moins de pollution.
'''Phildar''' : Ouais, mais le transport en commun sur l'autoroute, c'est pas évident.
'''Gérard''' : Ouais, mais attends ! Maintenant il y a le Météor et puis il y a des "Tramways...
'''Phildar''' : nommés Désir" !
'''Gérard''' : Ouais, non mais t'as des tramways et t'as des... t'as des bus, euh...
'''Phildar''' : Roissy Bus, tout ça.
'''Gérard''' : Ouais, non mais t'as des bus, hein ! Donc euh... Tu Me Saoule ?
'''Tumsoule''' : Ouais, bah moi je les trouve hyper sympa. Mais néanmoins, sur l'autoroute, sache qu'ils me gonflent, mais puissants quoi, parce qu'ils me bloquent à chaque fois !
'''Gérard''' : Ah mais attends ! C'est pas toi qui les emmerdes aussi ?
'''Tumsoule''' : Euh non, mais quand je te dis ça, c'est qu'ils roulent pas vite et franchement ça m'emmerde, ça me fait perdre du temps.
'''Gérard''' : Ouais, mais ils sont... ouais, mais euh... dans ces cas-là, si tu peux pas les doubler, dans ces cas-là...
'''Tumsoule''' : j'ai rien contre eux, mais simplement ils me font chier. Ils me font chier sur la route.
'''Gérard''' : Ouais, mais... mais attends ! Dans ces cas-là, si on vous fait chier sur la route... si les... les routiers te... te font chier sur la route, dans ces cas-là, pourquoi tu prends ta bagnole ? Dans ces cas-là, tu prends... tu prends une... une mobylette et puis euh... tu seras tranquille !
'''Arnet''' : Oui, mais Gérard, la route n'appartient pas aux routiers...
'''Tumsoule''' : Une mobylette sur autoroute, je pense pas que ça se fait.
'''Gérard''' : Non mais attends ! Sur autoroute tu as quatre voies, alors viens pas me dire à moi que tu peux... tu peux pas doubler parce que là, moi je vais te dire une chose : que t'as eu ton permis dans une pochette surprise !
'''Manu''' : Il n'y a pas besoin de permis pour la mobylette.
'''Gérard''' : Ouais, non mais peut-être !
'''Tumsoule''' : T'emballes pa. Les routiers, je les aime bien, mais ils me font chier, c'est tout.
'''Gérard''' : Ouais, bah alors dans ces cas-là, le jour où tu vas te faire coincer entre deux routiers, hein ? Et tu verras que qu'est-ce que ça va te faire. 35 tonnes, 35 tonnes ?
'''35t''' : Ouais. Alors moi je voudrais dire en fait que les routiers, bah je les aime bien quoi, parce que bon, comme je suis... comme je suis cibiste et tout, bon, des fois on discute ensemble.
'''Gérard''' : Non mais attends ! Est-ce que... est-ce que t'es routier ou pas ?
'''35t''' : Non non, je suis pas routier, je suis cibiste moi, c'est pas pareil.
'''Gérard''' : Non mais attends, faut pas confondre tentacule et enc... ta sœur. Parce que la CB avec les routiers, je vois pas le rapport. Moi je te parle : que pensez-vous des routiers ? donc je te demande pas si t'es cibiste ou pas, moi je m'en fous !
'''35t''' : Moi je le vois très bien parce que tous les routiers ont une cibie ! Donc j'écoute les routiers, donc on discute ensemble et donc je dis qu'ils sont sympas. Voilà.
'''Gérard''' : Ah, OK. Arnett ? Internet, pardon ! Tu m'excuses, mais je prends une question... je prends les questions les plus importantes sur Internet. Et c'est quoi ce Minitel de naze là ?
'''Reego''' : Oui, en attendant sur IRC, il y a... je sais plus comment il s'appelle... Desmercelles qui disait que : "il y a des pistes cyclables, pourquoi ils feraient pas des pistes camionnables ?"
'''Gérard''' : Ça n'existe pas et je pense pas qu'ils en feront.
'''Phildar''' : Et pourquoi ?
'''reego''' : Non mais pourquoi ils en feraient pas ?
'''Gérard''' : Non mais il n'y a pas des pourquois, et des comment? Les accidents, c'est pas les routiers qui les font ! Faut pas dire tout ça ! Que ça soit... les routiers, en fin de compte, ils ont... ils sont au volant 24 heures sur 24 derrière leur camion, et les mecs qui sont en bagnole, ils sont même pas 24 heures sur 24. Ils prennent leur boulot pour aller... pour aller... ils prennent leur bagnole pour aller au boulot, ils posent leur bagnole, ils vont bosser et ils ont rien à foutre de ce qui se passe après. Les routiers... les routiers... les routiers, c'est leur boulot, c'est leur gagne-pain, OK ? Alors, Arnett ?
'''Arnet''' : Ouais, alors moi j'aime bien les routiers mais quand même, il y a des limites. Parce qu'un jour j'ai voulu aller à Eurodisney, à cause d'eux j'ai pas pu, puisqu'ils étaient en grève et ils ont bouché l'autoroute.
'''Gérard''' : Attends Arnett. Ouais, Arnett. Déjà, pour aller à Euro Disney, tu as deux possibilités : tu prends ou l'autoroute ou la nationale. Ne viens pas me dire... viens pas me dire qu'ils ont bloqué l'autoroute et la nationale parce que je te dirais : "t'es un menteur" !
'''Arnet''' : Bah ouais, mais moi j'ai une voiture, c'est pas pour prendre les transports en commun, donc voilà.
'''Gérard''' : Dans ce cas-là, t'as une voiture, tu peux prendre la nationale.
'''Arnet''' : Bah oui, mais c'est plus rapide par l'autoroute, donc j'ai pas à perdre mon temps non plus.
'''Gérard''' : Et alors ? Bah dans ce cas-là, t'avais qu'à prendre la nationale ! De toute manière la nationale, elle est pour tout le monde ! Elle est aussi bien pour les routiers pour que... pour les voitures.
'''Frigo''' : Justement ! Il y a des routiers sur les nationales et sur les autoroutes.
'''Arnet''' : Oui, pour le raisonnement de tout à l'heure : pourquoi les routiers ne prennent pas les transports en commun dans ce cas-là ?
'''Gérard''' : Mais attends ! Mais les gens, quand ils partent de chez eux pour aller bosser, ils y vont comment ?
'''Max''' : Comment tu veux mettre un camion dans un bus ?
'''Arnet''' : Ah, c'est vrai ! Désolé les gars !
'''Phildar''' : On peut mettre un camion sur un train.
'''Gérard''' : Non mais attendez, non mais ça... l'histoire du camion sur les trains, ça c'est une histoire du gouvernement. Je trouve que le gouvernement il est un peu con, parce que s'ils vont mettre des camions sur les trains, fais-moi confiance qu'on n'aura plus de routiers en France !
'''Manu''' : Pourquoi pas mettre des trains sur des camions ? Comme ça, ça ferait plus de taff pour les routiers.
'''Gérard''' : Occupes-toi du standard et éteins ton micro, que je t'ai déjà dit, ça vaudra mieux. Donc deuxième question : combien coûte un permis VL ?
'''Horloge''' : Un permis quoi ?
'''Gérard''' : PL ?
'''Horloge''' : VPL ?
'''Tumsoule''' : C'est quoi ça ? C'est le nom d'un vaccin ?
'''Gérard''' : Bon alors toi, tu dégages ! Bonne nuit à toi. C'est qui ?
'''Phildar''' : Ça doit être une meuf mais je sais plus laquelle.
'''Gérard''' : Non mais là tu es... tu cherches pas, allez hop, tu me vires n'importe...
'''Phildar''' : Donc un permis PL, je pense que c'est un permis poids lourd.
'''Gérard''' : Alors, combien ça peut coûter à votre avis ? On va demander à Arnett.
'''Arnet''' : D'après moi, ça doit coûter genre dans les dix mille francs comme un paquet de clopes.
'''Gérard''' : D'accord, ben Arnet...
'''Phildar''' : Il sait pas, il dit une proposition.
'''Gérard''' : Mais tu n'as pas de permis de voiture, toi ?
'''Arnet''' : Si mais je n'ai pas payé très cher puisque je l'ai passé aux États-Unis.
'''Gérard''' : Ouai t'as raison. Tu as passé ton permis aux États-Unis ? Tu me... mais tu me prends pour un con ou quoi ?
'''Arnet''' : J'ai passé un an d'études aux États-Unis et j'en ai profité pour passer mon permis là-bas puisque c'est moins cher.
'''35t''' : Ouais, alors moi je pense que... t'as approximativement... je pense que ça doit coûter dans les 1 franc, 50, 2 francs.
'''Gérard''' : Bon alors toi...
'''Phildar''' : Il est lourd lui !
'''Gérard''' : 1 franc, 50, 2 francs ? Non non non, mais attends ! C'est le prix d'une communication téléphonique. OK ?
'''35t''' : Mais non... anciens, je te dis, pas nouveaux !
'''Phildar''' : Ancien permis ou nouveau permis ?
'''Gérard''' : Non mais de toute manière il n'y a pas d'ancien ou nouveau permis !
'''35t''' : Non mais ancien franc, tu comprends ?
'''Gérard''' : Il n'y a pas d'ancien ou nouveau permis maintenant !
'''Phildar''' : Bah si ! Bah si, t'as le permis euro et t'as le permis franc !
'''Gérard''' : Mais attends, abruti ! Toi, qu'est-ce que tu me parles de l'euro ? Mais attends, t'es complètement... ''[Gérard se met à pousser des cris de singe maladroits, inspirés de vincent Lagaffe]''.
'''Tumsoule''' : Ouais, je sais pas, ça doit certainement coûter la peau des fesses parce que vu le nombre de manifestations qu'ils font...
'''Gérard''' : Je crois que t'es à la plaque aussi toi, t'es comme 35 tonnes, vous y allez à la moquette, hein ! Tu Me Saoule ?
'''Tumsoule''' : Ah ouais non mais moi quand je t'écoute je débloque.
'''Gérard''' : Ah ouais, ben fume la moquette ! Fume la moquette, ça vaudra mieux. Horloge ?
'''Horloge''' : Oui, ben moi je pense que le permis tu l'as... c'est celui qui arrive à boire le plus de bières à la suite. Parce que les routiers, c'est des alcooliques quand même.
'''Gérard''' : Horloge, c'est terminé pour toi. Bonne nuit. Horloge, terminé. Non non mais c'est même plus la peine qu'il revienne !
'''Dégage''' : Ben moi franchement j'ai pas vraiment d'idée, mais je pense quand même que ça doit valoir un tout petit peu plus cher que le permis voiture. C'est-à-dire dans les alentours... je sais pas, du permis voiture quoi.
'''Gérard''' : Non mais attends, un permis voiture vaut combien à l'heure actuelle ?
'''Dégage''' : Ben moi j'ai payé ça 10 000 balles quoi. Ah ben oui, avec les cours, excuse-moi !
'''Gérard''' : On se tait derrière ! Attendez, attendez ! Tu dis 10 000 balles ?
'''Phildar''' : Tu déconnes...
'''Gérard''' : J'ai l'impression... Dégage ? Dégage ! Non mais attends, Dégage ! Dégage, dégage ! Et derrière vous vous la fermez, merci ! Et dégage, déjà rien que le prix que tu m'as annoncé... c'est rien que le prix d'un permis voiture, et encore si tu l'as du premier coup avec les formations qu'ils font !
'''Dégage''' : C'est ce que je te dis Gérard ! Tu m'as demandé le prix que j'ai payé pour mon permis voiture, je t'ai dit : "10 000 balles".
'''Frigo''' : Je sais pas, je vais dire 100 000 francs hors taxes, non j'en sais pas du tout.
'''Gérard''' : Hé Frigo ! Je pense que tu ferais mieux d'aller voir s'il n'y a pas quelque chose dans ton camion.
'''Frigo''' : Ah mais j'ai pas de camion moi Gérard !
'''Manu''' : C'était pour vous dire qu'on accueillait donc, à la place d'Horloge, on accueille Antiroutier. Je crois qu'il a eu un accident, un truc pas possible, un truc pénible. Bonsoir. Il va vous raconter. Bonsoir.
'''Gérard''' : Bonsoir. ''[un blanc]''; Alors ?
'''Phildar''' : Il a eu un problème avec un routier, donc laisse-le se remettre quand même.
'''Gérard''' : Non mais attends, qu'il réponde maintenant ou c'est pas la peine qu'il passe !
'''ANtiroutier''' : Je dois répondre à la question ou ?
'''Gérard''' : Bah oui !
'''ANtiroutier''' : Bah je viens d'arriver donc...
'''Gérard''' : Ouais bah alors ? Combien coûte un permis PL ?
'''Antiroutier''' : Euh... c'est-à-dire c'est du... c'est quoi, c'est du sans-plomb ça ? C'est du... je dirais... ''[Gérard siffle l'air d'une chanson de supporter de foot mise sur CD, intitulée Ce soir on vous met le feu, avant de la chanter]''. Justement vous êtes en train de chanter une chanson qui fait bien penser que les routiers quand même sont des alcooliques. Parce que moi j'ai eu un accident avec un camion.
'''Gérard''' : Ouais ? Il y a combien de temps ?
'''Antiroutier''' : Il y a un an et demi. Un accident.. Un petit accident, mais pas méchant quoi. Mais bon, le... le routier avait un peu bu. Vous parlez, vous rigolez depuis tout à l'heure sur les routiers, mais je pense qu'il y a beaucoup de routiers... vous rigolez depuis tout à l'heure sur les routiers qui roulent beaucoup, mais qui ont de l'alcool, qui boivent un peu, et je pense qu'on n'en parle pas. Les routiers c'est très dangereux parce qu'un camion c'est très dangereux. Quand ça double est qu'il est fatigué, qu'il a pas dormi depuis 48 heures... Parce que les routiers vous dites qu'ils s'arrêtent pour dormir, mais ça il faut... ils s'arrêtent pas pour dormir, c'est pas vrai ! Quand ils sont en retard, ils s'arrêtent pas.
'''Phildar''' : Quand ils sont en retard ils s'arrêtent pas.
'''Gérard''' : Attendez, attendez ! Alors Phildar, moi je peux te dire une chose : que si le patron lui dit... tu vas... t'y vas... c'est que c'est le patron ! C'est de la faute du patron parce que le mec il risque sa vie aussi !
'''ANtiroutier''' : C'est peut-être la faute du patron, mais c'est pas le patron qui va tuer des gens sur la route !
'''Gérard''' : Ouais, mais d'accord, mais là-dedans c'est pas le patron qui prend !
'''Phildar''' : C'est le contribuab !
'''Gérard''' : Non non non ! Parce qu'il faut dire... attends toi, le contribuab... ''[extrême difficulté pour redire le mot]''.
'''Reego''' : Oui, oui, il a raison !
'''Gérard''' : Attends ! Mais attends ! Tu crois que c'est le contribuab qui va redonner ? bon bref. Je vais répondre à la nana qui m'a dit ça coûte 1000 francs quoi.
'''Manu''' : Moi j'ai une question Gérard : est-ce que dans le permis poids lourd il y a le camion qui est compris avec, dans le prix ? Quand t'achètes le permis, t'as le camion avec, non ?
'''Gérard''' : Non !
'''Manu''' : En plus ou que t'achètes le camion ?
'''Frigo''' : Faut acheter la remorque en plus.
'''Gérard''' : Non mais attends ! Tout à l'heure, je vais t'acheter... ta remorque, que tu vas dégager.
'''Frigo''' : Non mais je me renseigne, c'est tout, je sais pas.
'''Gérard''' : Ouais, non mais moi je te dis, tu vas dégager si tu continues ! Non mais moi je peux vous dire... moi je peux dire qu'un permis à l'heure actuelle coûte plus de 20 000 balles.
'''ANtiroutier''' : Non non non !
'''Gérard''' : Quoi non ? Attends ! T'es mieux renseigné que moi ?
'''Antiroutier''' : Oui, tout à fait monsieur ! Je me suis renseigné tout à fait. Je peux vous dire qu'un permis à l'heure actuelle... on voit que ça fait longtemps que vous n'êtes plus routier ! Ça vaut plus 20 000 francs, ça vaut au moins 30 ou 40 000 francs. Vous étiez peut-être routier, vous vous êtes tout à fait le genre de routier... le genre de routier des années 80, mais aujourd'hui on est à l'an 2000.
'''Gérard''' : Ouais, mais non ! Pour l'instant, on est en 1998, OK ?
'''Antiroutier''' : Non mais jouez pas sur les mots ! Vous êtes bien routier.
'''Gérard''' : Ouais. Alors la troisième question : la Cibie est-elle un moyen de communication ? Donc, on va s'écouter Gilbert Bisous avec "Donne-moi du sud pour Noël" et on se retrouve tout à l'heure pour la suite du débat. ''[Musique]''.
'''Gérard''' : Voilà donc vous pouvez toujours nous appeler au e ... C'est ça ?
'''Manu''' : Les deux doivent marcher.
'''Gérard''' : Donc apparemment ça a l'air de bien fonctionner.
'''Phildar''' : C'est super ce soir !
'''Manu''' : C'est super, c'est magnifique.
'''Gérard''' : Merci à tous sur Internet, ça a l'air de... de bien fonctionner aussi. Sur Minitel par contre, là je suis pas content, parce que sur Minitel y'a personne.
'''Phildar''' : C'est pas grave ! Ça fait deux heures qu'on est là, il a pas fonctionné. Donc on va attaquer... on va attaquer la troisième question. JG. ''[Gérard ferme l'écran du minitel, rageusement]''.
'''Gérard''' : Il m'énerve, lui. Donc, troisième question : la Cibie est-elle un moyen de communication ? Donc 2h36 et on est toujours sur le thème du débat des routiers. Donc on va demander à Arnett.
'''Arnet''' : Ouais. Tu sais, tu peux me répéter la question ? C'est pas pour t'ennuyer... c'est pas pour t'ennuyer Gérard, je te jure !
'''Gérard''' : Non non Arnett ! Arnett, je ne répète plus les questions !
'''Manu''' : Moi je vais la répéter si tu veux.
'''Arnet''' : Merci Manu, t'es gentil. Alors vas-y.
'''Manu''' : La Cibie est-elle un moyen de communication ?
'''Arnet''' : Alors... Bah je pense que oui. Oui, c'est sûr, puisqu'on peut communiquer avec des gens en fait. C'est automatiquement un moyen de communication.
'''Gérard''' : OK. OK. Donc pour toi, la Cibie c'est un moyen de communication ? OK. 35 tonnes ?
'''35t''' : Ouais bah je dirais un petit peu comme Arnett quoi, en fait. C'est beaucoup de gens qui...
'''Gérard''' : Ouais, non mais attends ! 35 tonnes ? Faut quand même essayer...
de chercher... Non non mais vous avez eu le temps pendant la pause de réfléchir ! Faut pas dire...
'''Arnet''' : Ouais mais tout le monde est d'accord avec moi, c'est pour ça Gérard.
'''Gérard''' : Ouais mais attends Arnett ! Arnett, pour l'instant tu vas te taire s'il te plaît.
'''ANtiroutier''' : Je suis pas d'accord, moi !
'''Gérard''' : Non mais attends, 35 tonnes... et même les autres là qui sont pas d'accord...
'''35t''' : Bon alors attends. Moi je te dis déjà : la Cibie, à la base, c'est un moyen de communication, tu vois ? Comme le téléphone. Donc en fait, ça s'est partagé à plein de gens, de l'émotion quoi, tu vois ? Donc voilà, c'est un moyen de communication, c'est tout.
'''Gérard''' : Ouais, non mais... donc tu reprends la question d'Arnett. Ben oui, Arnett il t'a dit que c'était un moyen de communication. Non non non mais attendez, attendez ! Moi je vais vous dire une chose : là, si tout le monde me répond le même truc qu'Arnett... Je suis d'accord avec Tarnet ou avec toi 35 tonnes. Moi je vais vous dire une chose : je vais zapper vite fait les questions.
'''ANtiroutier''' : Allô, c'est Anti-Routier là. Allô ?
'''Gérard''' : Non non. Tu Me Saoule ?
'''Tumsoule''' : Moi je trouve que la Cibie c'est vachement important pour eux. Au moins quand il y a un contrôle, tout de suite ben ils sont prévenus quoi. Parce que sinon...
'''Gérard''' : Non mais attends ! Parce que j'ai pas... j'ai pas entendu ce que tu m'as dit, parce qu'il y en a qui ricanent derrière. ''[antiroutier rit, forcé]''. Bon Arnett ? Tu te la fermes !
'''Phildar''' : C'est Anti-Routier.
'''Gérard''' : Bon alors Anti-Routier, tu commences à me les gonfler sérieusement !
'''ANtiroutier''' : Parce que t'as pas laissé parler les hommes jusqu'au bout !
'''Gérard''' : Ouais mais attends ! Moi je fais ce que je veux, d'accord ? En de bon entendeur, salut. Alors pour l'instant tu t'écrases ! Non mais pour l'instant je t'ai pas demandé quelle heure il était !
'''Antiroutier''' : Ouais ben il est 2h !
'''Gérard''' : Ouais ben quand je t'appellerai Pot de chambre, tu sortiras de sous le lit, OK ? Alors, Tu Me Saoule ?
'''Tumsoule''' : Ouais, donc je te disais que pour eux, je trouve que c'est vachement important la Cibie parce que quand il y a des contrôles d'alcootest, ils peuvent être prévenus et puis ça leur évite de leur faire sauter leur permis.
'''Gérard''' : Ouais, c'est ça ! Non mais attendez, attendez derrière s'il vous plaît !
'''ANtiroutier''' : Oui mais Gérard ? C'est l'Anti-Routier ! Tu trouves pas que c'est normal vraiment qu'avec la Cibie, justement qu'elle dit comme ça ça permet les routiers entre eux d'éviter... de prévenir l'autre pour que justement... il y a des contrôles d'alcool ! Ça veut dire que un mec qui a bu au volant et on va le prévenir qu'attention il y a des flics, donc on va essayer d'éviter qu'il puisse se faire arrêter, donc il va continuer à conduire avec l'alcool au volant.
'''Tumsoule''' : Ah bah c'est ce que les routiers font ! Ils continuent à conduire !
'''ANtiroutier''' : Ben c'est inadmissible !
'''Gérard''' : Oh tu me... oh ! Anti-Routier, Tu Me Saoule s'il vous plaît, vous vous calmez !
'''Antiroutier''' : Mais attends, tu nous saoules aussi !
'''Gérard''' : Anti-Routier, si ça te plaît pas, tu dégages ! Tu raccroches. Anti-Routier, si ça te plaît pas, tu t'écrases, tu t'écrases ! On va demander à Dégage ?
'''Dégage''' : Bah bon écoute Gérard, moi je crois que c'est quand même un moyen de communication vu le nombre de personnes qui ont la cibie, même dans les voitures. Moi je suis tout à fait d'accord parce que c'est quand même un moyen pour les routiers de communiquer, parce qu'à part le camion ils n'ont rien d'autre. Donc moi je suis tout à fait d'accord. ''[antiroutier ponctue cette réplique, par un oh làlà écœuré, puis "ils vont en boîte de cul"]''.
'''Gérard''' : Manu, tu me dégages Anti-Routier là.
'''Antiroutier''' : Eh voilà ! Merde ! On peut même pas discuter.
'''Gérard''' : Ouais, y'a pas de merde ! OK ?
'''Dégage''' : Ah mais c'est incroyable la vulgarité dans ce débat !
'''Reego''' : Gérard ? Gérard ? Sur IRC y'a Dav qui te demande si les kits mains libres Cibie dans un camion, est-ce que c'est dangereux ?
'''Gérard''' : Kit main libre sur Cibie ? Pour l'instant j'en ai jamais entendu parler.
'''Antiroutier''' : Ça existe aux États-Unis !
'''Reego''' : Ah si, tu viens d'en entendre parler là !
'''Gérard''' : Pour l'instant aux États-Unis...
'''Reego''' : On me confirme !
'''Phildar''' : Aux États-Unis, en fait, tu peux te masturber, conduire et faire de la Cibie ?
'''ANtiroutier''' : Non c'est pas ça ! Non !
'''Gérard''' : Non mais attends ! Parce que toi tu te masturbes en conduisant ta voiture et en faisant...
'''Antiroutier''' : Les routiers ils font que ça puisqu'ils sont jamais avec leur femme !
'''Gérard''' : Alors attends ! Alors là je vais te dire une chose : qui c'est qui vient de dire ça ? Eh oh ! Alors je vais te dire une chose : que tu vois, la question que tu viens de dire...
'''ANtiroutier''' : Non mais c'est pas une question, c'est une affirmation !
'''Gérard''' : Oui non mais moi je peux te dire une chose... moi je vais te répondre à ta question... Je vais te dire une chose : que tu crois que les routiers ont que ça à foutre de se masturber dans leur camion ?
'''ANtiroutier''' : Avec le système de main libre ! Avec le système de main-libre.
'''Gérard''' : Mais attends, tu crois... tu crois qu'ils ont... ils ont des trucs automatiques ?
'''ANtiroutier''' : Mais par exemple, au lieu de mettre de la cibie, il faudrait mieux de mettre l'Internet.
'''Gérard''' : Je vais te mettre un gros doigt dans le cul aussi !
'''Manu''' : Ça c'est toi qui balances l'info là.
'''ANtiroutier''' : T'es bien routier, t'es bien vulgaire, t'es bien routier là !
'''Gérard''' : Attendez s'il vous plaît ! J'ai une question Internet.
'''Reego''' : Non, c'est pas une question, c'était juste pour dire qu'il y a un certain Yoda sur IRC qui est en direct dans son camion. Bon, il est actuellement en direction vers Rouen.
'''Gérard''' : Direction vers Rouen ?
'''ANtiroutier''' : Est-ce que... est-ce que l'Internet ça vous sert... est-ce que... pardon, la cibie ça vous sert pas justement à savoir où est-ce qu'on peut trouver du carré de vigne à deux heures du mat' ?
'''Gérard''' : Allez, dégage toi ! Allez ! C'est terminé ! C'est terminé !
'''Frigo''' : Donc moi je trouve que c'est un bon moyen de communication, la cibie. Puis ça permet aux routiers de prévenir quand il y a un accident sur leur route.
'''Gérard''' : Ouais, mais ça... ça de toute manière... la cibie, je pense que moi j'en ai fait, je peux vous dire une chose : que la cibie... ''[ANtiroutier crie Tatayé dans le combiné, pseudo Cibie prétendu par Gérard le concernant]''. bon, tu vas te calmer toi, OK ? Donc moi je peux vous dire une chose, que la cibie c'est un moyen de communication pour savoir où sont les radars et de savoir comment que ça roule.
'''Arnett''' : GG ? J'ai une question Internet de la part d'Anakin qui me demande si t'as des calendriers de femmes nues dans ta cabine de camion.
'''Gérard''' : Oui. Alors toi tu dégages !
'''Reego''' : Non mais il est sur Internet en plus !
'''Frigo''' : Mais c'est pas lui qui doit dégager, c'est le mec sur Internet !
'''Gérard''' : Ouais, non mais lui tu lui dis au revoir, on lui répond plus !
'''Manu''' : Gérard excuse-moi ! On va accueillir deux personnes : on va accueillir Goldo et on va accueillir Tam Tam.
'''Gérard''' : Salut Tam Tam, bonsoir. Donc t'as entendu la question là ? Donc je la répète pour Goldo et Tam Tam : donc la Cibie est-elle un moyen de communication ? Pas 50 ans.
'''Tam tam''' : Tout à fait ! Oui. Pour moi oui. Pour moi Tam Tam c'est un moyen de communication. Ça permet effectivement, lors des accidents,, des contrôles radars, de prévenir.
'''Gérard''' : Voilà. Donc tu reviens à ce que... ce que je disais à l'instant. Attends 5 minutes Tam Tam.
'''Reego''' : Oui ? Sur IRC on me demande si tu connais la "mini Cibie" ?
'''Gérard''' : Ouais, c'est un petit truc de poche, un genre de portab. De toute manière c'est... Ouais ouais, c'est des Cibie portab. Non non ! Non non ! Non non ! Non non ! Tu rigoles Phildar ! Mais moi je réponds, je réponds ! Moi je vais dire une chose : que la Cibie portab, tu n'entends même pas la personne que t'as.
'''Phildar''' : T'es capab de l'avoir dans la main ?
'''Gérard''' : Ouais, non mais... c'est comme un téléphone portab mais sauf... sauf que t'as les canaux qui s'affichent !
'''Manu''' : C'est un peu incroyab, non ?
'''Tam tam''' : La distance du portable ? C'est à combien de distance ?
'''Gérard''' : Euh... sur la Cibie portab je pense que c'est à peu près la même distance que le portab.
'''Goldo''' : 2 mètres 50 ?
'''Gérard''' : Ouais, non même pas ! Même pas !
'''Tam tam''' : Mais il paraît que... il paraît que le son est exécrab.
'''Gérard''' : Ouais ben ça... ça dépend de l'antenne qu'on a.
'''Phildar''' : Ça dépend des contribuab !
'''Gérard''' : Non non non non, ça dépend de l'antenne qu'on met dessus ! Ça dépend de l'antenne ! Non non mais stop ! Là on va... on va couper parce qu'il est quand même 3h... 2h45.
'''Tam tam''' : Salut à tous, merci en tout cas !
'''Gérard''' : C'est qui ?
'''Tam tam''' : Ah c'est pas fini ?
'''Phildar''' : Bah tu dis qu'on coupe alors nous on arrête l'émission.
'''Gérard''' : Alors non, non non mais... on va abréger sur la question. Maintenant, moi je vais... une question qui m'est revenue... et il y a... il y a un auditeur qui est là et il y a un auditeur et qui m'a demandé de la poser : combien coûte pour faire décorer son camion ?
'''Tam tam''' : Tam Tam. J'ai vu le reportage.
'''Arnett''' : Arnet aussi je l'ai vu !
'''Tam tam''' : Et c'est hallucinant ce que ça coûte cher !
'''Gérard''' : À ton avis ? Non non mais grosso modo ! On va... on va pas s'acharner sur ça. À ton avis, combien que ça peut coûter ?
'''Tam tam''' : Parce que Manu m'a dit qu'il fallait que je réponde en euros. C'est obligé ?
'''Gérard''' : Non non non ! Pas en euros !
'''Manu''' : C'est mieux ! C'est la nouvelle norme !
'''Gérard''' : Éteins s'il te plaît ! Manu merci ! Non non. Non non Tam Tam ! Non non mais sans parler d'euros,
'''Tam tam''' : En francs français ? Je dirais 30 000 francs.
'''Gérard''' : 30 000 ?
'''Phildar''' : Qui dit mieux ?
'''Gérard''' : Donc pour toi ça coûterait 30 millions
'''Tam tam''' : Avec toutes les guirlandes et tout. À peu près.
'''Gérard''' : Non non non ! Simplement pour faire décorer l'extérieur ! Pas l'intérieur.
'''Tam tam''' : Ah pardon ! Je dirais 100 000 francs.
'''Gérard''' : Ouais, mais le tout grosso modo, qu'il me dit...
'''Tam tam''' : 100 000 francs. 50 000 francs avec la peinture.
'''Goldo''' : Avec 50 000 francs, avec la peinture, je te fais un prix, GG !
'''Gérard''' : OK, attendez. Tam Tam, tu me dis 50 ?
'''Tam tam''' : 50 000 francs avec la peinture.
'''Goldo''' : Ouais bah moi je te disais, je te fais un prix si tu veux pour écrire « poissonnerie » ou « camion de fret » sur un camion, pas de problème, je te fais ça pour...
'''Gérard''' : Ouais bah Goldo, Goldo, Goldo... Au revoir ! Va, va, va ! Va, va... Essaye de... de continuer... Non mais continue, continue à voyager !
'''Goldo''' : Mais c’est une décoration !
'''Manu''' : C’est qu’il a pas compris : c’est pas les écritures, c’est les peintures, les dessins !
'''Goldo''' : Tu parles de publicité, tout ça... poissonnerie, boucherie pour les livraisons. Excuse-moi, j’ai pas compris.
'''Gérard''' : Mais attends, faut pas confondre...
'''Goldo''' : Tu veux dire genre un dessin ? Genre tu te fais dessiner un cow-boy, un indien, un truc comme ça ? Un paysage ?
'''Gérard''' : Non mais n’importe ! T’as pas besoin de dessiner ce que tu veux.
'''Goldo''' : Qu’est-ce que tu dessinerais toi, GG, si tu pouvais décorer ?
'''Gérard''' : Non non, mais on va demander à Frigo.
'''Frigo''' : Ouais, moi je dirais 20 000 francs.
'''Arnet''' : Moi je dirais 10 000.
'''Dégage''' : 30 000.
'''Tumsoule''' : 383,44...
'''Gérard''' : Dégage-moi ça, dégage-moi ça ! Dégage ! Allez hop, bonne nuit. Euh, 35 Tonnes ?
'''Manu''' : Il est parti. C’est Goldo à la place, je te l’ai dit tout à l’heure.
'''Arnet''' : Euh ouais, moi je pense que ça doit coûter aux alentours de 10 000 francs.
'''Gérard''' : Ah bah... Ah bah... Non non ! Grosso modo, je pense que... Ça c’est dommage que j’ai pas un routier qui pourrait me le confirmer, mais c’est pas grave. Je le saurai et puis je vous donnerai le prix réel.
'''Reego''' : Il y en a un sur IRC, il peut te répondre tout de suite si tu lui poses la question.
'''Gérard''' : Bah qu’il me dise ! Bah... le prix que ça peut y coûter !
'''Phildar''' : S’il est sur IRC... Ça dépend ce que tu dis.
'''Gérard''' : Non mais, le prix que... que ça coûte.
'''Arnet''' : Un ordinateur ? 2 francs. Ou 1500 ? Un truc comme ça.
'''Goldo''' : 2,29 la minute !
'''Phildar''' : Ça dépend si tu prends le clavier.
'''Reego''' : Il est sur la route, ça met un peu de temps à répondre. Il me dit 50 000 euros.
'''Gérard''' : Euh... non mais ça... non ! Moi je peux vous dire, eh je pense que... je pense que de toute manière tout le monde a regardé le reportage de la semaine dernière, je pense. Tu ne l’as pas vu ? Moi je peux vous dire que ça coûte plus de 10 000 balles.
'''Manu''' : Pour nous renseigner, on a Marcel, un routier là qui nous a appelé. Marcel, salut !
'''Marcel''' : Oui, bonsoir. Moi j’ai fait décorer mon camion là justement, ça tombe vachement bien. Et là, j’ai la facture sous le nez : j’en ai eu pour 25 367 francs HT.
'''Arnet''' : Avec la TVA ou pas ?
'''Gérard''' : Non mais attends, Marcel. Non mais attendez les autres s’il vous plaît derrière ! Vous me laissez... vous me laissez parler ! Avec ou sans TVA, toi tuvas te la fermer pour l'instant. Je vais discuter un peu avec Marcel. Bon, toi Marcel, tu me dis 25 367 francs HT ? Donc hors taxe ? Mais t’as fait l’extérieur ou l’intérieur de ta cabine ?
'''Marcel''' : La totale !
'''Gérard''' : Donc la totale ? Donc t’as le volant avec... Oh attends ! Tu me calmes celle qui rigole comme une... comme une bécasse, parce que ça m’énerve !
'''Tam tam''' : Tu as mis la photo de ta femme sur le... le volant ?
'''Marcel''' : J’ai un volant... le levier de vitesse...
'''Gérard''' : Phildar ? Attendez ! Attendez s’il vous plaît ! Phildar, tu me coupes tout le monde sauf... Tu me laisses le dernier, Marcel. Donc pour toi, Marcel, ça t’a coûté 25 000...
'''Marcel''' : 267 francs quand même.
'''Reego''' : Attends, attends Marcel ! Sur IRC, donc il y a Zioui qui te demande ce que tu préfères comme décoration sur un camion.
'''Gérard''' : Alors là, ça c’est une très bonne question. Donc...
'''Tam tam''' : La photo de Jacques Brel !
'''Gérard''' : Toi, tu... tu fermes ta gueule !
'''Marcel''' : Ça dépend du routier !
'''Gérard''' : Bon, toi, tu te la fermes aussi ! Donc... Moi personnellement, dessus, j’aurais bien vu... mais je sais pas si ça existe...
'''Phildar''' : Cloclo ?
'''Manu''' : Ricky Martins ?
'''Gérard''' : Donc moi je réponds : donc c’est... c’est un truc avec carrément la Formule 1 dessus ! ''[réactions des auditeurs grognant que c'est blaireau]''. Non non mais... mais... mais peut-être c’est un truc blaireau, mais il faut dire une chose...
'''Tam tam''' : Tu peux faire ça en Alain Prost ou Senna, comme ça, tu mets juste des briques.
'''Gérard''' : Ouais, c’est ça ! Alors bonne nuit à toi ! OK. Donc, qui c’est... comme on avait Marcel ouais... Donc... ouais, mais t’as payé que l’extérieur toi, pour toi ?
'''Marcel''' : Ah non non, la totale ! Extérieur, poupée gonflable comme tout routier qui se respecte. Et puis un petit frigo pour mettre les bières !
'''Gérard''' : Ouais ça, le frigo de toute manière tu peux le mettre à l’extérieur.
'''Tam tam''' : Quand tu dis que tu veux repeindre ton truc en Formule 1, c’est parce que t’aurais l’impression d’aller plus vite ou pas ? Ou c’est juste pour un hommage ?
'''Gérard''' : Non non non ! Mais ça maintenant tu peux mettre n’importe quoi ! Non, mais je veux pas rendre hommage à Ayrton Senna ou autre.
'''Tam tam''' : Je parle de la Formule 1 en général.
'''Gérard''' : Non mais moi je te dis : tu peux très bien... tu peux très bien décorer ta cabine avec un truc de Formule 1.
'''Tam tam''' : Si t’as pas l’argent ?
'''Gérard''' : Bah dans ce cas-là tu le fais pas.
'''Tam tam''' : Sinon, sur ton camion, tu pourrais très bien marquer "Vroom" !
'''Gérard''' : Bah ouais, Vroom ! Ça veut dire quoi ?
'''Marcel''' : Bah, pour aller vite !
'''Goldo''' : Moi je veux bien te refaire ton intérieur, y’a pas de problème.
'''Gérard''' : Bon bah toi, toi tu t’appelles... euh... Bon, de toute manière on s’écoute le dernier disque.
'''Phildar''' : Bah tu vas peut-être poser une question ? Y’a encore des questions ?
'''Tam tam''' : Est-ce que les routiers, quand vous faites la nuit, quand vous roulez la nuit, vous êtes obligés de vous arrêter sur l’autoroute... sur les aires d’autoroute la nuit ? Est-ce que vous vous arrêtez pour voir des putes dans les camionnettes ? Dans les camionnettes ? Dans les camionnettes ?
'''Gérard''' : Alors toi, tu vas dégager tout de suite parce que c’est pas le thème du débat !
'''Reego''' : Ah bah Gérard, sur IRC, Yoda qui est dans son camion, il me dit qu’il en a vu une tout à l’heure !
'''Gérard''' : Ça... ils font ce qu'ils veulent. Alors la dernière question c’est...
'''Marcel''' : Il n’a pas préparé son débat !
'''Phildar''' : Si si si ! Il va la retrouver. Attends, tu connais pas Gérard, toi.
'''Gérard''' : Euh, au hasard... Qui c’est qu’a une...
'''Arnet''' : Pourquoi les routiers sont trop cons ?
'''Gérard''' : Non ! Alors toi tu dégages !
'''Tam tam''' : Pourquoi les routiers n’ont pas de QI ?
'''Marcel''' : Putes ou routiers, y a-t-il une différence ?
'''Reego''' : Gérard, sur IRC, la question... Attends, y en avait une bien là... y en avait une bien. Alors, Malcavienne qui demande si... ah bah c’est trop tard, je l’ai raté. C'est con parce que ça défile et j’ai pas eu le temps de le voir.
'''Tam tam''' : Est-ce que les routiers peuvent devenir des stars ? Que font les routiers par temps de verglas ?
'''Arnet''' : Est-ce que le pare-soleil vert transparent avec l’équipe de foot préférée marquée dessus est obligatoire ?
'''Reego''' : Merci ! C’était la question de Malcavienne.
'''Gérard''' : Voilà ! Alors donc la question c’est : combien de temps les routiers passent-ils sur la route ? Et on se retrouve juste après.
'''Reego et Phildar''' : C’est naze ! Tu l'as déjà posée. Tu peux pas poser cette question-là. ''[tout le monde réagit en même temps au standard]''.
'''Marcel''' : C’est nul !
'''Gérard''' : C’est nul ! Vous la fermez ou sinon... Allez hop, conclusion !
'''Phildar''' : Non attends ! Ça y est j’ai une question. Bon, routier c’est un métier dur, on est d’accord. Combien de temps, à votre avis, un routier peut-il exercer dans la profession de routier ?
'''Gérard''' : Voilà.
'''Phildar''' : Ça c’est une bonne question.
'''Gérard''' : Voilà. Et on se retrouve après ! On va s’écouter Roger Pussot avec "Ma sœur elle joue du pipeau cul nu". ''[Musique]''.
'''Gérard''' : Donc vous pouvez toujours nous appeler au 0800... 08 5000 !
'''Phildar''' : On est toujours dans le débat des routiers. Et la dernière question c’était donc : à votre avis, les auditeurs, combien de temps un routier peut-il exercer dans cette profession si belle ?
'''Gérard''' : Voilà. Tam Tam ?
'''Tam tam''' : Bah déjà, moi je sais pas, mais je pense qu’un routier peut tenir facilement jusqu’à... bah... la retraite, c’est à quel âge Gérard ?
'''Frigo''' : Justement, c’est la question je crois.
'''Gérard''' : Non non mais moi je te demande : jusqu’à quel âge un routier peut-il continuer de rouler ?
'''Tam tam''' : Un routier ça doit... la retraite ça doit être vers 55 ans.
'''Gérard''' : Non ! Non, 55 ans ça c’est... ça c’est... c’est les mecs qui... qui travaillent dans... à la RATP !
'''Tam tam''' : Moi je pense que bon, les routiers c’est quand même un métier assez simple parce que tu fais que de la route, t’es en balades et tout. Je pense que ça devrait travailler jusqu’à à peu près 70-75 ans, parce que c’est quand même une profession de fénéants.
'''Gérard''' : Ouais non mais attends ! Une profession de fénéants ? Fais-moi confiance ! Non non mais attends ! Celui qui vient de dire que c’est une profession de fénéants, fais-moi confiance... celui qui vient de dire ça... déjà c’est un con ! Et un boulot de fénéants, c’est pas vrai ! Parce qu’il faut dire une chose : que les mecs, faut les voir...
'''Marcel''' : On bosse comme des tarés !
'''Goldo''' : Boarf arrête toi !
'''Gérard''' : Ouais bah attends ! Si t’es pas content Tam Tam...
'''Tam tam''' : Non mais d’accord ! Non mais c’était pas Tam Tam... D’accord, OK. Vous bossez 15h par jour, mais je trouve que bosser 15h par jour, c’est quand même des fénéants quand même !
'''Gérard''' :Hein ? Attends ! Tu crois que dans les bureaux ils font 15h par jour ?
'''Phildar''' : Non mais c’est pas des fénéants !
'''Gérard''' : Attends ! Ils arrivent... attends... Non mais attends, attends Tam Tam ! Moi je vais te répondre à ta question : le lundi ils arrivent, hop, ils commencent déjà par leur petit café...
'''Phildar''' : On parle des routiers ! On parle des routiers !
'''Gérard''' : Non non non ! Non mais attends ! Non non non ! Stop ! Stop ! Stop ! Stop ! Maintenant Tam Tam, tu vas bien m’écouter ! Tu vas bien ouvrir tes esgourdes.
'''Tam tam''' : Pour l'instant, tu dis qu'ils sont en train de boire,c’est tout ce que tu dis.
'''Gérard''' : Bon alors moi je peux te dire une chose : que déjà les routiers, ils commencent le dimanche soir à 22h !
'''Phildar''' : Ils n’ont pas le droit de rouler le week-end.
'''Tam tam''' : Ils commencent le dimanche à 22h, c’est pour arrêter le lendemain ou le mercredi !
'''Gérard''', ''[exhalté, remplis de gestes amples]'' : Mon cul, Phildar ! Les routiers commencent à partir de 22h ! Ils n’ont pas le droit... ils n’ont pas le droit aux autoroutes le lundi... Oh Tam Tam ! Tam Tam ! Tu t’écrases, je vais te répondre moi ! Alors déjà, dans les bureaux ils ne font pas 55h !
'''Tam tam''' : Non mais oui ! Ils commencent à 8h du matin et pas à 22h !
'''Gérard''' : Ah ouais ? Alors dans ces cas-là, à 8h du matin le chauffeur il est déjà sur la route ! On est bien d’accord ? Alors à 8h du matin, la nana elle arrive au bureau, elle dit à son copain : "Oh ouais mais tu sais..." à sa copine : "Oh ouais mais tu sais, mon mec il m’a bien baisé et tout", hein ? Alors que les routiers... que les routiers... les routiers partent... non non... non que les routiers... que les routiers... attendez s’il vous plaît ! Que les routiers partent le dimanche soir à 22h et ils disent au revoir à leur femme... ils ne savent même pas s’ils vont rentrer ! OK ? Alors Tam tam, tu te la fermes.Stop ! ''[le chaos s'installe, les auditeurs réagissant tous, et notamment tam tam, Gérard hurlant pour les arrêter, sans succès]'' : Stop ! Stop ! Stop ! STOP ! Ya une question... Allez, allez, coupe-moi ! Coupe-moi tout ça là ! Enfin ! Alors Reego ?
'''Manu''' : C’est allé trop vite ! C’est allé trop vite encore.
'''Reego''' : J’ai vraiment pas eu le temps de lire vu qu’il y a environ 418 connectés et tu vois les...
'''Arnet''' : C'est bon, Reego, je peux t’aider ? C’était qui ? C’était qui ?
'''Reego''' : C’était... je crois que c’était Snul... je sais plus... il y avait une question intéressante et j’ai pas eu le temps de la voir.
'''Phildar''' : C’est pas grave ! Tu vas la retrouver.
'''Frigo''' : Oui, je crois que les routiers peuvent conduire jusqu’à l’âge de 50 ans.
'''Tam tam''' : Ah non ! C’est des conneries ça !
'''Frigo''' : Bon attends ! Je suis d’accord, j’ai lu un bouquin moi sur les routiers. Et je peux te dire que dedans, bon c’est... le mec, bon il disait que les routiers pouvaient rouler jusqu’à l’âge de 50 ans, mais après au-dessus : interdit !
'''Gérard''' : Je pense pas. Je pense pas, je pense pas à mon avis. Parce que moi, moi je peux te dire une chose : c’est... c’est... c’est bête parce qu’à chaque fois je vais dire, je vais reparler de Titi, mais lui ça fait... ça fait... ça fait plus de 22 ans qu’il fait de la route !
'''Manu''' : Et est-ce que t’as vu son gros minet ?
'''tam tam''' : Et il a quel âge ?
'''Gérard''' : Non mais ça, son âge ça vous regarde pas ! Reego ? question Internet pour finir. Non ? Allez, conclusion?
'''Arnet''' : Gégé, j’ai une question intéressante sur Internet : "Pourquoi les hommes éjaculent-ils par saccades ?"
'''Reego''' : Ah là j’ai la même là ! Tu vois ! C’est pas le thème du débat !
'''Goldo''' : "Parce que Gérard avale par gorgées" !
'''Gérard''' : Lui, tu me le dégages ! Hop là, il est terminé !
'''tam tam''' : On fait la conclusion là ? Bah moi ce que je conclus de ce débat : bon c’est intéressant pour les routiers. Ce que je constate c’est que bon, vous êtes... vous écoutez que du Johnny et du Coluche, et vous êtes des fénéants !
'''Gérard''' : Non mais de toute manière, en plus c’était pas... c’est un débat improvisé qu’on a fait !
'''Tam tam''' : Ouais bah ça s’est bien entendu ! On sent que tu connais pas le sujet ! Tu nous fais croire que t’as été routier, mais on se le demande.
'''Gérard''' : Euh... Alors je vais te dire une chose !
'''Arnet''' : Ouais ouais, tu la diras tout à l’heure !
'''Gérard''' : Non mais je pense que celui qui s’amuse à faire des conneries comme ça va se calmer !
'''Tam tam''' : Bon, est-ce que t’as été routier pour de vrai ou pas ?
'''Gérard''' : Oui !
'''Tam tam''' : Prouve-le !
'''Phildar''' : Non, il a été routier sur Internet !
'''Goldo''' : Est-ce que tu as glissé sur du verglas ? Oui ou non ?
'''Tam tam''' : Non mais sérieusement ! Est-ce que t’as été routier ? Combien d’années ?
'''Gérard''' : J’ai fait deux ans de route.
'''Tam tam''' : Combien de kilomètres t’as fait ?
'''Gérard''' : Euh... J’ai fait plus de 10 000 bornes !
'''Goldo''' : Combien de putes ?
'''Tam tam''' : C’est tout ?
'''Gérard''' : Combien de putes et ta sœur ? Ta sœur elle est en train de se faire enc... ! ''[cris de Phildar et Manu pour couvrir le mot et l'empêcher de poursuivre]''. Toi tu dégages ! Allez hop, terminé pour celui-là. Allez on y va ! La conclusion ! Allez vite vite vite vite vite ! ALLEZ Allez hop ! Hop ! Terminé ! Terminé ! Terminé ! T’envoies le...
'''Phildar''' : Attends, ta conclusion à toi ?
'''Tam tam''' : 10 000 kilomètres en deux ans, c’est pas beaucoup quand même Gérard ! Oui, t’es un fénéant !
'''Gérard''' : Ouais ben... moins que toi. Abruti !
'''Marcel''' : Je vais te donner ma conclusion. Alors je pense que... je pense que les routiers, ça peut... ils travaillent dur et ils peuvent conduire encore longtemps. Nous en tout cas, on a fait ça sur la route toute la journée et on a mis... beaucoup de routiers ont la photo de toi, Gérard, pour se soutenir, pour essayer d’aller d’aller plus vite, d’aller plus vite parce que pour nous t’es un symbole de réussite quoi, quand même ! Parce que tu fais de la radio maintenant, on voudrait bien être tous à ta place !
'''Gérard''' : Ouais mais de toute manière, faut dire une chose : que grâce... grâce aux routiers... grâce... grâce aux routiers qui nous écoutent encore à l’heure actuelle — et je sais qu’ils sont nombreux, ils sont nombreux ! — même les chauffeurs de taxi, tout ça... Grâce... grâce à tout ça, grâce à ces gens-là, c’est grâce à eux quand même si on peut... même malgré les grèves... qu’on puisse rentrer chez nous avec les chauffeurs de taxi, mais grâce aux routiers !
'''Marcel''' : C'est grâce à toi !
'''Gérard''' : Oh s’il vous plaît ! Laissez-le finir ! Grâce aux routiers, c’est grâce à eux si on mange quand même ! Que les grandes surfaces soyent ravitaillées. Si on n’a rien dans les grandes surfaces, on ne peut pas manger ! Alors taisez-vous, vous savez pas.
'''Reego''' : Deux secondes sur IRC, je trouve qu’il y a une conclusion intéressante : "Si tu es routier, que tu sors en boîte, que tu sais mixer, que tu mets un costard-cravate et qu’en plus tu as une CB avec un kit main libre, et bien ça veut dire que tu deviendras un pote de GG !" J’applaudis Dave sur l’IRC !
'''Gérard''' : De toute manière sur la CB, il faut dire une chose. Avec la CB, on peut savoir pas mal de choses, mais il faut dire une chose : qu’à force, la CB ça commence à devenir rengaine ! Parce que sur le canal 19, c’est qu’il y en a qui s’amusent à s’amuser à nous mettre de la radio constamment, et on peut pas savoir où sont les barrages ni rien. Donc alors maintenant, ceux qui s’amusent à faire ça sur la CB, pour moi, c’est des petits cons ! C’est des petits branleurs ! Alors maintenant, qu’on respecte... Qu’on respecte le métier des routiers et des chauffeurs de taxi et des animateurs radio ! C’est tout ce que j’ai à vous dire. En de bon entendeur, salut ! ''[le studio applaudit]''. Vous allez... vous allez retrouver...
'''Goldo''' : J’ai pas fait ma conclusion !
'''Dégage''' : Les conclusions !
'''Gérard''' : Alors allez-y vite fait !
'''Arnet''' : Alors c’est vrai, ouais, je te kiffe ! Parce que franchement ce que t’as fait c’était bien.
'''Gérard''' : Non mais attends ! Moi je te kiffe pas, OK !
'''Arnet''' : Mais alors les routiers c’est n’importe quoi ! Le seul truc qu’ils savent faire c’est se branler dans leur cabine !
'''Gérard''' : Alors Arnett, c’est terminé ! C’est même pas la peine de continuer parce qu’il y a des routiers qui nous écoutent, OK ? Et fais-moi confiance que yen a qui sont en haut, à m’attendre.
'''Arnet''' : Salut bouffon !
'''Gérard''' : Ouais bah bouffon toi-même, connard !
'''Goldo''' : GG, c’est Goldo ! Je peux faire ma conclusion ? Bah je voulais dire que déjà je suis derrière toi à fond, à 100% tout profond ! Et que je voulais dire que bah les routiers c’est quand même, comme a dit Arnett, un métier de feignasses qui se pignolent et t’es un digne représentant de cette profession !
'''Gérard''' : Alors Goldo, dégage ! Bonne nuit ! C’est terminé pour ta conclusion.
'''Dégage''' : Ouais bah écoute, moi je trouve que je savais pas grand-chose sur les routiers mais j’en ai appris quelques-unes. Mais alors par contre, il y a un truc que je reproche dans ce débat, c’est qu’il y a énormément de vulgarité et j’aime pas ça.
'''Gérard''' : Et bah c’est dommage parce que c’est comme ça...
'''Phildar''', ''[hilare avec Ma, rentré dans le studio]'' : C’est comme ça tout le temps !
'''Dégage''' : Bah ouais mais c’est pas bien, moi je trouve. Parce que franchement, votre débat il est bien, et s’il y avait un peu moins de vulgarité je trouve que ça serait pas mal.
'''Max''' : Bah ouais mais dans ces cas-là, les routiers faut bien comprendre... c’est Max... que c’est quelque chose de viril ! On l’a compris encore par Gérard ce soir, c’est normal. Et quand c’est routier, que c’est viril, forcément ça amène un peu... au lieu d’en venir aux mains, ça en vient un peu aux mots ! Et même si ça a été un peu vulgaire, je pense que ça a apporté beaucoup. Ça vient du cœur ! Et quand t’es un passionné... le routier c’est un peu comme un animateur radio, c’est une passion. Et quand t’as une passion, tu la défends, et donc très vite tu peux devenir agressif parce que tu défends ta profession que tu aimes. Gérard ?
'''Dégage''' : Je suis tout à fait d’accord avec Gérard ! Ça c’est sûr !
'''Gérard''' : Non mais ça de toute manière moi c’est un truc que je défendrai jusqu’au bout ! Et moi, je dis aux routiers : chapeau pour ce que vous faites ! Je sais qu’il y en a qui sont là-haut... il y a Enji qui est venu et qui m’a dit qu’ils étaient en haut et qu’ils voulaient me voir.
'''Max''' : Mais t’es d’accord avec moi comme quoi c’est une passion et que c’est normal qu’on s’énerve ?
'''Gérard''' : Une passion de toute manière tu es obligé de la défendre ! C’est un gagne-pain, c’est tout ce que tu veux pour toi ! C’est comme toi animateur radio...
'''Max''' : Quand on parle des passions, tu dis que c'est un gagne-pain. Est-ce que, si t'es passionné de papillons, le papillon c'est un gagne-pain ?
'''Gérard''' : Ça dépend des personnes...
'''Phildar''' : Donc ta conclusion, Gérard ?
'''Gérard''' : Donc ma conclusion : c’est dommage que je n’ai pas préparé ce débat-là parce que ce n’était pas prévu.
'''Phildar''' : Pour une fois il était bien !
'''Gérard''' : C’est pas mal, à part qu’il y a eu des petits emmerdeurs.
'''Max''' : Non mais c’est normal, c’est un métier de passion !
'''Gérard''' : Mais donc on vous retrouve...
'''Max''' : Jeudi prochain déjà, pour les débats. Donc ça portera sur quoi d’ailleurs ? On peut savoir les thèmes ou pas ?
'''Phildar''' : T’avais pensé tout à l’heure aux synthétiseurs.
'''Gérard''' : Alors donc on va parler sur les synthés et sur le harcèlement sexuel. Donc on va se quitter.
'''Max''' : J’ai hâte d’écouter le débat sur le synthétiseur !
'''Phildar''' : Tu sais qu'à mon avis, il y a de la question quand même !
'''Max''' : Tu planches pas au dernier moment comme d’habitude où le mercredi tu viens me voir en me disant que t'y arrives pas. T’es sûr ? C’est un débat sur le synthétiseur.
'''Gérard''' : Ah ouais ! Alors là le synthé, t’as intérêt de me trouver... du Jean-Michel Jarre, j’en ai moi à la maison, on va s’en écouter un la semaine prochaine !
'''Max''' : Si si si ! Le truc de la Coupe du Monde... le Coupe d’Europe...
'''Gérard''' : Coupe du Monde... Ouais ! J’en ai même plus que ça à te faire écouter. Donc on se quitte et donc je vous retrouve jeudi prochain. Donc bonne nuit à tous ! Et vous allez retrouver Rousseau, Rousseau pour la nuit sans pub. Et on va se quitter avec la bande de Billy du slip avec les cochons ont le grillon qui chauffe. Vas-y !
'''Phildar''' : "On a le groin qui chauffe" ? Les cochons ça a un groin, c’est pas un grillon !
'''Gérard''' : Bon attends, t’avais qu’à l’annoncer toi-même après tout, c’est toi qui fais la réa et puis c’est tout ! Alors poupougne à toi ! OK ! En de bon entendeur salut.
== Le débat sur les synthétiseurs ==
=== Contexte ===
Déjà quatre débats pour cette nouvelle saison, le cadre semble désormais presque posé. Phildar et Manu régulent, selon leur état de forme du soir. Reego, sur Internet, régule car il a ses accès privilégiés à Gérard, il est intouchable, notamment parce qu'il est le seul point d'interaction avec l'extérieur et la mesure d'audience, selon Gérard. Max peut participer, ou pas, aux débats, le tout étant de faire parler Gérard de tous les sujets, ce qu'il fait sans les maîtriser et sans les bases de la communication. Les titres de disques, les sondages, sont inventés et absurdes, rédigés cependant avec le thème du débat. L'audiamt se mesure en nombre de connectés, ce qui va offrir à Reego et l'équipe un instrument efficace de régulation de l'animateur.
Mais on voit déjà que le concept peut s'épuiser. Tout va dépendre du positionnement du curseur quant à la provocation de l'équipe et des auditeurs. C'est ce paramètre qui va rendre cette émission à la fois hilarante, surréaliste et durable. Le mélange des propos juxtaposés sans lien et des provocations systématiques, à divers degrés, qui font réagir Gérard, fera le succès de cette émission nocturne. Ce débat en est la première marche.
Sur un thème, à vrai dire, peu connu de Gérard, l'équipe s'active à le provoquer en grossissant ses failles et par tous moyens. Les auditeurs aussi. On voit immédiatement que cela transforme l'allure du spectacle, devenant un immense moment comique. Avec le temps, la provocation occupera de plus en plus de place, les auditeurs et l'équipe en devant experts, et déployant des trésors d'ingéniosité pour pousser le concept de l'absurde provocateur le plus loin possible. Ce débat n'en est qu'un échantillon, les suivants ne vont plus vraiment ressembler aux précédents, car les gens vont tous aller dans ce sens et rivaliser de créativité en ce sens. C'est ce verrou qui manquait à l'émission pour devenir culte, il saute lors de ce débat. L'art de l'équipe, mais aussi des auditeurs (d'où l'intérêt qu'ils soient habituels) tient alors à la régulation : provoquer et faire rire sans déraper, faire dérailler Gérard sans dérapage, concilier ses hurlements avec un minimum d'intelligibilité pour rester dans le surréalisme et ne pas virer au chaos de l'époque, s'amuser sans déborder du cadre radiophonique et surtout, rester à la bonne distance d'une psychologie bouillante et traumatisée. L'art de l'équipe est, à ce stade, d'orchestrer toutes ces réalités, mais aussi de jouer un rôle de tampon : ils sont la soupape de sécurité, la clé de voûte du dispositif. Bien que très jeunes, ils vont devoir absorber de nombreux chocs au service de ce délire radiophonique et manier à la perfection le second degré.
Tout ceci étant, pour rappel, de la pure improvisation. Donc, nombre de sketches s'ancrent dans l'actualité. Par exemple, les petites annonces d'Elie Semoun seront souvent utilisées, ayant à cette époque un franc succès dès leur sortie en vidéo.
D'autres sketchs, par contre, restent constants, et ce sont ceux de Gérard. Ce soir-là, il semble avoir vécu une semaine difficile, il est rageur. Il mobilise donc le sketch sur le départ, la qualité de l'équipe, des auditeurs, les habituels, et ceci dès son arrivée 30 minutes avant son émission. Le courrier, oes prospectus et les ultimatums reprennent aussi leur placce et, là aussi, n'iront qu'en s'amplifiant (homomag, le personnage à succès de gérard, sa sexualité fictive, passage sur d'autres radios, etc). Il réactive avec vigueur, et là aussi cela n'ira qu'en s'amplifiant, la colère contre Phildar pour ses prétendues divulgations de vie privée à l'antenne, sujet de provocation qui sera très utilisé par la suite et créera une vive montée de température avec Phildar. C'est peut-être pour compenser cette mauvaise humeur imméidatement visible que l'équipe, sans le savoir, invente en amplifiant l'idée de le provoquer. Quand Max parle d'un des meilleurs débats depuis la création du concept, il ne se trompe pas : ce débat est le premier d'une série d'émissions mythiques qui interviendra par la suite. Au fond, l'équipe axe, dès cette émission, la relation avec Gérard sur la provocation, de son arrivée jusqu'aux émissions elles-mêmes.
Étant de l'improvisation, statistiquement et vu la durée, ces émissions ne peuvent pas s'épargner de quelques dérapages. Nous les verrons au fur et à mesure, certains transformant, d'ailleurs, totalement la dynamique de l'équipe, sans toutefois modifier la machine créative présidant à l'émission.
=== Les personnages ===
* Franck Bargine : Max, Bernard, Tristan, Guillaume
* Gérard Cousin : Gérard
* Igor : Reego
* Phildar et Manu
* Axel : Machatte, Jean-Michel Jarre (JMJ)
* Laura : Guimauve
* Mégane : Citron
* ONgle de pied (anciennement Dégage)
* Thierry (agent de sécurité de la station) : Trou noir
* Olivier Boucuet : Olivier
=== Transcription ===
'''Gérard''' : Bienvenue sur Fun Radio ! Donc, 0h37, c’est toujours Fun Radio que vous écoutez. Vous pouvez nous appeler si vous voulez participer, toujours au débat sur les synthétiseurs.
'''Phildar''' : On va dire la musique électronique, parce que si on dit que les synthés, ils vont avoir peur, les auditeurs...
'''Gérard''' : Sur la musique synthé, tout ce qu’on peut entendre joué par Jean-Michel Jarre ou autre comme chanteur. Donc, on va accueillir Citron, 19 ans, de Mazamet. Tupu.
'''Tupu''' : Bonsoir Gérard, bonsoir Sandy, bonsoir Yargla.
'''Gérard''' : Non, mais Sandy, elle n’est pas à côté de moi, donc désolé pour toi. Elle est là, mais elle ne veut pas venir écouter.
'''Gérard''' : Ongle de pied ? Machatte ? Guimauve . Et Trou Noir ?
'''Gérard''' : Donc, premier débat : on va parler sur la musique des synthétiseurs. Donc, il y a toujours le site Internet www.fr.
'''Phildar''' : Double slash.
'''Reego''' : Voilà, tout à fait. Il y a déjà beaucoup de connectés.
'''Gérard''' : Donc voilà, donc alors en gros : aimez-vous la musique... Aimez-vous la musique jouée au synthé ?
'''Machatte''' : Qui ça ?
'''Gérard''' : Ben, "qui ça" ? La main de ma sœur dans la culotte d’un zouave qui joue.
'''Phildar''' : Non mais Gérard, comme à chaque fois, tu débutes tes débats, tu dis jamais à qui tu t’adresses. Tu demandes à un auditeur de répondre.
'''Gérard''' : Alors, Ongle de pied ?
'''ONgle de pied''' : Moi j’adore, franchement. Je trouve que c’est de la bonne musique. Mais bon, chacun son style, mais moi j’aime bien.
'''Gérard''' : Non mais toi, dans l’ensemble, t’aimes bien ?
'''Ongle''' : Ouais, moi je trouve que c’est de l’ambiance. C’est bien au moins. Ouais, ouais.
'''Tupu''' : Ouais, ben moi je pense que ce gars-là, c’est un peu comme Francis Cabrel : il a su toujours se renouveler. C’est vraiment... je trouve ça très fort.
'''Gérard''' : Non mais attends, Francis Cabrel, il a jamais joué du synthé ! Il a toujours joué de la guitare.
'''Phildar''' : Non, attends ! Faux. Il a fait des morceaux au synthé.
'''Gérard''' : Ouais, mais je voudrais bien savoir quel morceau.
'''Manu''' : C’était des sons de guitare, mais c’était au synthé.
'''Phildar''' : Gérard, t’es d’accord avec nous qu’au synthé, on peut faire plusieurs sons ? On n’est pas obligé de faire plus de son qu’un autre.
'''Gérard''' : Ouais, mais ça c’est...
'''Phildar''' : C’est une autre question. On verra par la suite, ne vous inquiétez pas. Il a tout prévu, Gérard.
'''Citron''' : Oui ? Oui, moi j’aime bien aussi. Ouais. Par ordinateur aussi.
'''Gérard''' : Ouais, mais... Un synthé c’est quoi ? Ça peut être très bien aussi sur ordinateur, comme Jean-Michel Jarre il a fait lors du concert du 14 juillet.
'''Phildar''' : À Wembley ?
'''Gérard''' : Non, à Paris.
'''Citron''' : Ah ouais, j’ai pas vu.
'''Gérard''' : Je l'ai enregistré.
'''Citron''' : Faudrait que tu me le prêtes alors .
'''Gérard''' : Non, non. Moi je prête pas les casettes vidéo que j'enregistre comme ça.
'''Citron''' : Je viendrai le voir chez toi.
'''Gérard''' : Non. Il est hors de question... Euh... Machatte ?
'''Machatte''' : Ouais, ouais. Ben moi je kiffe ça. Ouais, j’adore. Techno, House, Trouble ou Acide, Transdip, Deepcore, Adfitcore... tout ça, ouais. Ouais, j’aime bien, ouais.
'''Gérard''' : Non mais je te parle de la musique du synthé !
'''Machatte''' : Ah ouais, ben c’est de la musique électronique. Ben c’est pareil.
'''Guimauve''' : Euh non, moi j’aime pas. Ça me prend la tête.
'''Gérard''' : Et dans... dans quel sens, s’il te plaît, ça te prend la tête ?
'''Guimauve''' : Dans tous les sens du terme.
'''Guimauve''' : C’est-à-dire ? Ouais, non mais attends, tu vas répondre aux questions que je te pose, c’est tout ! Alors pourquoi que ça te prend la tête ? Et dans quel sens ? C’est tout.
'''Guimauve''' : Parce que je trouve que c’est pas de la musique. C’est pas de la musique pour moi.
'''Gérard''' : Bon, alors c’est quoi alors ?
'''Guimauve''' : C’est des sons inventés sur des machines, pour moi.
'''Gérard''' : Ben alors, le synthétiseur c’est quoi ? C’est des... on invente des sons ! Me dis pas... me dis pas de conneries, Guimauve, s’il te plaît.
'''Guimauve''' : Non, je suis pas d’accord.
'''Trou noir''' : Ah ben moi j’adore le synthé, Gérard. Et puis je suis moi-même joueur de synthé.
'''Gérard''' : OK. Ben tiens, ben justement, c’est une question... peut-être sur IRC ?
'''Reego''' : Oui, sur IRC. Déjà, on te demande, Gérard : qu’est-ce que c’est un synthétiseur ?
'''Gérard''' : Un synthé, c’est une musique comme t’as là. Toi, attends... tu prendrais ça et que... ''[il désigne le clavier du PC]''.
'''Citron''' : Et on voit pas, nous !
'''Gérard''' : Non mais vous voyez pas, vous avez pas besoin de voir ! Donc... donc ça serait un genre d’appareil comme tu tapes sur un clavier.
'''Reego''' : C’est-à-dire que là... attends, je vais essayer de jouer un morceau. ''[il tape de manière anarchique sur les touches du clavier]''.
'''Gérard''' : Voilà. Et dedans... mais là t’as l’écran et dessus t’as toute la musique qui ressort. Mais bien sûr, là t’as des noms, mais ils peuvent modifier le truc.
'''Phildar''' : Ah, c’est ça un synthétiseur alors ? C’est pas comme un piano, alors c’est différent ?
'''Gérard''' : Ben le piano, c’est... le piano, c’est le piano.
'''Phildar''' : C’est-à-dire ? C’est quoi la différence entre un synthé et un piano ?
'''Gérard''' : Non mais justement, arrêtez de me bouffer les questions !
'''Manu''' : On s’intéresse, on s’intéresse !
'''Gérard''' : Donc Trou noir, comme toi tu joues de... donc, jouez-vous du synthétiseur chez vous ? Donc c’est une question qui est pour toi.
'''Trou noir''' : Ah ben moi je joue du synthétiseur, oui Gérard. Et puis ben, synthétiseur... ouais, c’est loin d’être un piano. Mais comme je crois que c’est une de tes prochaines questions...
'''Phildar''' : Grille pas les questions, Trou Noir, s’il te plaît !
'''Trou noir''' : Non, non, non. Par contre, je vais dire quand même qu’un synthétiseur, ben ouais, c’est un générateur de son. Et puis ça existe sous forme de sampler maintenant, sur pas mal de choses.
'''Gérard''' : C’est vrai que maintenant, tout le monde... tout le monde joue sur... sur du... des synthés, ou sur des... des genres de Walkman spécialisés pour... pour ça.
'''Trou noir''' : Ouais, ouais. Et même Francis Cabrel, Gérard, je confirme.
'''Gérard''' : Oh non, mais ça je m’en fous, moi personnellement. Tu vois, c’est pas un chanteur qui m’intéresse. Guimauve ? Bon, toi je sais que ça... ça t’intéresse pas donc...
'''Guimauve''' : Non, non, moi j’en joue pas. Je préfère casser des assiettes et des verres, ça fait le même bruit.
'''Gérard''' : Bon ben alors tu vois, Guimauve, tu vas aller casser tes assiettes et tes verres chez toi. Parce que dans ces cas-là, je sais pas pourquoi qu’on t’a sélectionnée. Bonne nuit.
'''Manu''' : Il en faut qui aiment et qui aiment pas !
'''Gérard''' : Non mais attends, non mais attends ! Si toutes les questions je te les pose et que tu me dises : "moi j’aime pas, je préfère casser ceci cela", ben dans ce cas-là tu restes chez toi à écouter la radio. Ou si t’aimes pas les débats, tu zappes, tu vas sur une autre radio. C’est tout. Point final, à la ligne. En de bon entendeur, salut !
'''Phildar''' : Gérard ? Gérard, un débat c’est des pour et des contre !
'''Gérard''' : Non, non, mais attends ! Elle aime pas, elle aime pas. La première question... attends s’il te plaît, c’est moi qui fais les débats, c’est pas toi qui vas me commander, OK ? Donc la première question, t’as pas voulu me répondre. La deuxième, je te demande : "jouez-vous du synthé ?", tu me dis : "non, je préfère casser des assiettes". Alors si je te demande combien coûte un synthétiseur, tu vas me dire : "Ah ben je préfère acheter des assiettes et des verres" ? Alors dans ce cas-là, c’est pas la peine ! Alors si je te dis la quatrième : "connaissez-vous le fonctionnement des synthés ?"...
'''Gérard''' : Grille pas tes questions, Gérard !
'''Gérard''' : Bon alors... non, mais moi je veux pas une nana comme ça qui...
'''Guimauve''' :Non mais Gérard, laisse-moi parler 30 secondes et après tu jugeras par toi-même. Je ne critique absolument pas les synthétiseurs, je t’explique simplement que pour moi, que je casse des assiettes ou que je joue sur un synthé, ça fait exactement le même bruit.
'''Gérard''' :— Ouais, mais attends tu casses... le synthé, tu peux le faire réparer. Les assiettes, faut que t’en rachètes.
'''Phildar''' : C’est pas con. Là Guimauve, là, je crois que... Prends ça dans les dents.
'''Machatte''' : Sauf si t'as un peu de colle.
'''Gérard''' : Ouais, de la Superglue. C’est ça ?
'''Citron''' : Pas de marque !
'''Guimauve''' : Ouais, mais enfin, dis-toi que ça revient moins cher d’acheter les assiettes qu’un synthé, quoi.
'''Gérard''' : Ouais, bah justement, on verra ça tout à l’heure. Donc, Machatte ?
'''Machatte''' : Ouais, bah moi je joue pas de synthé, mais j’aimerais bien en jouer. C’est un instrument qui me plairait bien.
'''Phildar''' : La question c’était quoi, Gérard ? Ta question : est-ce qu’on peut jouer du synthé chez soi ?
'''Gérard''' : Jouez-vous du synthétiseur chez vous ?
'''Phildar''' : Mais est-ce qu’on peut jouer du synthétiseur ailleurs que chez soi ?
'''Gérard''' : Si je demande "chez vous", pour l’instant j’ai pas dit où ! Je pose "chez vous", c’est tout.
'''Phildar''' : Ah d’accord. Mais tu vas... tu vas... Après, on peut peut-être par exemple savoir si on peut emmener un synthé, si c’est... on peut en jouer en plein air ?
'''Machatte''' : Ouais, on peut en jouer en plein air si ça est portable.
'''Gérard''' : De tte manière, si on en joue quand on fait des soirées, automatiquement le synthétiseur tu vas pas le laisser chez toi, tu vas l’emmener !
'''Phildar''' : Ah ouais ? Donc il est portab ?
'''Gérard''' : Ouais, voilà.
'''Reego''' : Sur IRC, il y a Vatou qui demande si le synthé fait autant de bien que le Synthol.
'''Gérard''' : Je vois pas du tout le rapport avec le Synthol et le synthé. C’est pas grave.
'''Phildar''' : Bah si, parce que le Synthol ça relaxe aussi bien que le synthé quand t'en joues.
'''Manu''' : Ça s’écrit presque pareil en plus, ouais.
'''Ongle de pied''' : Non, bah moi malheureusement j’ai pas l’occasion d’en jouer, mais c’est vrai que j’aimerais bien.
'''Tupu''' : Bah moi non. Tu sais, j’habite à Gap et je sais... bon... j’ai pas... j’ai pas le loisir de pouvoir... ''[bruit de notes de synthétiseur, diffusées dans le studio même]''.
'''Gérard''' : T’es dans une cabine téléphonique ?
'''Tupu''' : Je suis chez moi, je suis désolé.
'''Gérard''' : Ça, c’est bizarre. On vient d’entendre un genre de... de corne.
'''Machatte''' : Ouais, c’est le groove Fun.
'''Tupu''' : Ça doit être quelqu’un qui trafique dans les studios encore.
'''Gérard''' : Moué non, mais je me doute qui c’est. Mais c’est pas grave. Citron ?
'''Citron''' : Oui ? Alors moi, j’en joue pas chez moi, j’en joue chez ma tante parce qu’elle a un synthé. Donc, comme j’ai joué un peu de synthé, bah j’en joue chez ma tante.
'''Phildar''' : Ça se prête pas, un synthé, normalement.
'''Citron''' : Bah je sais, c’est personnel. Mais bon...
'''Gérard''' : De tte manière, un synthé... c'est comme tous les appareils électroniques, c’est que ça se prête pas. C’est comme une femme. Une femme, ça se prête pas !
'''Phildar''' : C’est-à-dire ? Tu prêtes pas ton tatou, tu prêtes pas ton portab...
'''Gérard''' : une femme !
'''Phildar''' : Mais non ! Mais tu dis : "tous les instruments électroniques ne se prêtent pas". C’est pas électronique, une femme !
'''Manu''' : Ça dépend lesquelles...
'''Gérard''' : Mais tu peux en mettre une sur Poupée Gonflable, pour toi, si tu veux. ''[bruit de synthétiseur]''. Ouais. Je me doute où que c’est maintenant.
'''Phildar''' : Ça doit être Trou Noir.
'''Gérard''' : Non, non, non. C’est pas Trou Noir. Tu vois, c’est Olivier de la pro qui est en train de me brancher le synthé que vous avez de l’autre côté. Me prends pas pour un con, tu veux ?
'''Phildar''' : Non, non, j'(oserais surtout pas.
'''Gérard''' : Non, non, mais tu m’y laisseras, d’accord ? Hein Olivier ? ''[Olivier rentre dans le studio]''.
'''Phildar''' : Olivier ! Olivier, il paraît que tu as un synthé là-bas ?
'''Manu''' : Il t’a grillé !
'''Reego''' : Pour en revenir au débat, la plupart des gens sur IRC préfèrent les 3T aux 5T.
'''Gérard''' : Je vois pas le rapport avec le débat. Donc alors maintenant...
'''Olivier''' : C’est au standard, ça se voit que c’est au standard. C’est un auditeur qui fait ça.
'''Gérard''' : Bah oui, c’est ça. T’as raison. Prends-moi pour un con aussi, toi !
'''Phildar''' : Bon, le synthé Gérard, pour toi alors : est-ce qu’il faut en jouer chez soi ou on peut en jouer ailleurs ? Ta réponse ? ''[bruit insistant de note de synthétiseur]''.
'''Gérard''' : Bon, celui qui s’amuse à ça, arrête, parce que ça commence à me prendre la tête !
'''Phildar''' : C'est chiant, en plus, il sait même pas bien jouer.
'''Gérard''' : Ça, c’est un truc, on peut le prendre, tu peux le transporter comme tu veux, à une condition : que là où tu veux jouer, t’as...
'''Phildar''' : une batterie...
'''Gérard''' : non, mais t’as la ville qui te donne le feu vert pour pouvoir brancher. ''[bruit de note]''. Alors celui... celui qui s’amuse à ça, qui s’amuse à faire ça, arrête ça parce que ça commence à me gonfler ! Je sens que tu auras pas les 10 questions ce soir, là ! Alors qu’il arrête tout de suite, ça vaudra mieux. Donc troisième : combien peut coûter un synthétiseur ? Bon Manu, tu vas me gérer ça parce que sinon je vais te gaufrer !
'''Manu''' : Oui, mais le problème c’est qu’ils me disent que personne n’a de synthé au standard.
'''Phildar''' : Ouais, non mais personne... ils se foutent de toi ! Ils se foutent de toi les auditeurs, Manu !
'''Manu''' : Non, mais c’est pas sûr non plus que ça vienne du standard. Ça peut venir de n’importe où.
'''Phildar''' : Non, non, non. C’est du standard, c’est sûr et certain. Gérard, c’est quand tu veux !
'''Citron''' : Je sais pas... entre 150 balles un bon ampli et puis 30 ou 40 mille balles un bon synthé.
'''Gérard''' : Non mais attends, tu sais ce que c’est un synthétiseur ?
'''Citron''' : Oui, oui, je sais.
'''Gérard''' : Alors c’est quoi ?
'''Citron''' : Bah c’est un instrument sur lequel tu fais de la musique électronique.
'''Gérard''' : Ouais. Et tu crois que ça vaut 150 balles ?
'''Citron''' : un bon Tampi oui, un vrai bon Tampi.
'''Gérard''' : Non mais là je crois... non, non, là je crois que tu te mets le doigt dans l’œil.
'''Citron''' : Ah bah écoute non, je pourrais t’apporter des preuves.
'''Gérard''' : Ouais, bah tu les envoies à la radio, y’a pas de problème. Tu pues ?
'''Citron''' : Toi-même.
'''Tupu''' : Je sais pas trop... moi tu sais, comme je te dis, j’habite un peu à Gap et donc j’ai... enfin je sais pas.
'''Gérard''' : Eun Citron ? Non, mais attends. Tupu. Quand je demande à Citron le nom de la personne... parce que ça c’est des... c’est des habituels qui ont compris les autres noms. Parce qu’hier ils étaient là. Ils étaient là : c’est Goldo, Arnett et Tony.
Ouais, non mais attends, des noms comme ça : ONgles de pied, machin... Faudrait quand même...
''Machatte ''' : vraiment parano, hein.
'''Gérard''' : Ouais, bah parano... Prenez des noms autrement que des noms qu’on a l’habitude d’employer parce qu’on veut... on veut jouer sur moi, OK ?
'''Phildar''' : Gérard il est pas parano, il est perno !
'''Gérard''' : Hein ? Alors maintenant réponds, toi. Tupu ?
'''Tupu''' : D’accord. Bah moi je sais pas, je pense entre 100 ou 150 francs. Mais des francs anciens, je sais pas trop exactement moi. Je suis pas de Paris, moi ! Je connais pas bien les prix. Je suis en haut dans la montagne, je connais pas.
'''Phildar''' : Non mais de toute façon, maintenant il faut se dire un truc : c’est qu’à Paris, on vend des synthés en euros.
'''Gérard''' : Non, non attends ! Pour l’instant l’euro ça sort pas encore. Ça sort pas avant l’année prochaine. Ongle de pied ?
'''Ongle''' : Bah écoute, moi j’ai pas vraiment d’idée mais je pense que ça doit tourner dans les alentours de 10 000 francs. Je sais pas du tout.
'''Gérard''' : Ah ! Enfin une... une qui répond à peu près à la question. Parce que les deux autres... mes genoux.
'''Phildar''' : On peut avoir des synthés d'occas aussi, on n’est pas obligé de l’acheter neuf !
'''Gérard''' : Attends, un synthé... tu vas trouver un synthé pour combien toi, d'occas ?
'''Phildar''' : Bah peut-être 150 balles !
'''Gérard''' : Bah ouais, t’as raison... Justement, y’en a un qui va pouvoir nous répondre après. Il va venir... il va venir et il va nous répondre. Machatte ?
'''Machatte''' : Ouais, bah on va dire 2000 roubles.
'''Gérard''' : Bon, alors toi... toi ça va être pareil que Guimauve : soit tu vas répondre correctement aux questions, soit tu vas virer !
'''Machatte''' : Bon allez, 15 000 francs, banco !
'''Phildar''' : On est loin du prix encore. Gérard.
'''Gérard ''' : Toi, ongle de pied, t’as dit 10 000 ?
'''Ongle''' : Ouais, dans les alentours... dans les alentours de 10 000.
'''Phildar''' : 10 000 ? Y’a combien de zéros ? Quatre ?
'''Gérard''' : Guimauve, si elle est encore là ?
'''Guimauve''' : Ouais, je suis là. J’espère que je vais pas te décevoir dans ma réponse, mais je dirais 5-6 000 francs.
'''Gérard''' : Ah bah d’accord. Ça, c’est un truc d’occasion pour moi.
'''Guimauve''' : Non mais tout dépend si tu prends un matériel de haut de gamme ou un matériel de gamme moyenne.
'''Gérard''' : Ouais, mais de toute manière, tout ça dépend de la perfection que vous pouvez avoir pour en jouer. On va demander à Trou Noir...
'''Phildar''' : Est-ce que tu pourrais expliquer ça, Gérard ?
'''Gérard''' : Non, non, mais on va finir !
'''Reego et Phildar''' : Au moins répéter... au moins répéter ta phrase parce qu’elle était très forte.
'''Gérard''' : tout ça dépend de la perfection que vous avez pour taper sur un synthé. ""{applaudissements du studio]''.
'''Machatte''' : Qu’est-ce que t’entends dire par perfection, Gérard ?
'''Gérard''' : Non, non mais... y’a... y’a... c’est pas évident. C’est un genre de piano, y’a quand même les touches noires et blanches, donc faut bien savoir prendre dessus. Y’a peut-être une question IRC ?
'''Reego''' : Sur IRC, ils me disent qu’ils connaissent Saint-Michel, Saint-François, mais ils connaissent pas du tout Saint-éthiseur.
'''Gérard''' : Bon bah ça... Trou Noir ?
'''Trou noir''' : Oui, donc bah moi, Gérard... ouais, t’es quand même pas loin du vrai. Les synthétiseurs, t’en as à bas prix. Bon, 150 francs c’est n’importe quoi, mais t’en as à 3500 et puis ça peut aller jusqu’à 50 000 francs. T’as Jean-Michel Jarre qui avait un synthé qui coûtait 750 000 francs dans ses débuts, aux époques des premiers albums.
'''Gérard''', ''[hurle]'' : Oh mais qui c’est qui s’amuse avec ça là ? C’est bizarre : quand je gueule, ça s’arrête !
'''Phildar''' : Ah bah oui, mais il peut pas t’entendre et jouer...
'''Gérard''' : Non ouais, je me doute d’où que ça vient. Olivier ?
'''Phildar''' : Ça peut pas être Olivier, Gérard, il est là.
'''Gérard''' : Attends... ouais, ouais. Dégage ! Non, non, dégage ! Je sais qui c’est qui a là-haut. Non, non. Dans ton studio y’a qui ? Y’a un synthé... y’a Max et Jean-Marie qui vient d’arriver. ''[sourire]''.
'''Phildar''' : Mais pas du tout ! Ils sont en train justement de préparer la soirée de la Loco de demain. Ils sont en train de mixer.
'''Gérard''' : Donc Trou noir, toi tu me dis à peu près... bah vas-y ?
'''Trou noir''' : Y’en a à tous les prix : ça commence... ça commence de 3 500 jusqu’à 750 000 francs pour le Fairlight que Jean-Michel Jarre a utilisé pour la Chine, par exemple.
'''Phildar''' : C’est comme les prostituées !
'''Gérard''' : Non, non, non ! Attends, parce que là faut quand même pas confondre synthé et pute... et une pute. Parce que la pute à 100 balles, t’as quelque chose ; dans un synthé pour 100 balles, tu l’auras pas.
'''Manu''' : Et puis surtout, elle fait pas le même bruit !
'''Phildar''' : Et puis un synthé, ça avale pas.
'''Gérard''' : donc c’est Trou Noir : t’aimes bien un peu Jean-Michel Jarre, toi ?
'''Trou noir''' : Ah bah oui ! Tiens, je vais même te dire un truc : j’étais le voir à un concert que t’étais même peut-être pas au courant, le 18 septembre. Ça se passait dans un salon d’une marque informatique que je vais peut-être pas citer à l’antenne.
'''Gérard''' : Ouais, je sais, il avait fait un salon au mois de septembre.
'''Trou noir''' : Ouais, c’était à la Porte de Versailles. Moi je l’ai vu, c’était sur invitation.
'''Gérard''' : Alors donc attends, je vais te... redonne-moi le...
'''Phildar''' : Ah ouais ! Parce qu’en fait, Gérard nous a amené un CD de Jean-Michel Jarre : Oxygène.
'''Gérard''' : Donc toi... toi tu dois connaître parce que comme ça fait sur synthé, tu connais à peu près tous les...
'''Phildar''' : tous les Oxygène.
'''Gérard''' : Il y a Oxygène, il y en a beaucoup.
'''Trou noir''' : J’ai l’Oxygène, j’ai même... j’ai tout ! Ouais, ouais. J’ai même l’oxyde de carbone, il y a tout.
'''Gérard''' : Non, non, non. Non mais attends, Trou Noir ! Je te parle de Jean-Michel Jarre. Parce que moi... moi, une question que je voulais poser... et c’est dommage parce qu’elle est pas... elle sera pas dedans mais on...
'''Tupu''' : Donc tu la poses pas !
'''Guimauve''' : Bah la pose pas.
'''Gérard''' : Si, si ! On va la poser. Donc pour moi, pour vous : est-ce qu’un synthétiseur comme Jean-Michel Jarre... parce que Trou Noir, toi qui l’as... qui l’as vu à peu près jouer, donc t’as vu qu’il jouait avec des gants. Il a un genre de casque.
'''Phildar''' : C’est pour pas se brûler ?
'''Trou noir''' : Ah non, non ! Quand il joue avec des gants, c’est quand il joue avec la harpe laser.
'''Gérard''' : Ouais bah... donc la harpe laser, donc c’est branché aussi sur synthé ?
'''Trou noir''' : C’est branché sur synthétiseur mais c’est très technique. Je vais pas faire un cours de technique à cette heure-là, c'est pas le but du débat.
'''Gérard''' : Non, non mais je te pose la question parce que toi je sais que apparemment t’es un fan de Jean-Michel Jarre comme moi, donc c’est pour ça que je voulais te demander.
'''Trou noir''' : Ah bah oui, oui. Non mais quand il met les gants et les lunettes, c’est pour la harpe laser. C’est pas de la frime ! C’est parce que la harpe laser, c’est quand même des lasers assez puissants et ça brûle un petit peu. Et puis bon, les lunettes pour la protection des yeux. Et ça déclenche des synthés par un système MIDI, mais c’est assez compliqué.
'''Machatte''' : C’est Machatte. Je voulais te poser une question : est-ce que tu penses que le synthétiseur c’est la musique du futur ?
'''Gérard''' : Ça, à l’heure actuelle, je ne sais pas parce qu’il faudrait...
'''Phildar''' : On n’est pas dans le futur encore.
'''Gérard''' : Non mais il faudrait voir s’il y a des personnes qu’en ont chez eux et qui pourraient nous le confirmer.
'''Trou noir''' : Ah bah moi j’ai des synthés chez moi !
'''Gérard''' : Bah ouais, non mais par exemple des gens qui ont l’habitude d’en jouer...
'''Phildar''' : ou qui ont déjà été dans le futur et qui savent si oui ou non les synthés existent là-bas !
'''trou noir''' : Dans le futur, je ne sais pas, mais certainement oui.
'''Gérard''' : Donc je vais poser la quatrième question et vous allez y réfléchir... y réfléchir, et on s’écoutera un disque. Donc : connaissez-vous le fonctionnement d’un synthétiseur ? Et on va s’écouter Gilbert Stradus avec "Oh bébé mets-toi de la crème sur les genoux". ''[Musique]''.
'''Gérard''' : Vous pouvez toujours nous appeler au 0800 70 5000... et donc il est 1h du matin. Et toujours le site Internet donc www.fr.
'''Reego''' : Et il y a environ... je vais demander aux gens de l’IRC de me dire combien il y a de connectés parce que je ne peux pas le voir. 527 connectés.
'''Gérard''' : Déjà la semaine dernière au premier débat on était... on n’était même pas à tout ça. Et on aura peut-être une surprise...
'''Phildar''' : D’ici une dizaine de minutes.
'''Gérard''' : D’ici 10 minutes on aura un spécialiste du débat sur le synthé, donc la personne en question donc... Jean-Michel Jarre. Et par contre s’il y en a qui s’y connaissent en synthé, donc n’hésitez pas à nous appeler. Manu se fera un plaisir de me gérer ça.
'''Manu''' : Pas de problème, je suis là, je vous attends.
'''Gérard''' : Donc quatrième question : connaissez-vous le fonctionnement d’un synthé ? Mais je vais répondre quand même à la question là tout à l’heure : "combien peut coûter un synthétiseur ?". Donc on va reprendre Trou Noir, Guimauve, Machatte, Ongle de pied, Tupu et Citron. Donc j’ai vu avec Jean-Marie K, comme il est... comme il est parmi nous là dans les studios pour une soirée spéciale... une soirée spéciale anniversaire du Star System. Donc j’y ai demandé... donc en fin de compte si... selon ce que vous voulez faire, c’est vrai que ça peut varier jusqu’à 750 000 francs.
Sinon... sinon on peut tourner entre 5 et 3 000 balles.
'''Machatte''' : Et en euros ?
'''Gérard''' : Non, non. 5... entre 5 000 et 3... entre 3 000, 5 000 et 750 000 francs. Pour... là 750 000 francs faut quand même avoir les moyens.
'''Machatte''' : En euros ça fait combien, Gérard ?
'''Gérard''' : Ça j’en sais rien !
'''Manu''' : Mais Gérard... Gérard, moi je voulais te demander : ça fonctionne à quoi un synthé ? C’est de l’essence ? C’est du...
'''Gérard''' : Non, non ! Truc électrique !
'''Machatte''' : Ça marche à piles.
'''Gérard''' : Non, non, ça marche pas à piles, désolé.
'''Citron''' : Le mien marche à piles !
'''Gérard''' : Donc ouais, bah tiens ! Il fonctionne à piles. Mais le mien il fonctionne pas à piles... le mien j’en n'ai pas ! Donc : connaissez-vous le fonctionnement d’un synthétiseur ? On va demander à Citron.
'''Citron''' : Oui ? Ouais bah t’appuies sur ON... Et après ça joue !
'''Gérard''' : Ah ouais ? D’accord. T’appuies sur ON, après ça joue ? Donc tu crois que... alors tu vas... t’appuies sur ON par exemple... moi j’appuie sur le Minitel "ON" et puis j’attends que... que le Minitel il fonctionne ?
'''Citron''' : Bah voilà ! Après tu joues, tu joues avec tes doigts.
'''Gérard''' : Bah alors tu dis : "j’attends qu’il fonctionne" !
'''Citron''' : Non, je dis : "après tu joues" !
'''Gérard''' : Bah ouais mais là tout le monde a entendu dans le studio ! T’as dit : "j’appuie sur ON et après j’attends que ça joue".
'''Citron''' : Ah non, et après j’ai dit : "après ça joue".
'''Gérard''' : Donc par contre, j’ai eu un... un petit sondage là en même temps. Donc on va... on va prendre Tupu juste après. La question : "que pensez-vous des synthétiseurs ?". Donc il y a 40 %... 40 % des gens qui ont... 40 % des gens ont dit qu’avec leur mob 103... allant plus vite... aller plus vite... aller plus vite ! Donc je vois pas le rapport là ! Je vois pas le rapport avec le synthétiseur.
'''Machatte''' : Tu te sers du synthé comme kit !
'''Gérard''' : Non, non mais attends ! Et une mob tu sais c’est quoi ? C’est une mobylette, OK ? Bon alors 60 %... non tu permets ? 60 % des gens ont dit qu’ils aimaient... qu’ils aimaient bien mais que Jean-Michel Jarre c’était de la merde en boîte. Alors là j’ai jamais vu Jean-Michel Jarre en boîte ! Bon ça pour moi je continue même pas. ''[il déchire le papier et le lance rageusement à la poubelle. Manu proteste]''. Non, non ! Non, non ! Non, non ! Ça tu vois... hop, voilà ! Enfin...
'''Reego''' : Gérard, deux secondes. Je voudrais préciser quelque chose aux gens de l’IRC : JMJ, JMJ c’est Jean-Michel Jarre. C’est pas les Journées Mondiales de la Jeunesse. Merci.
'''Gérard''' : Voilà. Alors donc, Tupu toi ?
'''Tupu''' : Moi je connais pas exactement bien le mode de fonctionnement mais je pense que ça doit être une histoire de multiplexeur, de bascule, de résistance en parallèle et de polymultiplier indexé. Ça doit être le genre de truc qui marche avec...
'''Gérard''' : Non mais attends ! Le synthé tu le branches sur courant, t’as même pas besoin d’une table de mixage. Tu branches ça, t’essayes de... avec les enceintes. Mais en fait faut avoir des bonnes enceintes parce que si tu prends des petites enceintes de caca, là je crois que tes enceintes elles crament ! Même ton appareil il crame derrière.
'''Tupu''' : Ça dépend de ce que tu utilises en série.
'''Gérard''' : Ouais, mais de toute manière on va pas préciser les marques.
'''Phildar''' : Non mais ça dépend... ça dépend si tu le branches ton synthé en dérivation aussi, ça c’est important. Tu vois la différence, Gérard, en série, en dérivation ou pas ? Je t’expliquerai après.
'''Gérard''' : On va écouter les questions sur l’IRC.
'''Reego''' : Il y a Ziwi qui te demande : vu que sur son téléphone il a des touches noires et des touches blanches, est-ce que son... et qu’il fait des sons quand il appuie, est-ce que c’est un synthétiseur ?
'''Gérard''' : Non !
'''Citron''' : Si, c’en est un !
'''Gérard''' : Ah bon ? C’est un synthétiseur ? Par exemple t’appuies sur une touche sur un téléphone, c’est un synthétiseur pour toi ?
'''Citron''' : Ça remplit... ça remplit le rôle d’un synthétiseur. Les touches noires, les touches blanches... ça fait de la musique ! C’est un synthé !
'''Gérard''' : Alors attends ! Moi j’ai un téléphone, quand j’appelle quelqu’un ça me fait pas de musique comme tu me dis !
'''Phildar''' : C’est très simple : les auditeurs ils ont des téléphones, ils ont qu’à essayer de nous faire un morceau avec leur téléphone !
'''Gérard''' : Ouais, bah on va voir. ''[chacun appuie sur les touches du téléphone, anarchiquement]''. Non, c’est pas un synthé.
'''Phildar''' : Si, c’est un son de synthé, ça !
'''Gérard''' : C’est bon, c’est bon... c’est bon, arrêtez ! Arrêtez ! Arrêtez ! Arrêtez !
'''Reego''' : J’ai reconnu, ils jouent la Marseillaise quand même !
'''Phildar''' : Donc c’est bon tu vois, ils t’ont fait... ils t’ont montré, ils t’ont fait l’exemple que... on peut se servir d’un téléphone comme synthé !
'''Ongle de pied''' : Moi Gérard, j’ai jamais eu l’occasion de toucher un synthé donc je peux vraiment pas te dire comment ça marche.
'''Machatte''' : Ouais, alors c’est tout simple : tu prends ton synthé Play-school, tu le branches sur le grille-pain, tu mets une biscotte dedans, dès que t’envoies la biscotte ça marche !
'''Gérard''' : Et si je mets ta connerie dans le grille-pain... dans le grille-pain... est-ce que... est-ce que ta connerie va ressortir ?
'''Tupu''' : Non, je crois que ça marchera pas, Gérard.
'''Machatte''' : J’ai un synthé Playskool si tu veux ! Bon j’ai plus de pile, j'ai plus de courant chez moi, bon, je m’éclaire à la bougie... est-ce que je peux...
'''Gérard''' : Attends ! T’as plus de courant et tu te permets de nous appeler, abruti ?
'''Machatte''' : Bah oui mais je t’appelle d’un téléphone Playskool que je branche sur le frigo !
'''Gérard''' : C’est ça, allez ! Eh, le frigo ça marche au courant, espèce de petit con !
'''Citron''' : Non, il pédale.
'''Tupu''' : Il peut très bien avoir des Vietnamiens chez lui qui pédalent !
'''Guimauve''' : D’après ce que je sais, je crois que c’est des composants électroniques. Tu vois, c’est des puces intégrées au synthé qui sont reliées par les électrodes au système central. Quand t'appuies sur les touches, t’as les sons qui se forment à l’aide d’un amplificateur d’écoute. ''[réplique ponctuée par des soupirs bruyants, de Phildar et des auditeurs, d'impatience]''.
'''Trou noir ''' : Ben oais, moi je connais le fonctionnement d’un synthé, mais tu veux savoir quoi exactement : comment ça marche ? Bah oui. Bah tu branches sur le courant, tu branches un ampli, une table de mixage, des bonnes... enceintes, comme tu dis, et t’appuies sur... bah voilà.
'''Phildar''' : Mais moi ce que j’aimerais bien comprendre, Gérard... j’aimerais bien que tu expliques aux auditeurs ainsi qu’à moi-même, c’est comment en appuyant sur une touche tu fais un son ?
'''Gérard''' : Mais ça c’est... c’est à toi de le gérer ! Pourtant vous en avez un, synthé !
'''Phildar''' : Bah oui mais ça m’explique pas comment ça marche !
'''Gérard''' : Mais alors... mais de toute manière vous avez différents sons donc c’est à vous de choisir ce que vous voulez. Non mais attends, attends, attends... toi ça fait combien de temps que tu travailles à la radio ?
'''Phildar''' : Je sais pas, mais je vois pas...
'''Gérard''' : Non mais attends ! Depuis le temps que tu es à la radio, le synthé tu le connais pas ?
'''Phildar''' : Oui mais moi j’en ai déjà fait !
'''Gérard''' : Mais attends ! Mais Max le matin, lui ça fait plus longtemps qu’il est à la radio, il connaît comment il fonctionne le synthé. Alors toi t’es à moitié cave ! T’es comme les auditeurs, t’es une cave, c’est tout !
'''Machatte''' : Gérard ? Gérard ? Gérard ? Je voulais savoir si tu te foutais le synthé dans le cul, est-ce que ça le faisait marcher ?
'''Gérard''' : Alors toi Machatte, tu dégages ! Au revoir pour toi. Bonne nuit.Ça y est, terminé pour lui. C’est même pas la peine qu’il revienne sous un autre nom.
'''Reego''' : Tu dégages ma chatte.
'''Gérard''' : Donc qu’est-ce qui vous plaît dans un synthé ?
'''Phildar''' : Son cul !
'''Gérard''' : Toi, fais gaffe parce que tout à l'heure tu vas dégager plus vite chez toi qu’autre chose, d’accord ? On va demander à Trou Noir : qu’est-ce qui me plaît dans un synthé ?
'''Phildar''' : Je parlais de cul, j’ai raison !
'''Trou noir''' : C’est sensuel, un synthé. C’est sensuel !
'''Gérard''' : Non mais qu’est-ce... non mais qu’est-ce... qu’est-ce qui te plaît toi dedans ?
'''Trou noir''' : Ah bah moi qu’est-ce qui me plaît, c’est les sons. C’est tout. Mais moi je te dis, je suis joueur de synthé donc c’est les sons, c’est fabriquer ses sons, faire sa musique et tout ça.
'''Tupu''' : Oui ? Moi je veux dire que ce qui est bien avec un synthé, c’est que vraiment t’en fais ce que tu veux : il t’obéit au doigt et à l’œil. Tu le manipules... c’est ça qui est vraiment... c’est ça qui est un peu jouissif, tu vois.
'''Gérard''' : Non mais attends ! Le synthé tu ne le manipules pas : c’est toi, c’est toi avec tes doigts, avec tes mains qui le fais fonctionner. Ne me dis pas de conneries !
'''Phildar''' : Il y a des programmes aussi : le synthé, en appuyant sur une touche, il marche tout seul, après.
'''Gérard''' : Ouais, mais ça... peut-être que... de toute manière il y aura sûrement une question là-dessus que je vais faire. Il y a peut-être une petite surprise.
'''Manu''' : Bah voilà ! La surprise que t’avais annoncée est arrivée. Donc tu peux dire bonjour au monsieur que... que tu idolâtres. Donc : JM ?
'''JPJ''', ''[la voix prétentieuse]'' : Oui, bonsoir. C’est Jean-Michel Jarre. Donc j’ai écouté le débat actuellement... bon en jouant quelques petits morceaux synthétiques, et j’en déduis que monsieur Gérard dit de Suresnes avait raison, puisque un synthétiseur fonctionne bien par courant électrique, et non pas à pile, comme j'ai pu entendre dans ce débat... Et ma foi, si vous voulez que je réagisse sur vos questions, il n'y a pas de problème.
'''Phildar''' : Déjà, je voulais quand même remercier Jean-Michel Jarre d'être avec nous ce soir.
'''JPJ''' : Oui, je sais, j'ai un emploi du temps très chargé, mais je me suis...
'''Gérard''' : Alors donc, une question que je voulais te poser : combien coûte un synthé ?
'''JPJ''' : Un synthétiseur peut coûter environ 150 000 francs.
'''Phildar''' : C'est un bon synthé. C'est le synthé dont tu te sers, Jean-Michel, quand tu fais des concerts ?
'''JPJ''' : Non, mais ça c'est le mien, je le paye exactement 20 millions de francs. Mais un synthétiseur d'occasion : 150 000 francs.
'''Tupu''' : Ça fait cher quand même. Je veux dire, pour moi, je sais que je pourrai jamais me payer un truc comme ça. Je sais que, bon, quelle que soit ma future vie, je pourrai pas me payer un truc comme ça. C'est beaucoup trop cher.
'''JPJ''' : Oui, mais c'est normal. Vous, vous utilisez du matériel de merde. Moi, je me sers de produits qui sont professionnels.
'''Gérard''' : Il y a une question IRC.
'''Reego''' : C'est une question pour Jean-Michel Jarre. Les gens de l'IRC se demandent si c'est le frère de Maurice Béjard.
'''Gérard''' : Je vois pas du tout le rapport avec la question sur les synthés.
'''Phildar''' : Excuse-nous Jean-Michel pour la question.
'''JPJ''' : Il n'y a pas de mal, il n'y a pas de mal.
'''Gérard''' : Donc, la question qu'on va poser aux auditeurs : donc, qu'est-ce qui vous plaît dans un synthé ? Donc on va demander... À Citron ?
'''Citron''' : Alors moi, ce qui me plaît, c'est que tu peux jouer de la trompette sans avoir besoin de savoir jouer de la trompette.
'''Gérard''' : Je vois pas... Je vois pas tellement le rapport avec...
'''Citron''' : Tu mets sur le programme "trompette" et tu joues du piano, tu pianotes, et ça fait de la trompette.
'''Phildar''' : T'as le son de trompette, en fait.
'''Citron''' : Tu peux faire de la harpe, tu peux faire des maracas, tu peux faire du triangle, tu peux faire, je sais pas moi, du piano. Tu peux faire du synthé techno, du synthé moins techno...
'''Gérard''' : Non mais, et là je pense que là t'es en train de nous citer pas mal de trucs. Donc ça, je pense que Jean-Michel pourra nous répondre là-dessus. Sur "techno", je me demande si on peut faire quelque chose de potab, même en House. (''[prononcé haousse]'').
'''JPJ''' : En Haousse ? Oui, c'est possible effectivement sur un synthétiseur. Mais techno, je ne pense pas. House, oui, plutôt oui. Après on rajoute des voix dessus et on peut faire quelque chose d'exceptionnellement bien.
'''Manu''' : Ongle de Pied est partie se coucher, excuse-moi. Et entre-temps, donc j'ai rappelé, comme t'as fait ton annonce tout à l'heure pour des gens qui s'occupaient de ça... Il y a Bernard, qui est responsable d'un magasin.
'''Phildar''' : Il était sur Minitel et on l'a rappelé.
'''Bernard''' : Allô, bonsoir.
'''Gérard''' : T'appelles d'où ?
'''Bernard''' : De Saint-Étienne.
'''Gérard''' : Et on écoute Fun sur...
'''Phildar, Bernard et Citron''' : sur une radio pareil. Sur la radio, sur la radio, ouais.
'''Gérard''' : Non mais, je demande à Manu la fréquence.
'''Manu''' : Attends, bouge pas, je te trouve ça. Bah, j'essaye...
'''Gérard''' : Donc Machatte elle est partie... Guimauve ?
'''Bernard''' : Je crois que ta chatte, elle est à l'accueil, non ?
'''Gérard''' : Gare à celui qui s'amuse à dire des conneries, parce que ça va virer ! Il va casser !
'''Guimauve''' : Moi j'ai pas dit de connerie, Gérard. Ouais, moi je t'ai dit : donc, c'est l'esthétique de la machine. T'as plein de touches, c'est vachement joli. C'est très esthétique, t'as des touches noires, des touches blanches et tout.
rd.Gérard Ouais, mais c'est ce que j'ai dit tout à l'heure, je pense.
rd.Bernard C'est Bernard, là. J'ai pas entendu la fréquence de Saint-Étienne.
'''Gérard''' : Non, moi non plus.
'''Phildar''' : La fréquence de Saint-Étienne, Manu ?
'''Manu''' : 86.3.
'''Bernard''' : Eh non, c'est 104.7.
'''Phildar''' : Ouais, ça a changé.
'''Gérard''' : Bravo Manu, hein !
'''Manu''' : Je sais pas si ça a changé.
'''Gérard''' : Si ça a changé, tu demandes à ce qu'on mette ton tableau à jour. Donc Bernard ?
'''Bernard''' : Oui, donc moi je tiens un magasin de Synthé Plus à Saint-Et'. Et je tiens à dire qu'il n'y a plus que des touches noires et blanches, parce qu'on peut les faire de couleurs différentes. Les gens peuvent demander aujourd'hui de faire des synthétiseurs à la couleur dont ils veulent, comme on fait l'immatriculation des voitures. Donc si on veut avoir les touches jaunes et... je sais pas moi, à la place des touches noires... on peut avoir les touches noires oranges...
'''Gérard''' : Non mais Bernard ? Je vois pas le rapport avec la question.
'''Bernard''' : Tu peux m'appeler Nanar, enfin bon, comme Bernard.
'''Gérard''' : Non non mais... Non non mais... Je vois pas le rapport. Parce qu'on parlait des touches noires... On a... C'est pas parce que j'ai dit qu'il y avait des touches noires et blanches sur un synthé... Je vois pas le rapport avec le thème du... le thème du débat sur les synthés. en jaune... en jaune... ou orange... orange...
'''Bernard''' : ou bleu... ou vert si tu veux. C'est pas grave.
'''JPJ''' : Gérard ? C'est Jean-Michel. Je voulais préciser que, moi je connais...
'''Bernard''' : C'est Bernard, pardon ! C'est Bernard ! C'est Bernard à l'appareil !
'''Gérard''' : Ouais, bah Bernard tu te calmes !
'''Bernard''' : Jean-Michel avait... Jean-Michel avait déjà acheté du matériel chez moi à l'époque quand il travaillait à Saint-Étienne.
'''JPJ''', ''[peu convaincu]'' : Oui, c'est vrai. Tu sais, on se connaît bien. Moi je voulais préciser d'ailleurs que, bon, moi je connais des joueurs de synthétiseur qui sont racistes et qui jouent que sur les touches blanches. Il fallait le préciser ce soir.
'''Tupu''' : T'es bien placé pour le dire, je crois.
'''Bernard''' : C'est pour ça ! C'est pour ça que des fois on m'a demandé à ce que les touches noires soient jaunes ou oranges.
'''Gérard''', ''[dépassé]'' : Voilà. Les jaunes, c'est des Chinois. D'accord ?
'''Bernard''' : Non mais, on fait pas d'humour là-dessus.
'''Gérard''' : Il y a une question... Il y a une question IRC ? Une question IRC ?
'''Reego''' : Non, non, pas du tout. Ils en ont marre des synthétiseurs, ça les fait chier.
'''Gérard''' : Ah bah ça les fait chier ? Qu'ils arrêtent et puis qu'ils aillent se coucher ! Ça me fera les vacances.
'''Bernard''' : Gérard ? Oui, donc c'est Bernard. Parce que moi je suis... donc je tiens un magasin où je ne fais que du synthé et de l'orgue, et j'ai entendu quand même beaucoup de choses assez absurdes ce soir. Heureusement que Jean-Michel Jarre est venu intervenir. Alors il est vrai qu'il y a des synthés qui peuvent coûter 150 francs, mais bon, ce sont des synthés qui ne contiennent plus qu'une note.
'''Citron''' : Oui, mais ça existe.
'''Bernard''' : Oui, mais seulement... tu peux choisir la note : Do ou Ré. Mais bon, ça ne te fait pas non plus le...
'''JPJ''' : Voire le La.
'''Bernard''' : Et effectivement, il y a des synthés qui coûtent très, très cher. Alors il y a aussi ce qu'on appelle les systèmes de disquettes incorporées en fusion. C'est-à-dire que là, par contre, c'est directement avec un ordinateur. Et là, ça coûte...
'''JPJ''' : La peu du cul.
'''Bernard''' : Oui, on parle en euros ou pas, non ?
'''Phildar''' : Non, pas ce soir. Bon, si Jean-Michel est d'accord on peut parler en euros. Gérard, on peut parler en euros ?
'''JPJ''' : Oui, on peut parler en euros ce soir, c'est important.
'''Phildar''' : Bon bah d'accord alors.
'''Bernard''' : Je peux préciser : ça vaut à peu près 150 000 euros. Donc on multiplie par 6, ça vous donne... Bon, c'est pas très très cher, il y en a pour 250 000 francs.
'''Gérard''' : D'accord, ok. Donc prochaine question. Donc : que peut-on rajouter comme musique sur un synthé ?
'''Phildar''' : Ah, c'est une bonne question ça.
'''Bernard''' : Pour 250 000 francs ça peut paraître cher, mais bon... mais...
'''JPJ''' : Gérard ? C'est Jean-Michel Jarre. Je peux répondre à cette question ?
'''Phildar''' : Peut-être que Bernard a pas terminé la question d'avant, je pense.
'''Gérard''' : Non non mais c'est bon, on va pas s'éterniser sur une question !
'''Bernard''' : Ça me semble cher, 250 000 francs, mais c'est vrai qu'il y a des gens qui viennent acheter pour 250 000 francs...
'''Gérard''' : Non mais attends ! Il revient sur la troisième alors qu'on est déjà à la septième !
'''Bernard''' : Non, mais c'était juste pour préciser quoi... La semaine dernière, il y a un curé qui est venu, qui voulait acheter un orgue... parce qu'on parle des synthés mais on parle pas des orgues...
'''Gérard''' : Mais qu'est-ce que j'en ai à foutre, moi, des curés ! Des... des curés qui ont de Camaret qui ont des couilles qui pendent, c'est tout !
'''Bernard''' : Vous êtes vulgaire.
'''JPJ''' : Oui, donc vous posez la question sur les... Avec un synthétiseur, on peut rajouter des bruits de pets, de rots, ou de tout ce qui s'ensuit, voire une chiasse ou quelque chose dans ce genre-là. On peut faire tout avec un synthétiseur.
'''Gérard''' : Bernard ? Bernard ? ''[silence]''. Bernard !
'''Bernard''' : Oui. Non mais je sais pas... Je suis un peu déçu parce que j'ai l'impression que le débat... Bon, moi je suis un responsable d'un magasin qui ne fait que du synthétiseur, et avec ce débat de ce soir, malheureusement, vous ne donnez pas une belle image de cet instrument qui est, comme l'avait très bien dit un de vos réalisateurs, l'instrument du futur. Et j'ai l'impression que vous en parlez comme si c'était une vieille harpe, alors que je trouve ça un peu dur pour tous les fans de synthétiseurs.
'''Phildar''' : Non mais Bernard, on va essayer de se rattraper. Gérard, il faut que tu remontes le truc, là.
'''Bernard''' : Non mais le problème c'est que, bon, c'est bien de faire un débat sur les synthétiseurs, mais quand on... en animateur, quand on ne connaît pas le sujet, je pense qu'il vaut mieux se taire...
'''Grard''' : Non, je connais pas le synthé ! Je connais pas la musique du synthé ! Non mais je connais pas la musique ? Non, presque pas.
'''Bernard''' : Mais tout à l'heure j'entendais, vous vouliez savoir comment fonctionnaient les sons de synthé... Je veux dire...
'''Gérard''' : Et alors ? Parce que c'est moi qui fais les débats, c'est tout ! Mais si ça vous plaît pas dans ces cas-là, vous faites une chose : vous raccrochez votre téléphone et vous changez de radio ! Vous écoutez... vous écoutez ça chez vous et c'est tout ! Ça sert à rien de réagir comme ça ! Guimauve ?
'''JPJ''' : Je pense que ce débat peut apporter beaucoup pour les novices en la matière du synthétiseur.
'''Phildar et Bernard''' : Complètement. Jean-Michel a raison.
'''Bernard''' : Vous demandiez des réactions quand même la réaction de spécialistes.
'''Guimauve''' : Moi personnellement, je pense qu'il n'y a pas besoin de rajouter d'autres instruments parce que le synthé, c'est quand même quelque chose d'assez complet.
'''Gérard''' : Non mais comme musique ?
'''Phildar''' : Guimauve, parle devant ton téléphone ma chérie.
'''Guimauve''' : Mais j'ose pas, je suis un peu timide.
'''Phildar''' : Ouais, mais fais-le quand même.
'''Bernard''' : C'est encore Bernard, là. Parce que on... on parle des synthés, mais on peut y faire des violons. On peut mettre des violons dedans. On peut mettre toutes les machines. C'est-à-dire qu'on peut mettre d'autres instruments pour en faire plus qu'un. Aujourd'hui, il y a des gens, des artistes qui vont mettre par exemple un bruit de... un bruit d'orgue dans le synthé, un bruit de violon, et qui vont faire des violons avec des synthés. Donc avec un synthé, on peut faire un morceau comme s'il y avait 150 000 instruments et 250 000 personnes.
'''Phildar''' : Non mais à ce compte-là, à ce compte-là Bernard et Jean-Michel — je pense qu'ils sera d'accord avec nous —, c'est qu'il faut avoir une remorque. Une remorque pour synthé.
'''JPJ''' : Oui. C'est une remorque qui est disponible exceptionnellement dans les magasins qui vendent des synthétiseurs...
'''Bernard''' : bah chez moi par exemple...
'''Phildar''' : Mais tu vends des remorques, Bernard ?
'''Bernard''' : À Synthé Plus oui...
'''JPJ''' : Je lui en ai déjà achetées plusieurs, moi.
'''Phildar''' : Fais pas trop de pub, Bernard, quand même ! Parce que Gérard, il va te choper.
'''Gérard''' : Tupu ?
'''Bernard''' : Toi-même !
'''Tupu''' : Oui, c'était quoi ta question ? Je suis désolé, mais j'ai...
'''Phildar''' : On parlait des remorques, des synthés.
'''Gérard''' : Que peut-on ajouter comme musique sur un synthé ?
'''Tupu''' : Bah je pense qu'on peut... on peut rajouter tout ce qui nous passe par la tête, quoi. ''[Bernard s'insurge bruyamment en disant un "non" sonore]''. Une sonnerie de voiture, enfin une sonnerie... n'importe quoi, non ? Moi je connais pas très bien, vous savez. J'aimerais bien... j'aimerais bien connaître un peu plus.
'''Gérard''' : Citron ?
'''Citron''' : Oui. Tu peux mettre des animaux qui font des bruits, ou tu peux mettre le bruit de la mer, ou tu peux mettre ce que tu veux. C'est tellement facile ! ''[bruyants soupirs d'impatience de Bernard et JPJ]''.
'''Bernard''' : Elle est toute naze, elle. C'est pas possible.
'''JPJ''' : Il faut la virer, elle ! Elle ne connaît rien !
'''Bernard''' : Non, moi dans mon magasin, Synthé Plus à Saint-Étienne...
'''Tupu''' : Pas de marque !
'''Gérard''' : Bernard, ça commence à bien faire ! Parce que je voudrais...
'''JPJ''' : Il faut le préciser, Gérard, car moi j'ai besoin de faire un peu de pub pour acheter des synthés dont je me sers.
'''Gérard''' : Ouais, mais toi... toi Jean-Michel, c'est pas pareil. Donc on va passer à une autre question.
'''Phildar''' : Non mais Gérard, t'es en train de bâcler le débat là ! Non mais c'est une erreur parce qu'il y a des mecs qui écoutent et qui sont intéressés par le synthé. On a des professionnels, en plus on a Jean-Michel Jarre quand même ! Bernard est là...
'''Gérard''' : Attends lui ! Lui, pour l'instant, il est en train de me sortir son truc de Saint-Étienne... On n'en a rien à foutre à Saint-Étienne...
'''JPJ''' : Vous pouvez m'appeler Jean-Mich'.
'''Phildar''' : Bon, Bernard ? Il faut que tu donnes envie à Gérard de continuer le débat et d'intéresser les gens du synthé.
'''Bernard''' : Moi ce que je peux dire, c'est que je l'invite à venir à mon magasin, à Synthé Plus.
'''Reego''' : Pas de marque !
'''Gérard''' : De toute manière j'irai jamais à Saint-Étienne, allez hop ! Quel genre de musique peut-on jouer sur un synthé ?
'''Bernard''' : Ah bah, du synthé !
'''Citron''' : Bah tout le monde...
'''JPJ''' : On appelle ça une musique synthétique, Gérard. Voilà.
'''Tupu''' : En fait, c'est quoi le nom de ton magasin ?
'''Gérard''' : Non mais attends ! Le nom du magasin, si vous voulez des renseignements, vous attendez hors antenne s'il vous plaît ! Merci !
'''Bernard''' : 8 Avenue du Maire...
'''Gérard''' : Ouais, bah alors Bernard, bonne nuit !,Hop ! Pour l'adresse c'est très bien. Lui, tu peux l'envoyer se coucher.
'''Phildar''' : Synthé Plus, 8 Boulevard du Maire à Saint-Étienne.
'''Tupu''' : D'accord, merci.
'''Bernard''' : Avenue du Maire.
'''Gérard''' : Non mais c'est bien pour lui. Hop ! Terminé pour lui. Comme ça il comprendra sa douleur aussi celui-là. Ça en fait déjà trois... ô c'est bien ! Trois dans un premier débat ! Faut le faire.
'''Trou noir''' : Gérard ? C'est trop noir ? Tu m'as pas laissé répondre à la question tout à l'heure, tu m'as un petit peu oublié à ta question d'avant.
'''Gérard''' : Que peut-on... que peut-on rajouter comme musique sur un synthé ?
'''Trou noir''' : Ouais, bah moi je voulais dire qu'on peut pas rajouter de musique sur un synthé. Un synthé ça sert à rajouter par-dessus de la musique normalement.
'''JPJ''' : Non c'est faux, monsieur !
'''Trou noir''' : Bah si ! Tout à fait... Maintenant on prend les vieux disques...
'''Gérard''' : Oooh ! C'est pas... c'est pas un champ de bagarre !
'''Trou noir''' : Maintenant on prend les vieux disques, on les sample...
'''Bernard''' : Ça c'est des boîtes à rythmes.
'''JPJ''' : Oui tout à fait, c'est des boîtes à rythmes. C'est même pas la musique électronique en elle-même.
'''Gérard''' : Non non, ça y est c'est bon ! On se calme !
'''Bernard''' : Parce que moi je tiens un magasin également qui s'appelle Rythme Plus.
'''Gérard''' : Non mais ça y est ! On se calme ! On se calme !
'''Phildar''' : C'est Bernard ou quoi, là ?
'''Bernard''' : Oui. Boîte à Rythme Plus.
'''Manu''' : J'avais repris un autre, mais je sais pas, je me suis fait blouser quoi...
'''Citron''' : C'est quoi la rue ?
'''Bernard''' : 17 Avenue du Maire également.
'''Gérard''' : C'est même pas la peine, il parlera pas lui ! Parce que je lui laisse pas la parole ! Donc la question suivante maintenant, c'est : quel genre de musique peut-on jouer au synthé ?
'''JPJ''' : On peut jouer de la musique synthétique, je viens de vous le dire ! C'est Jean-Michel. C'est-à-dire plusieurs styles de musique. On peut jouer de la techno comme de la House, comme du rock, comme du rap.
'''Manu''' : Oui, un autre professionnel du synthé qui s'appelle Tristan. Et j'ai pas eu le temps de lui demander d'où il...
'''JPJ''' : Ah je le connais aussi ! Bonsoir.
'''Phildar''' : T'appelles d'où Tristan ?
'''Tristan''' : De Lyon.
'''Phildar''' : De Lyon, d'accord. Et tu fais quoi ?
'''Tristan''' : Je travaille également dans la musique. Je travaille pour un magasin.
'''Gérard''' : Et la fréquence de Lyon ?
'''Tupu''' : C'est quoi le nom de ton magasin ?
'''Gérard''' : Non non mais c'est... on va pas commencer comme ça !
'''Tristan''' : Musique Plus à Lyon.
'''JPJ''' : Oui voilà, je connais bien lui aussi.
'''Citron et Guimauve''' : C'est quoi l'adresse ? a rue ?
'''Gérard''' : Bon... Citron ? Guimauve ? Je sens que pour vous, ça va mal se terminer...
'''Tupu''' : On n'a rien fait !
'''Tristan''' : Alors nous, on vend également des guitares électroniques.
'''Gérard''' : Non mais c'est pas... je crois que c'est pas le thème du débat. Donc c'est quel... quel genre ?
'''Tristan''' : On parle de la musique, on parle de synthé. Mais c'est la musique électronique ! Et il y a également des saxophones électroniques, des... même des accordéons, des accordéons électroniques ! Il y a même aujourd'hui le nouveau... comment on appelle ça ? ''[il fait le bruit voisé d'un instrument]''.l'harmonica électronique !
'''JPJ''' : Les flûtes à bec électroniques également !
'''Tristan''' : Voilà donc... bon bah moi je vous invite tous à venir à...
'''Phildar''' : Où ça ?
'''Gérard''' : Non non, il n'y a pas d'où ça ! Pas de pub !
'''Phildar''' : Pas de pub, Tristan fais gaffe !
'''Tristan''' : Moi je vous invite à Musique Plus à Lyon.
'''Gérard''' : Guimauve ?
'''Guimauve''' : Oui mais en fait... je ne coupe pas la parole, il est en train de parler !
'''Gérard''' : Non non mais maintenant tu réponds ! Tu réponds à la question, je te demande de répondre ! D'accord ?
'''Tristan''' : 6 rue du Général Leclerc.
'''Gérard''' : Alors lui, Tristan, terminé ! Lui ! Au revoir Tristan. Salut. Ça en fait 4, c'est bien. Continuez comme ça. Je crois que le deuxième débat, il n'y en aura pas !
'''Phildar''' : Ah tiens, c'est une nouvelle ça.
'''JPJ''' : Monsieur Gérard, vous virez toutes les... toutes les personnes qui sont intéressantes, qui parlent de synthétiseurs...
'''Gérard''' : Oauis, sans donner... sans préciser les adresses où qu'ils sont. Donc ça fait déjà le deuxième qui s'amuse comme ça. Donc moi j'aime pas trop.
'''JPJ''' : Ça leur rapporte beaucoup pour leur magasin.
'''Gérard''' : Oui mais peut-être... peut-être pour eux, mais pas pour moi !
'''Phildar''' : Je dois seulement te dire, Gérard, tu n'es pas très crédible par rapport à Jean-Michel Jarre qui est avec nous.
'''Guimauve''' : Oui, alors on peut faire de la musique techno... oui, la House, tout ça. Et on peut même faire de la musique classique. Et puis on peut faire un peu tous... tous les styles de musique. Il y a même la musique orientale maintenant qui se fait sur synthétiseur.
'''Gérard''' : Oui d'accord. Tupu ?
'''Tupu ''' : Moi je crois que, comme l'a dit Jean-Michel... et tout le monde l'a dit juste après : on peut vraiment jouer quasiment de tout. De la techno, de la House, de la synthétise... Rien à ajouter.
'''Gérard''' : Là on va sur l'IRC...
'''Reego''' : C'est juste une conclusion IRC.
'''Phildar''' : Bon, on va attendre un peu. Alors on va prendre au standard.
'''Manu''' : On va prendre Guillaume qui est musicien lui-même, qui voulait réagir.
'''Phildar''' : Joueur de synthé aussi, non ?
'''Manu''' : Oui oui oui, tout à fait musicien.
'''Gérard''' : Il est d'où ?
'''Manu''' : Il est de Limoges. Et la fréquence, je vais vous la dire tout de suite, à moins que Guillaume veuille la dire lui-même.
'''Guillaume''' : Je la connais pas.
'''Gérard''' : Alors tu habites Limoges et tu connais pas la fréquence de... de Fun Radio ?
'''Guillaume''' : Je suis pas de Limoges, je suis en concert en ce moment là-bas. Je travaille... Enfin mon nom d'artiste, c'est Bébert.
'''JPJ''' : Ah Guillaume ! Je le connais bien lui aussi.
'''Manu''' : 92.2 FM à Limoges.
'''Guillaume''' : On m'a dit que c'était 93.4 moi.
'''Phildar''' : Ah putain Manu ! Mais c'est pas vrai !
'''Manu''' : C'est lui qui fait une erreur !
'''Gérard''' : Vous faudrait peut-être accorder vos violons. Guillaume ? Guillaume ? Donc pour toi...
'''Guillaume''' : Alors moi je travaille dans un... Je peux juste dire que je travaille avec un groupe qui s'appelle "Les Électrochocs".
'''Gérard''' : Ouais, alors vas-y ?
'''Tupu''' : la rue s'il te plaît ?
'''Gérard''' : Non non mais sinon ça va... Je sens que de toute manière on va faire conclusion comme ça...
'''Guillaume''' : Moi je travaille dans l'électronique... Je sais pas que je... Moi je travaille sur un synthé Toyota 130.
'''Gérard''' : Voilà pour bien préciser la marque...
'''Guillaume''' : C'est important parce qu'il en existe plusieurs marques. Et c'est une marque que j'affectionne tout particulièrement. Moi j'ai testé plusieurs synthés et c'est vrai, je connais d'ailleurs Musique Plus là de Lyon, je connais bien...
'''Gérard''' : Mais ça on n'en a rien à foutre.
'''JPJ''' : Guillaume ?
'''Guillaume''' : Oui d'abord grand respect à Jean-Michel.
'''JPJ''' : Je passerai samedi prendre mes bons Tampi.
'''Guillaume''', ''[pris de court]'' : Oui...
'''Gérard''' : Non mais ça vous réglez votre popote hors antenne !
'''JPJ''' : Ah oui, mais je suis overbooké, il faut que je règle ça tout de suite...
'''Gérard''' : Donc Citron ? Donc toi ?
'''Guillaume''' : Vite, parce qu'elle est assez pressée.
'''Citron''' : C'était quoi déjà, excuse-moi, la question ?
'''Gérard''' : Quel genre de musique peut-on jouer sur un synthé ?
'''Citron''' : Toutes. Surtout la musique...
'''Guillaume''' : Faut que je fasse vite parce qu'il faut que je répète là. Magne-toi de poser des questions !
'''Gérard''' : Magne-toi de poser des questions... si je veux, Guillaume.
'''Guillaume''' : Tu peux m'appeler Bébert.
'''Gérard''' : Ouais non mais tu vas te calmer mon lascar parce que sinon tu vas aller vite répéter !
'''Guillaume''' : Je peux juste faire un peu de pub pour le groupe Les Électrochocs ?
'''Gérard''' : Non non non, il n'y a pas de pub à faire !
'''Phildar''' : Ils se produisent où ?
'''Guillaume''' : Ouais, donc le 27 octobre on reste à Limoges...
'''Gérard''' : Oh ! Tu... ''[il explose sur Phildar]'' : PUTAIN MAIS TU LE COUPES, TOI, CONARD ?
'''Phildar''' : Mais Manu ! C'est toi ! C'est toi qui gères les auditeurs !
'''Reego''' : Phildar, pas connard !
'''Gérard''' : Pauvre con va ! T'es vraiment une bite ! Une bite con ! Putain, c'est pas bon ! C'est pas vrai de devoir travailler avec une équipe de cons !
'''JPJ''' : Je crois que vous allez un petit vite en besogne, monsieur Gérard.
'''Gérard''' : Terminé ! Conclusion !
'''GUillaume''' : Orgue Plus à Paris pour mon frère !
'''Reego''' : Bon Gérard, je vais faire la conclusion de l'IRC. Tous les gens de l'IRC sont d'accord : ils savaient que tu étais un gros teaser, et maintenant ils savent que tu n'es pas sain.
'''Gérard''' : Voilà.— C'est bien. Donc Citron pour toi ? Oui conclusion ?
'''Citron''' : Oui, je vais continuer à jouer sur l'orgue de ma tante.
'''Guillaume''' : Ah non ! Faut jouer avec un Toyota 130 !
'''Citron''' : Ouais mais j'ai un bon Tampi moi, à 150 balles !
'''Guillaume''' : Tu viens de la part de Bébert ! Tu viens à Orgue Plus à Paris...
'''Gérard''' : Tu fermes ta goule !
'''Guillaume''' : Vous venez de la part du groupe Les Électrochocs, vous avez 5 %...
'''Gérard''' : Bon Manu ! Tu me le vires ! Lui c'est terminé !
'''Guillaume''' : 7 boulevard de Clichy ! Dans le 18ème !
'''Gérard''' : Il a été vachement viré ! Bravo Manu ! ''[il applaudit, rageusement]''.
'''Manu''' : C'est le standard tactile, j'y arrive pas...
'''Gérard''' : Oui oui oui, taleur je vais te taquiner quelque chose moi mon... poing où que je pense. Tupu pour finir ! Conclusion !
'''Tupu''' : Oui bah moi je voulais dire que j'étais très content quand même de parler avec Jean-Michel Jarre. Et je suis aussi content d'avoir plein d'adresses maintenant pour les synthés.
'''Gérard''' : Ouais mais vérifie bien ! Vérifie bien que c'est des bonnes adresses parce qu'à mon avis c'est des fausses adresses. Alors Manu tu dégages ! Tu fais pas le deuxième débat ! Je te veux plus au standard ! Tu peux prendre ton VTT...
'''Max''' : Non mais faites pas de pub comme ça !
'''Gérard''' : Tu prends ton VTT et tu te casses !
'''Manu''', ''[sans expression]'' : D'accord ! Ok !
'''Phildar''' : Allez Gérard ! Il y a Jean-Michel Jarre qui s'impatiente...
'''Guimauve''' : Ouais bah moi je vais continuer à casser mes assiettes !
'''Gérard''' : D'accord bah c'est bien, maintenant t'en rachèteras sur le marché la semaine prochaine. Jean-Michel Jarre, pour toi la conclusion ?
'''JPJ''' : Le débat n'a rien apporté vu qu'on a entendu un mec bourré comme vous qui a apporté des choses complètement abstraites envers la musique synthétiseur. Et je ne vous salue pas monsieur Gérard. Je vous mets une clé de sol dans le cul !
'''Gérard''' : Et bah c'est bien ! Vous pouvez garder vos musiques de naze alors et continuer !
'''Reego''' : On va pas l'écouter alors. On va pas l'écouter, il t'a insulté.
'''Gérard''' : Si, c'est prévu sur la fin du débat !
'''Phildar''' : Surtout toi, tu fais pas de conclusion !
'''Gérard''' : Bah moi conclusion... Conclusion c'est que toi, ouais, t'as d'habitude quand c'est Max ça se passe impeccable. Là tu m'as fait des conneries, tu l'as... t'as laissé les gens en parler.
'''Phildar''' : Mais c'est pas moi qui vire les gens, c'est Manu !
'''Gérard''' : Non mais lui ! Lui de toute manière il va reprendre son VTT, il va rentrer chez lui !
'''Phildar''' : C'est moi qui vais rentrer chez moi.
'''Gérard''' : Et puis toi aussi comme ça je vais être tranquille ! Comme ça Reego va passer au standard, et sur l'IRC on aura personne !
'''Reego''' : Ah si si, faut quelqu'un sur l'IRC.
'''Gérard''' : Ah non ! Personne à l'IRC ! Donc pour le deuxième débat...
'''Reego''' : Il y a 800 connectés, je peux pas les laisser !
'''Gérard''' : Donc conclusion c'est con parce que Manu tu m'as fait du boulot dégueulasse. Ça c'est un peu de ta faute.
'''Manu''' : Autant pour moi je suis désolé, je savais pas que ça allait partir en couille avec Jean-Michel.
'''Gérard''' : Mais non ! Mais non ! T'es jamais au courant, abruti ! La semaine dernière tu me fais du boulot, du bon boulot. Cette semaine tu m'as fait du boulot, tu me fais de la merde ! Maintenant si c'est pour me faire de la merde tous les jeudis, c'est pas la peine !
'''Manu''' : Je t'ai quand même eu Jean-Michel Jarre.
'''Gérard''' : Tu viens jusqu'à minuit et après minuit dès que tu me vois, tu te casses, ça vaudra mieux pour toi !
'''Phildar''' : Et au niveau du débat sur les synthés... Toi le synthé ?
'''Gérard''' : Moi le synthé c'est une musique que j'adore.
'''Phildar''' : C'est ta passion ?
'''Gérard''' : Moi j'aime bien la musique, c'est tout.
'''Phildar''' : D'accord. Donc le synthé c'est bien. Donc on va se quitter. Enfin, on va finir le débat avec un morceau de Jean-Michel Jarre. C'est lequel ? C'est toi qui as choisi. C'est la plage 2.
'''Gérard''' : C'est la plage 2. Et sur la plage 2 j'ai "Oxygène numéro 8". Et on se retrouve tout de suite après pour le deuxième débat qui va porter sur le harcèlement sexuel. Le harcèlement sexuel.
'''Phildar''' : Les numéros ?
'''Gérard''' : 0 800 70 5000. Et toujours l'IRC pour Fun Radio. Et 0 803 aussi 08 5000 au cas où le numéro vert ne fonctionne plus, bien sûr.
== Le débat sur le harcèlement sexuel ==
=== Contexte ===
Qu'on se rassure, malgré la lourdeur du thème, Gérard ne l'abordera pas sous cet angle. Le deuxième degré est la règle, l'absurde la norme, l'animateur dépassé par ses approimations. Bien sûr, sur une telle durée, le dérapage reste possible, et parfois on peut se demander si l'équipe ne perd pas le contrôle. Puor l'une des rares fois, ce sont les auditeurs eux-mêmes qui semblent réguler la situation et Gérard, par intuition sans doute, ne s'aventure pas trop loin en-dehors des limites acceptables, du moins à l'épqoue.
Le thème n'en reste pas moins actualisé, lancé notamment sur des feuilletons américains débarquant en France sur TF1. Adepte de ces reportages et de ces chaînes, Gérard se lance dans ce qui fait l'actualité.
Un fait radiophonique nouveau semble émerger ici : outre les rôles de l'équipe, où Reego fait tout pour rester sur IRC et les deux autres intervertissent selon leur envie, on remarque que Sandy, compagne de Gérard, participe désormais plus activement à la prodie dont il est l'objet. Longtemps silencieuse voire à ses côtés face aux plansanteries des autres, elle commence à y participer à sa manière, jouant alors pleinement un nouveau rôle qu'elle perfectionnera dans le temps.
=== Les personnages ===
* Franck Bargine : Max
* Igor : Reego
* Gérard Cousin : Gérard
* Phildar et Manu
* Olivier Bouchet : Olivier de la pro
* Mégane : Marmite
* Sandy Threadkell : Sifflet
* Frisbee (ancien Tupu)
* Axel : Bidon d'huile, Couscous
* Cassoulet (ancienne Dégage), devenant ensuite Casse-toi
* Laura : Point noir
* Goldo : Poupon
* Arnet : Focu, Mathieu
=== Transcription ===
'''Gérard''' : Et voilà, vous venez d'écouter Jean-Michel Jarre, donc Oxygène 8, et donc pour l'instant on va attendre qu'au standard on me donne les auditeurs, donc le débat, ça porte sur les harcèlements sexuels, alors donc on va déjà poser... comme on attend, je vais attendre encore un petit peu, donc la première c'est, que veut dire...
'''Max''' : Non mais on peut déjà accueillir les premiers là. Allô ? Qui est là ?
'''Phildar''' : Ouais bien sûr, alors on a Marmite, on a Frisbee, Cassoulet, on a Bidon d'huile, on a Point Noir.
'''Manu''' : Sinon, moi je peux peut-être dire un petit truc sur l'IRC, on est 858.
'''Gérard''' : Donc Marmite, bonsoir, donc on écoute Fun Radio à Rouen sur 104.8. Donc Frisbee's, 22 ans de Bordeaux sur 101.7, Fun Radio.
'''Frisbee''' : C'est exact, j'écoute sur Internet, c'est exactement ça.
'''Gérard''' : C'est pas sur Internet, c'est sur la FM, d'accord ? C'est pas du tout pareil. Cassoulet, Disneyland de Seine-et-Marne...
'''Phildar''' : Je gère Cassoulet, pour l'instant elle est pas là.
'''Gérard''' : Ah d'accord. Donc Bidon d'huile, on peut écouter Fun Radio...
'''Phildar''' : C'est Bidon d'huile qui a raccroché.
'''Gérard''' : Non mais hé, oh ! Tu vas pas commencer à foutre ta merde avant que je te gauffre, toi !
'''Manu''' : Moi je suis pas là, c'est la merde au standard.
'''Reego''' : C'est de ma faute, c'est la première fois que je fais le standard, excuse-moi Gérard.
'''Phildar''' : Donc Bidon d'huile est parti, et je suis en train de gérer Cassoulet. Et je rappelle des gens.
'''Gérard''' : Ah bah là, ça commence bien.
'''Phildar''' : On a Poupon, on a Poupon aussi. Bonsoir Poupon.
'''Gérard''' : Donc t'es d'où ?
'''Poupon''' : Je suis de Paris, je suis de Paris.
'''Gérard''' : Donc t'as quel âge ?
'''Poupon''' : J'ai 23 ans.
'''Gérard''' : 23, et on écoute... 101.9. Et on accueille aussi... On accueille aussi Point Noir. Alors donc, première question. Donc que veut dire le mot harcèlement sexuel ? On va demander à Marmite.
'''Marmite''' : Ouais, ça veut dire quand t'es harcelé sexuellement.
'''Gérard''' : Ouais mais... Que veut dire exactement ce mot ?
'''Marmite''' : Ouais bah ça veut dire que t'es un canon et puis tu te prends plein de mains au cul.
'''Gérard''' : Ouais non mais attends, t'es un canon, tu veux dire un top modèle ?
'''Marmite''' : Ah non, t'es un canon.
'''Gérard''' :Non mais attends, un canon, un canon, un canon, tu veux dire quoi dans...
'''Marmite''' : Bah t'es un canon, t'es super belle.
'''Gérard''' : Ah bah donc, je viens de te dire, un top modèle, tu me dis non.
'''Marmite''' : Ah non mais t'es pas forcément top belle.
'''Gérard''' : Bah mais attends, un canon pour moi c'est un top modèle, je suis désolé.
'''Marmite''' : Ah bah ouais d'accord, mais on n'avait pas le même mot alors.
'''Gérard''' : Bah oui mais un canon ça veut dire ça pour moi.
'''Phildar''' : J'ai récupéré bidon d'huile.
'''Gérard''' : Donc Cassoulet...
'''Phildar''' : Je vais trouvé quelqu'un d'autre.
'''Gérard''' : Ok, donc on n'a pas de cassoulet, c'est bon.
'''Phildar''' : C'est pas grave, je vais te trouver une choucroute.
'''Gérard''' : Bah tiens, on a une choucroute là, comme elle veut faire partie du deuxième débat.
'''Poupon''', ''[acclamant]'' : L'invitée mystère.
'''Frisbee''', ''[acclamant]'' : Le bulldog. Le bulldog.
'''Gérard''' : Le bulldog il t'emmerde. Tu vois, comme ça t'es tout de suite servi là toi. Alors attends, celui qui vient de dire le bulldog, maintenant tu vas répondre à la question. Ça va t'apprendre à ouvrir ta gueule. ''[silence]''. Allô ? Ouais bah qu'il réponde, alors c'est qui ? Entre Poupon, Point Noir, Bidon d'huile ? Non et c'est pas Point Noir.
'''Bidon d'huile''', ''[déformant la voix]'' : Ouais c'est Pierrot. Ouais c'est Pierrot qui a dit ça.
'''Gérard''' : Non mais attends, il sort d'où celui-là là ?
'''Bidon d'huile''' : Bah excuse, je suis arrivé, on m'a pas annoncé.
'''Gérard''' : Il sort d'où, il sort d'où lui ?
'''PHildar''' : Non c'est Bidon d'huile. Gérard, c'est le bordel quand c'est Reego au standard.
'''Gérard''', ''[poussant Reego vers le PC et Phildar dehors]'' : Bon allez, Reego, tu retournes là, non parce que là c'est le bordel. ''[cris de joie de l'équipe]''. Toi tu dégages, tu rentres chez toi.
'''Manu''' : Si je peux me permettre quelque chose, excusez-moi, on nous dit que uUn canon, c'est fun et on nous dit que le boulet, c'est Gérard.
pour répondre à la question c'est...
'''Gérard''', ''[à Phildar]'' : Alors toi, t'es fatigué, tu rentres chez toi. Parce que là... c'est le vrai bordel. Là c'est... Je peux pas, je peux pas commencer le premier débat... le deuxième débat, dans des conditions de merde. Alors Phildar, dégage chez toi, t'es fatigué. Allez hop.
'''Manu et Poupon, puis Bidon d'huile, acclamant''' : Manu au standard. Manu au standard. Manu au standard.
'''Gérard''' : Allez c'est bon, ça y est, on se calme. Phildar, tu rentres chez toi, t'es fatigué. Allez hop. Ça vaudra mieux. Alors donc, pour toi Marmite, toi, le mot harcèlement sexuel, pour toi c'est un canon. Donc canon, donc c'est comme j'ai dit tout à l'heure, c'est un top modèle, tu m'as démenti. Hein ? D'accord, on est bien d'accord ?
'''Marmite''' : Oui d'accord.
'''Gérard''' : C'est ta réponse. Frisbee.
'''Frisbee''' : Euh oui, je crois que l'harcèlement sexuel, ça doit avoir un rapport avec Bill Kington, non ?
'''Gérard''' : Non mais attends. Eh Frisbee. Que veut dire le mot harcèlement sexuel ? C'est pas de savoir si Bill Kington, il a été harcelé, ça on en a rien à foutre. On est bien d'accord.
'''Frisbee''' : Quand même, il a été harcelé quand même.
'''Gérard''' : Non mais attends, ça c'est son problème, c'est sa vie privée, c'est pas la mienne.
'''Manu''' : Gérard, on va accueillir le dernier auditeur, il s'appelle Sifflet. Allo ?
'''Sifflet''' : Salut.
'''Gérard''' : T'appelles d'où ?
'''Sifflet''' : De nulle part.
'''Gérard''', ''[sous les sifflets neutres du studio et des auditeurs]'' : De nulle part. Alors donc, la fréquence c'est nulle part, d'accord.
'''Poupon''' : Dis-moi Sifflet, je peux te siffler dedans ?
'''Bidon d'huile''' : Donc pour moi, le mot harcèlement sexuel en lui-même, pour moi, c'est les gens qui ont des problèmes à faire l'amour.
'''Gérard''' : Non mais attends. On te demande, je te pose la question parce que je commence à en avoir marre. Que veut dire le mot harcèlement sexuel ?
'''Bidon d'huile''' : Je viens de te le dire, c'est les gens qui n'arrivent pas à baiser.
'''Gérard''' :Non mais attends, toi t'es con.
'''Manu''' : Il n'a rien compris.
'''Gérard''' : Non, il ne comprend pas lui. Non mais attends, prends-le hors antenne et explique plus sur lui.
'''Manu''' : Je vais lui expliquer parce qu'ils ne sont pas capables.
'''Gérard''', ''[à Phildar, assis dans un coin]'' : Toi... t'es même plus capable de faire des débats correctement à part faire la réa, c'est tout ce que t'es capable de faire. Bidon d'huile ?
'''Manu''' : C'était lui, c'était lui. Je viens de le dire Gérard.
'''Gérard''' : Non c'était Frisbee qui ne comprenait pas.
'''Frisbee''' : Je suis toujours là. Mais je viens de répondre.
'''Gérard''' : Mais c'est quoi là ce bordel ?
'''Reego''' : Ah, ce n'est pas moi, je ne suis plus là-bas.
'''Gérard''' : C'est quoi là ce bordel ? Frisbee vient de répondre, bidon d'huile... Eh, il faudrait peut-être savoir.
'''Bidon d'huile''' : Mais je suis là Gérard.
'''Gérard''' : Alors pour toi ?
'''Bidon d'huile''' : Ouais, donc en fait, le harcèlement sexuel, c'est ceux qui sont harcelés sexuellement. C'est ceux qui sont, on va dire, comment je pourrais t'expliquer ça ? C'est par exemple, c'est comme l'affaire Big Clinton, voilà.
'''Gérard''' : Bon, non, je ne vois pas du tout le rapport. Point noir, tu es là toujours ?
'''Point noir''' : Ouais, je suis là. C'est persécuter quelqu'un physiquement et moralement pour avoir son cul.
'''Bidon d'huile''' : Ouais, c'est ce que je voulais dire.
'''Gérard''' : Ouais, mais toi, de toute manière, tu veux toujours dire ce que les gens ils répondent avant toi. Poupou ?
'''Poupon''' : Ouais, ben en fait, le harcèlement sexuel, c'est, tu as une fille, elle est là. Ok, après tu as un mec, il est là. La fille, elle se met comme ça. Et puis le mec, il arrive comme ça. Et puis il lui met là. Et puis la fille, elle dit ça.
'''Gérard''' : Oh non, ben attends.
'''Frisbee''' : C'est aussi dans l'autre sens quand même.
'''Poupon''' : Oh non, mais il peut y avoir des variantes.
'''Gérard''' : Attendez, il y a une question IRC.
'''Reego''' : Oui, sur IRC, on me demande pourquoi le harcèlement sexuel est-il sexuel ?
'''Gérard''' : Ça, tu vois, c'est une question qu'on m'avait demandée de poser et que je ne poserai pas parce que je ne vois pas du tout le rapport. Parce que si on parle de l'harcèlement sexuel, de toute manière, automatiquement, harcèlement sexuel est sexuel. Donc, je ne vois pas du tout la question de poser aux gens parce que si je demande à une personne de me répondre sur cette question-là, qu'est-ce qu'elle va me répondre ? Parce que c'est sexuel. C'est sexuel, c'est tout.
'''Frisbee''' : C'est Frisby, là. Je crois qu'on peut faire un harcèlement sexuel avec les pieds, par exemple.
'''gérard''' : Mais non, mais est-ce que t'as compris la question IRC qu'on a eue ?
'''Frisbee''' : Je crois. Répète-la-moi si je me suis perdu.
'''Gérard''' : Alors, la question, c'était est-ce que l'harcèlement sexuel est sexuel ?
'''Reego''' : Pourquoi est-il sexuel ?
'''Gérard''' : Pourquoi est-il sexuel ?
'''Point noir''' : Moi, je peux répondre. C'est Point Noir. Parce qu'il n'y a pas que l'harcèlement sexuel. Il y a moralement aussi.
'''Gérard''' : Mais attends, dans ce cas-là, pourquoi est-ce qu'il est sexuel si c'est sexuel ? Automatiquement, si on parle de l'harcèlement sexuel, de toute manière, on va parler de sexe. Donc, l'autre, avec sa question, je voyais pas le rapport.
'''Reego''' : Si, Gérard, regarde... Moi, sur l'IRC, c'est du harcèlement textuel.
'''Gérard''' : Oui, mais c'est pas pareil, toi.
'''Sifflet''', ''[sous le sifflement de Poupon]'' : Moi, je considère que l'harcèlement sexuel peut être vécu comme un viol. Parce que si la personne ou si la nana n'est pas consentante, c'est considéré comme un viol et comme un crime.
'''Gérard''' : Oui, alors, dans ces cas-là, moi, la question que je vais poser, parce que là, je pense que je vais pas faire toutes les questions, on n'aura pas le temps. Donc, moi, je vais déjà attaquer sur la 3. C'est pas grave sur la 2...
'''Manu''' : C'était quoi, la 2 ? C'était quoi ?
'''Gérard''' : Non, c'était que risque-t-on en pratiquant le harcèlement sexuel, mais ça...
'''Manu''' : C'est pas mal.
'''Gérard''' : Oui, alors, qui veut répondre ? Tiens, ben, Poupon ? Non, Sifflet, pardon Poupon.
'''Sifflet''' : Moi, je pense que les personnes qui font ça, qui violent des personnes ou qui font du harcèlement sexuel peuvent faire au moins de la prison et peuvent avoir aussi des amendes.
'''Gérard''' : Donc, je suis d'accord avec toi, Sifflet. Là, il y a... On m'a donné un... un sondage. Donc, alors, sur la question le harcèlement sexuel, donc, que pensez-vous du harcèlement sexuel ? Donc, il y a 20% des gens n'ont jamais fait l'amour. 30% des gens sont puceaux et 50% des gens sont vierges.
'''Bidon d'huile''' : Oh, Gérard ! Moi, j'avais entendu dire que 70% des gens étaient balance ascendant cancer.
'''Gérard''' : Alors, attends. Là, je vais te dire une chose. C'est qui qui vient dire ça ? Alors, Bidon d'huile, tu vois, ton nom, il porte bien. Bah, t'es vraiment bidon. Parce que là, tu viens de jouer sur le signe astrologique du chef. Il a pas entendu.
'''Bidon d'huile''' : J'ai entendu vierge. Donc, moi, je pensais que c'était le signe astrologique.
'''Gérard''' : Bah, ouais, attends. Et la main de ma soeur dans la culotte d'un zouave, c'est astrologique, ça ?
'''Bidon d'huile''' : Bon, ça, c'est ton problème, hein. ''[applaudissements]''.
'''Gérard''' : Alors, Bidon d'huile, adieu pour toi.
'''Reego''' : Gérard, il y a Devi1 sur l'IRC qui te demande, alors, est-ce qu'il y a des endroits spécifiques pour se faire harceler et est-ce que tu peux
donner les adresses ?
'''Frisbee''' : Je connais des adresses, oui.
'''Poupon''' : On parle pas de la vie privée.
'''Marmite''' : Loco ?
'''Gérard''' : Frisbeez, tu vas te calmer.
'''Frisbee''' : Bah, moi, j'ai dit qu'on parlait pas de la loco, moi.
'''Gérard''' : Marmite ou Point Noir, vous allez vous calmer toutes les deux parce que... Bon... Donc, que risque-t-on en pratiquant le harcèlement sexuel ? On va demander à Poupon.
'''Poupon''' : Ouais, bah, déjà, je voulais dire à Sifflet qu'il y a une différence entre se faire violer et se faire ploter les fesses, par exemple, tu vois, une main aux fesses ou un viol, c'est pas la même chose. Et deuxièmement, bon, bah, tu risques une bonne paire de claques, quand même.
'''Gérard''' : Ouais, mais attends, alors, moi, je vais te renvoyer la balle. Par exemple, si la personne n'est pas consentante et qu'elle n'est même pas capable de te mettre une claque dans la figure, comme tu viens de dire, et qu'elle porte plainte.
'''Poupon''' : Pourquoi ? T'as parlé de mettre la main aux fesses à des manchots ? Pourquoi elle peut pas me mettre de claques ?
'''Gérard''' : Non, mais attends, Sifflet, elle t'a bien dit, c'est entre ces deux trucs-là. Par exemple, si la personne ne peut pas, comment que tu vas faire ?
'''Point noir''' : Bah, au pire, ce qui peut arriver au gars, c'est de se faire du bien, quoi. S'il arrive à ses fins.
'''Gérard''' : Ouais, mais tu crois que en harcelant une nana dans la rue, tu crois qu'il va pouvoir coucher avec ?
'''Point noir''' : Bah, attends, Gérard, il y en a qui aiment ça.
'''Gérard''' : Bon, bah, attends, peut-être des nanas qui aiment ça.
'''Poupon''' : Bah, des mecs aussi, hein.
'''Marmite''' : Bah, ouais.
'''Gérard''' : Non, non, non, non, non, non, non, non.
'''Poupon''' : Moi je dis, s'il y a du physique, il y a des filles, il y a forcément des garçons avec. Elles sont pas toutes seules. Elles se reproduisent pas toutes seules.
'''Gérard''' : D'accord. Sifflet, u voulais peut-être répondre à la... sur ce qu'elle vient de dire, là, Point Noir ?
'''Sifflet''' : Euh, non, pas du tout, non.
'''Gérard''' : Non ? ''[Gérard se distrait par un gest de Manu]''. Euh... Oui ?
'''Manu''' : Couscous !
'''Couscous''' : Bonjour, Gérard. Bonsoir à tous. Gérard, j'aime bien tes débats.
'''Gérard''', ''[tentant un accent maghrébin très maladroit]'' : Salut, Couscous.
'''Couscous''' : Salut, Gérard. Ça va ?
'''Gérard''' : Ça va, ça va, Couscous. J'ai pas regardé ce matin, quand même, mais ça va, carrément. Alors, euh... Donc, Frisbee ? Donc, toi ?
'''Frisbee''' : Vas-y, pose-moi...
'''Gérard''' : Oh, non, mais attends, hé, oh ! Tu l'as entendue ! Je vais pas m'amuser, là, hein.
'''Frisbee''' : La deuxième ou la troisième ?
'''Gérard''' : Non, non, c'est la deux. Que risque-t-on en pratiquant le harcèlement sexuel ? Hop. En même temps, Couscous, tu réfléchis à la question, hein.
'''Frisbee''' : Je pense que c'est vrai. On peut passer devant les tribunaux et puis se faire emprisonner, quoi. C'est risqué, hein. Faut faire attention, hein. Faut vraiment bien prévoir ce harcèlement, hein. Sinon, bon, on risque, comme je t'ai dit, voire même de se faire, après, harceler en prison, aussi. Et ça, c'est plus...
'''Gérard''' : De toute manière, c'est ce qui est arrivé à je sais plus qui. Je veux pas citer de nom, parce que, de toute manière, ça me regarde pas.
'''Marmite''' : Tapi ?
'''Gérard''' : Non, non, non, non, non, non. Sur celui qui a voulu jouer le con avec ses enfants, c'est ce qu'il y a... Lui, il s'est fait prendre... Il s'est fait tabasser dessus. Marmite ? Donc, pour toi ?
'''Marmite''' : Tu risques gros et dans certains pays, tu peux même te faire couper les couilles.
'''Gérard''' : Ouais, non, mais ça, je pense... je pense qu'en France, c'est ce qu'on devrait faire sur ceux qui pratiquent ça sur les mineurs.
'''Marmite''' : Ça va pas ? Ah oui, sur les mineurs, mais ça, c'est pas du harcèlement sexuel.
'''Gérard''' : Non, mais alors, c'est quoi ? Moi, je vais te dire une chose. Alors, si c'est pas de harcèlement sexuel quand tu t'attaques sur un mineur, sur une mineure de 15-16 ans, alors c'est quoi pour toi ?
'''Marmite''' : Moi, je pensais qu'on parlait de harcèlement sexuel au travail.
'''Gérard''' : Non, mais attends.
'''Poupon''' : On parle de mains aux fesses, on parle pas de viol.
'''Gérard''' : Non, mais que risque-t-on en pratiquant le harcèlement sexuel ? C'est-à-dire, si tu t'en prends sur une jeune de 16 ans dans la rue...
'''Poupon''' : Mais arrêtez-le au standard, il faut qu'il arrête de parler de ça. Gégé, on parle pas des mineurs.
'''Gérard''' : Euh, Couscous ? Attends, attends, Couscous. Minitel. Pas Minitel. Oui, sur Internet.
'''Reego''' : Donc voilà, sur l'IRC.fanradio.fr, je le rappelle quand même, il y a Nesquik qui te demande si le harcèlement sexuel est une discipline olympique.
'''Gérard''' : Je vois pas du tout le rapport.
'''Poupon''' : Ceinture noire de karaté.
'''Gérard''' : Ouais, demande-lui s'il est pas ceinture noire de karaté, lui, pour dire des conneries comme ça.
'''Reego''' : Tu peux lui demander toi-même. T'as juste à dire. Tu peux lui dire dans le micro.
'''Gérard''' : Ben, tu réponds à la question : Est-ce que t'es ceinture noire de karaté pour me sortir des conneries ? Donc, Couscous pour toi.
'''Couscous''' : Ouais, ben moi, Gérard, je pense qu'avec le harcèlement sexuel, on peut prendre un grand coup de merguez dans la boîte à semoule.
'''Gérard''', ''[amusé]'' : Ça, ça m'aurait étonné que tu me sortes pas l'histoire de ta merguez avec ton couscous.
'''Couscous''' : Ah, ouais, il y avait longtemps que j'étais pas passé sur l'antenne.
'''Gérard''' : Eh ouais, mais si, t'es passé il y a quand même 15 jours.
'''Frisbee''' : Moi, je voulais dire que dans ton débat, là, quand même, c'était un peu... On se fait un peu chier, et puis, bon, je raccroche. C'est de la merde.
'''Gérard''' : Ah, ben, c'est bien, ça fait une place de libre pour les autres. Comme ça, si tout le monde pouvait me dire que mes débats, c'était de la merde, eh ben, dans ces cas-là, on fera plus de débats le jeudi. Moi je m'en fous hien. Moi, si tout le monde se plaint que les débats, c'est de la merde, dans ces cas-là, moi, je fais encore une question, à deux heures, je laisse la place à Rousseau, je rentre chez moi et...
'''Manu''' : Non, c'est juste qu'il était aigri, il était aigri, je sais pas ce qu'il avait.
'''Gérard''' : Votre patron vous a-t-il déjà harcelé ? Donc, voilà, on va revenir avec la question que Marmite m'avait posée en premier. Donc, voilà. Donc, je te pose la même question aussi, toi.
'''Marmite''' : D'accord. Moi, ouais, ça m'est arrivé, ça m'arrive encore, ouais. Mais j'aime ça, donc je dis rien, quoi, au contraire.
'''Gérard''' : Ah ouais, non, mais attends. Attends, dans ces cas-là...
'''Poupon''' : C'est une cochonne, c'est une cochonne.
'''Gérard''' : Non, non, attendez, attendez, attendez, attends, Poupou.
'''Poupon''' : Ouais, bah, c'est qu'elle aime ça, si elle dit rien, c'est que ça lui plaît, en fait.
'''Gérard''' : Bah, ouais, mais dans ces cas-là, pourquoi... Dans ces cas-là,
pourquoi qu'ils viennent se plaindre après...
'''Marmite''' : Je viens pas me plaindre, hein.
'''Gérard''' : Bah, ouais, mais dans ces cas-là, si t'aimes ça, c'est que t'as envie d'avoir plus que les autres qui travaillent avec toi, c'est ça ?
'''Marmite''' : Non, c'est pas ça, c'est que ça permet de coucher sans t'engager, quoi. T'as pas de mec, tu couches avec tes collègues, comme ça.
'''Gérard''' : Ouais, non, mais attends, dans ces cas-là, si tu couches avec ton patron, c'est parce que tu veux avoir un peu plus que les autres, c'est tout. Je suis désolé. Si, si, je suis désolé. Je suis désolé. Je suis désolé. Stop, stop, stop, Marmite.
'''Reego''' : Non, juste, vite fait, il y a Titus sur l'IRC, il demande ton patron ou ta patronne. Il a pas tort.
'''Gérard''' : Ouais, j'aurais pu préciser. Oui, Manu ?
'''Manu''' : Donc, à la place de Frisbee, qui a raccroché, on accueille Focu, il appelle d'Angoulême sur 92.4.
'''Gérard''' : Salut. 93.4, voilà. OK, donc... Qui c'est qu'il nous reste ? Bidon d'huile est parti. Donc, point noir.
'''Point noir''' : Ben, moi, c'est pas mon patron qui me harcèle, c'est moi qui le harcèle.
'''Gérard''' : Ben non, alors attends.
'''Poupon''' : Encore une cochonne !
'''Gérard''' : Ah non, non, attendez, attendez.
'''Poupon''' : Il y a que des cochonnes ! Mais si, l y a que des cochonnes ! Je suis désolé, regarde. Il y en a une qui se laisse faire et c'est l'autre qui harcèle son patron.
'''Gérard''' : Ouais, non, mais attends.
'''Poupon''' : Il y a que Sifflet qui n'est pas cochonne. Il y a que Sifflet qui est normale.
'''Gérard''' : Ouais, mais Sifflet, ça, c'est son problème, c'est pas le vôtre. Elle va répondre, elle.
'''Poupon''' : Le boss, il va être content.
'''Gérard''' : Qui ?
'''Poupon''' : Ben, rien, non, rien.
'''Gérard''' : Ben si, finis ta pensée.
'''Poupon''' : Ben rien, je sais pas. Sifflet, elle a peut-être pas de boss, c'est peut-être pour ça. Moi, c'est mon cas, en fait. Je suis chômeur, donc j'ai pas de patron. Ben, je peux pas me faire harceler, quoi. En fait, c'est mon problème.
'''Gérard''' : OK. Alors, attends. Point noir à 17 ans, c'est toi qui te fais harceler par un patron.. C'est toi qui harcèles les patrons à 17 ans ? Non, mais tu me prends pour qui, là ?
'''Point noir''' : Ben, pourquoi ? Je fais un contrat d'apprentissage dans une boulangerie, je travaille. Et mon patron, il me plaît, donc je fais du harcèlement sexuel.
'''Gérard''' : Ah ouais ? Ben, dans ces cas-là, à 4 heures... Attends, attendez, attendez. Dans ces cas-là, à 4 heures du matin, tu te réveilles et tu vas y ploter des... des coucouillettes alors qu'il fait sa baguette ?
'''Point noir''' : Non, non, non.
'''Couscous''' : Elle va lui ploter les pois chiches.
'''Point noir''' : Je le touche pas, je le provoque. Je le travaille au corps. C'est pas pareil.
'''Gérard''' : Non, mais alors, c'est pareil. C'est pareil, parce que tu... En travaillant sur le corps, tu peux descendre...
'''Couscous''' : Mais pourquoi tu lui plotes les pois chiches ?
'''Gérard''', ''[riant]'' : Le couscous, il a réponse à tout, hein. Poupon ?
'''Poupon''' : Ben, je t'ai déjà répondu, moi, je t'ai dit, j'ai pas de boss, donc au pire, je peux me faire harceler par la nana de l'ANPE, quoi. Mais, euh, non, je peux pas me faire harceler par mon boss.
'''Marmite''' : T'aimerais ça si t'avais une patronne ?
'''Poupon''' : Euh, si j'avais une patronne oui un patron pas des masses. Parce que je suis pas fan de l'usine à six fers, quoi, mais une patronne, j'ai pas... Pourquoi pas.
'''Sifflet''' : Non, je me suis jamais fait harceler par un patron, ni rien du tout.
'''Poupon''' : Oh, ben, c'est clair.
'''Gérard''' : Non, mais pourquoi ? Dans quel sens ?
'''Poupon''' : Ben, elle a pas de patron.
'''Sifflet''' : Bah, parce que j'ai jamais eu l'occasion...
'''Marmite''' : Elle travaille pas.
'''Focu''' : D'après moi, elle doit pas être bien belle.
'''Sifflet''' : Bon, toi, tu ferais mieux de regarder ta montre, hein.
'''Manu''', ''[applaudit]'' : Joli !
'''Gérard''', ''[riant aux éclats]'' : Je sais pas qui c'est qu'a voulu lui poser ce...
'''Couscous''' : Je pense qu'elle a une voix bien mignonne. Je l'inviterais bien à ma couscous party.
'''Poupon''' : Elle a l'air sexy, hein.
'''Gérard''' : Euh, Couscous, pour toi. Euh, votre patron vous a-t-il déjà harcelé ?
'''Couscous''' : Ben, moi, je travaillais à l'usine. Alors, mon patron, c'est un mec, et moi, j'aime que les grosses Fatma. Alors, je peux pas me faire harceler.
'''Gérard''' : Focu, pour terminer sur cte question...
'''Focu''' : Moi, Gérard, j'étais au standard avec Manu, j'ai pas entendu la question.
'''Gérard''' : Non, mais attends, ouais. Non, mais t'aurais pu lui expliquer la question.
'''Manu''' : Je l'ai calmé, j'ai pas eu le temps, tu viens de l'appeler, donc...
'''Gérard''' : Alors, Focu, pour la dernière fois, je répète la question. Votre patron vous a-t-il déjà harcelé ?
'''Focu''' : Euh... Non, j'ai pas de patron.
'''Gérard''' : Et donc, tu t'es jamais fait harceler ?
'''Focu''' : Ben non, parce que je suis mon propre patron, donc quand je me tape des branlettes, à la rigueur, je me harcèle tout seul.
'''Couscous''' : Ah là là, il est chaud comme la braise.
'''Gérard''' : Eh, eh, Focu, à mon avis, tu te tapes des branlettes avec tes secrétaires. Ah ben si, t'as quand même des secrétaires, si t'es patron.
'''Focu''' : Euh... Non, des secrétaires, mais mâles.
'''Gérard''' : Ouais, des mauvaises, d'accord. IRC, oui ?
'''Reego''' : Sur IRC, il y a Cab qui te demande s'il y a harcèlement sexuel quand on branche son synthé.
'''Manu''' : Rien à voir.
'''Gé"rard''' : Alors, la question, peut-on...
'''Max''' : On va réfléchir, vous allez réfléchir à la question.
'''Gérard''' : Vous allez réfléchir à la question. Peut-on dire que c'est un produit vendu en magasin ? Et on va s'écouter les gens débiles, Je respire la sardine. Et on se retrouve tout de suite après. Vous pouvez nous appeler au 0803 08 5000 et toujours le... IRC. IRC. www.fr funradio. A tout de suite. ''[Musique de I can get now]''.
'''Gérard''' : Et voilà, vous venez d'écouter les gens débiles, Je respire la sardine. Je ne sais pas si c'est vraiment ça comme titre. On nous a laissé ça, donc en... Il est parti, donc il nous a laissé ça. Donc maintenant, vous pouvez nous appeler au 0803 08 5000 et toujours le... L'IRC qui marche... Super bien, je crois. Combien de connectés, à peu près ?
'''Reego''' : On a dépassé les 800. J'espère atteindre les 1000 d'ici 3h du matin. Combien ? On me dit 989. On y est presque.
'''Manu''' : Joli !
'''Gérard''' : Attends, déjà, la semaine dernière, on était à 856.
'''Max''' : On bat les records, ce soir encore.
'''Gérard''' : C'est dommage que le Minitel ne fonctionne pas parce que je crois qu'à partir de 200 connectés, il n'y a plus personne.
'''Max''' : Ça a sauté. Une fois de plus.
'''Gérard''' : Ah ben alors, c'est dommage. Donc, on va récupérer Marmite. ''[silence]''. Marmite !
'''Max''' : J'ai allumé, hein. Oh !
'''Manu''' : Ouais, ouais. Ouais, pardon, pardon. C'est bon.
'''Gérard''' : Marmite. Rebonsoir. Point noir. Poupon. Sifflet. Couscous avec les merguez. Focu. ''[silence, Gérard répète trois fois]''.
'''Manu''' : Je lui répétais la question pour qu'il la comprenne bien.
'''Gérard''' : Non, non, mais quand je dis... On reprend et on n'attend plus. Focu, t'es là ? OK, c'est bon. Donc, la question, je ne vous la repose pas. Donc, maintenant, on va demander... Tiens, Focu, comme t'étais au standard, on va savoir ce que t'en penses, toi.
'''Focu''' : Moi, je ne suis pas trop d'accord, en fait.
'''Gérard''' : Alors, explique.
'''Focu''' : Ça ne peut pas être une marque.
'''Gérard''' : Non, mais attends. Je te demande d'expliquer. Si tu me dis que ça ne peut pas être une marque et que tu me fais un blanc, ce n'est pas la peine.
'''Focu''' : C'est tout. Non, mais je pense que ça ne peut pas être une marque parce que je ne vais pas acheter de harcèlement sexuel.
'''Gérard''' : Mais est-ce que c'est un produit vendu en magasin, c'est tout ? Je ne te demande pas si c'est une marque.
'''FOcu''' : Ben, si c'est un produit vendu en magasin, tu vas acheter du harcèlement, toi ?
'''Gérard''' : Je peux te dire, moi, je vais acheter du chewing-gum, je ne sais pas quoi, et dedans, on va me mettre du sperme et je vais manger ça. Bon, ben alors ? Et alors ? Et c'est un produit qui est vendu, quand même.
'''Focu''' : Je suis d'accord avec toi, mais tu ne vas pas aller dans un magasin et dire « bonjour, je vais acheter un petit peu de harcèlement et un petit peu de sexuel ».
'''Couscous''' : Ouais, ben moi, j'achète du harcèlement sexuel à l'épicerie de chez Bébert.
'''Gérard''', ''[tentant l'accent maghrébin avec un talent très imparfait]'' : Ouais, ok. Tu achètes le couscous, les pois chiches et les merguez ?
'''Couscous''' : Ouais, ouais, il n'y a pas de problème, genre.
'''Gérard''' : Le mouton et le poulet ?
'''Couscous''' : Il n'y a pas de problème, mais c'est quand tu veux pour qu'on fasse une couscous party et je te mettrai la merguez.
'''Sifflet''', ''[sousle sifflottement de Manu en studio]'' : Oui, je pense que ça peut être un produit vendu en magasin parce que on fait bien le viagra.
'''Gérard''' : Ouais, non, mais attends, toi, si tu commences à me bouffer les questions, je pense que tu vas passer...
'''Sifflet''' : Non, mais c'est vrai, Gérard, il existe bien le viagra, donc pourquoi pas...
'''Gérard''' : Non, mais ça, le viagra... Le viagra, c'est pour ceux qui sont...
'''Sifflet''' : Oui, ceux qui sont impuissants.
'''Gérard''' : Ouais, ben tiens, justement, tu peux bien en parler, du viagra, tiens. Voilà les deux thèmes de la semaine prochaine, on les a trouvés.
'''Poupon''' : Le viet et le gras ?
'''Gérard''' : Ouais, pourquoi pas. Poupon ?
'''Poupon''' : Ouais, ben le vieux gras, moi, j'aime pas trop, mais...
'''Gérard''' : Non, non, non, mais attends, ça, c'est pour la semaine prochaine, la question... Le débat, c'est pas pour cette semaine. Non, pour l'instant, c'est sur l'harcèlement sexuel, c'est pas sur le vieux gras.
'''Poupon''' : Alors, en supermarché, moi, je dis que vous avez rien compris, si tu veux trouver du harcèlement sexuel en supermarché, tu vas au rayon, je sais pas, poissonnerie ou légumes, n'importe quoi, et tu verras, ben, le chef de rayon, s'il met la main aux fesses, ben, aux vendeuses ou aux caissières, ben, là, il y a harcèlement, c'est tout. Non, mais attends, comment tu peux... C'est tout, c'est tout. Ben, écoute, le harcèlement, comment tu veux le trouver, sinon ? Forcément, il y a des mains qui plotent des fesses dans les supermarchés, donc il y a du harcèlement.
'''Gérard''' : Non, mais moi, de toute manière, une fois, je pense que, Sifflet, elle peut le dire, une fois, j'étais dans un supermarché...
'''Poupon''' : Et tu t'es fait ploter les fesses.
'''Gérard''' : Non, non, c'est pas ça, c'est qu'on était en train de boire de l'eau, parce qu'il y a... Il y avait de l'eau à dispo...
'''Poupon''' : Attends, attends, attends... Tu bois de l'eau, toi ? Je croyais que t'étais allergique ?
'''Gérard''' : Non, non, je bois de l'eau, tu vois, alors me prends pas les... Donc, Sifflet, elle peut te le dire, sans le faire exprès, c'est elle qui... Je sais pas comment j'y ai fait, j'avais pas envie de finir mon verre, et elle était juste derrière moi, je me suis retourné, j'ai balancé le verre dans la tête.
'''Les auditeurs''' : Tu la connais ? Tu connais Sifflet ?
'''Sifflet''' : Je me rappelle pas du tout, non.
'''Gérard'' : Tu t'en souviens pas ? Bah, c'est pas grave. Donc, à la question, comment faites-vous... Comment faites-vous... Comment vous vous faites harceler sexuellement ? Donc, il y a 10% de gens qui se font harceler sexuellement, qui se font harceler sexuellement par téléphone. Ça, c'est vrai que par téléphone, c'est... Ça, c'est... Je pense qu'ils auraient été un peu plus nombreux, ça aurait été mieux. 60% des gens se font harceler par courrier. Ça, j'en connais un qui est bien placé. Merci, chef, de mettre la super musique de boîte de nuit. 30% des gens se font harceler par des rapports. 1% des gens ont dit... « Ils me mettent sa b... dans ma ch... »
'''Poupon''' : Moi, j'aimerais bien avoir le numéro de téléphone du 1%, là.
'''Gérard''' : Ouais, bah... Bah, Manu, il va se faire un plaisir de te trouver ça.
'''Manu''' : Je vais te trouver ça, il n'y a pas de souci.
'''Gérard''' : Parce que là, je sais qu'il y en a une, pour l'instant, elle attend encore mon chef, là-haut. C'est grave, hein. Elle est grave, elle, encore, là-haut.
'''Reego''' : Gérard, sur IRC, il y a Siga qui te demande si le harcèlement est héréditaire.
'''Poupon''' : Impossible. C'est des histoires de famille, ça.
'''Gérard''', ''[avec réverbération]'' : Olivier ? Tu m'éteins ça avant que... Que je t'éclate tes petites lunettes. Vite ! OK ? Bon.
'''Reego''' : Bon, Gérard, t'as pas répondu à la question : est-ce que le harcèlement est héréditaire ?
'''Gérard''' : Ça, je peux pas savoir, parce que j'ai pas goûté à tout ça. Donc, point noir ?
'''Point noir''' : Écoute, moi, en magasin, franchement, j'en ai jamais vu. Par contre...
'''Gérard''' : Toi, tu travailles en boulangerie, donc en grande surface, ça m'étonnerait que tu puisses voir ça.
'''Point noir''' : Ouais, non, mais attends, je fais des courses quand même, quoi, je veux dire. Mais par contre, par correspondance, oui. En fait, on te vend des cours, donc c'est des cours qui sont payants, et tu payes après les résultats. Donc, si leur technique marche, tu payes, et si ça marche pas...
'''Gérard''' : Ouais, dans ces cas-là, on vient sur les 60% qui sont harcelés par courrier.
'''Point noir''' : Ah non, non, non, absolument pas. En fait, moi, j'ai fait appel à une société qui te vend des cours d'harcèlement sexuel, donc ils t'envoient une technique de savoir-faire, tout ça, donc ils t'envoient ça par courrier, donc tu suis à la lettre, toutes les instructions. Ensuite, quand t'as envie de harceler quelqu'un, comme moi, j'ai harcelé mon patron, ça a marché, j'ai payé, et quand la technique ne marche pas, tu payes pas. Et si tu veux, je peux te donner une adresse.
'''Gérard''' : Non, non, non, on s'en fout. On s'en fout. Mais attends, point noir, tu vas pas me dire que t'as payé ton patron pour te faire harceler ?
'''Point noir''' : Non, mais attends, tu captes vraiment rien, t'es grave.
'''Gérard''' : Attends, si je suis grave dans ces cas-là, t'as qu'à pas dire de conneries, parce que j'ai bien entendu dire que t'avais payé.
'''Manu''' : Gérard, elle a payé un organisme pour lui apprendre à harceler.
'''Gérard''' : Non, non, elle a payé aussi le patron. Bon, Marmite.
'''Marmite''' : Moi, une fois, j'ai piqué un truc dans un magasin, donc c'est pas bien, mais bon, je me suis fait choper, donc j'ai été emmenée au directeur, donc j'ai proposé de me harceler. Et comme ça, on a annulé la situation.
'''Poupon''' : Elle a pisté le vigile et ça se fait pas.
'''Gérard''' : Ouais, je pense. Non, mais ça, je peux vous dire une chose que je sais pas, parce que moi, j'ai jamais eu l'occasion de me faire harceler dans un magasin.
'''Marmite''' : Bah, t'as pas de chance.
'''Gérard''' : Bah, je préfère. Alors, moi, je préfère être tranquille que de me faire harceler par des emmerdeuses. Voilà. Donc, moi, c'est pas moi qui irais payer pour me faire harceler.
'''Poupon''' : Ouais, ça, ça s'appelle une pute, quand même.
'''FOcu''' : J'ai le droit de demander un truc ? Il y a Manuel sur Minitel qui demande si tu suces pour une binouze.
'''Gérard''' : Bon, alors, Focu, tu sais ce que tu vas faire ? Tu vas aller voir Manuel Standard parce que tu commences à me gonfler avec tes conneries.
'''Olivier''' : Il a raison, il a raison, c'est un message Minitel.
'''Gérard''' : Ouais, non, non, mais attends, les messages Minitel, pour l'instant, le Minitel, il y a plus de 100 connectés, donc il fonctionne pas. Donc, je vois pas pourquoi qu'il s'amuse à me dire des conneries comme ça. Donc, Focu, tu vas voir Manu au Standard. Si ça va pas, tu vas dégager. Donc, le harcèlement sexuel, peut-il être consentant ?
'''Coupon''' : Moi, j'ai un exemple. Je me souviens il y a quelques années, je me suis harcelé par une fille, donc une femme qui était ma patronne à l'époque, et elle sentait du con, donc elle avait le con sentant, ouais.
'''Gérard''' : Ouais, non, mais t'étais consentant ?
'''Poupon''' : Non, moi, j'étais juste d'accord.
'''Gérard''' : Ah, t'étais d'accord, donc tu te sentais consentant, tu te sentais bien dans ta peau quand elle t'a proposé ?
'''Poupon''' : Ah, je me sentais carrément con, ça c'est clair.
'''Gérard''' : Ah, bah ouais, d'accord. Focu, s'il s'est calmé ?
'''Focu''' : Oui, je me suis bien calmé. Donc j'ai pas pu entendre la question.
'''Poupon''' :Je vais lui répéter, il voulait savoir si t'étais consentant pour te faire harceler dans le sexuel, voilà.
'''Focu''' : Ah, oui, mais, bah, vu que moi, je suis mon propre patron, je peux pas être consentant ou pas, puisque j'ai pas ce problème-là.
'''Poupon''' : Bah, si, ta main droite, elle est d'accord avec ta main gauche quand tu te pignoles, donc t'es consentant.
'''FOcu''' : Mais, le problème, c'est... Non, c'est que j'ai pas de problème, en fait, puisque je suis mon propre boss.
'''Gérard''' : Ouais, d'accord. Donc, voilà. Poupon, c'est pas la peine d'essayer d'y faire comprendre parce qu'apparemment, il a l'air de nous prendre pour des cons.
'''Poupon''' : Bah, j'essaye de l'aider, quoi.
'''Gérard''' : Non, non, mais il nous prend pour des cons, donc... Allez, tu me prends quelqu'un d'autre à la place parce que ça vaudra mieux. On va pas s'amuser avec... Couscous ?
'''Couscous''', ''[après un blanc]'' : Ah, Rachida, sur la couscoussière, je lui mets un coup de chipolata, elle est consentante. Il y a pas de problème.
'''Gérard''' : Non, mais attends, parce qu'Olivier, il vient de reprendre la pro parce qu'il y en a un qui était crevé, donc il commence à s'amuser à me faire des conneries. Donc...
'''Poupon''' : Welcome back, Olivier.
'''Gérard''' : Donc, pour toi, Couscous, donc...
'''Couscous''' : Ah, il y a pas de problème. Moi, je suis toujours consentant pour faire l'amour, il y a pas de problème.
'''Sifflet''', ''[sous les sifflets du studio]'' : Non, je pense que le harcèement sexuel peut pas être consentant... Bon, ça va, là, vous me laissez parler, un peu ?
'''Gérard''', ''[hurle]'' : OH ON SE CALME ! Olivier, tu commences pas, d'accord ?
'''Olivier''' : J'ai rien fait.
'''Gérard''' : Non, non, t'as rien fait, à peine. Et les autres, vous vous tchalmez quand je pose une question à Sifflet, d'accord ?
'''Sifflet''', ''[sifflets des auditeurs]'' : Donc, je disais, non, le harcèlement sexuel peut être considéré comme... peut être consentant... Oh, putain, moi, j'arrête, hein. ''[elle raccroche]''.
'''Poupon''' : Oh là là ! Putain, elle a une belle voix, c'est dommage. Oh, les charmes, Antoine !
'''Marmite''' : Elle est pas conne, en plus.
'''Gérard''' : Et voilà. Merci, merci ! Merci pour celui qui s'amuse à faire ses conneries. Donc, là, elle a arrêté, c'est même pas la peine d'essayer de la rappeler, elle reprendra pas. Alors, point noir ?
'''Reego''' : Je voulais juste dire que sur IRC, tout le monde est content qu'il ait pu Sifflet.
'''Poupon''' : Appelez l'invitée mystère.
'''Gérard''' : Sur IRC, moi, je les emmerde que Sifflet soiye plus là, c'est tout.
'''Manu''' : Au standard, à la place de Focu, qui était tout bidon, on accueille Mathieu, lui, il s'est fait harceler sexuellement par sa patronne, et en fait, ça a fini par une belle histoire d'amour quoi, en gros.
'''Gérard''' : Non, mais attends, pour l'instant, on n'en est pas là-dessus, on est sur le consentement.
'''Manu''' : Je t'annonce... Ben oui, mais je t'explique ce qui s'est passé dans sa vie.
'''Gérard''' : Ok. Point noir ?
'''Point noir''' : Est-ce que tu peux me répéter la question, s'il te plaît ?
'''Gérard''' : Putain, mais vous allez faire ça jusqu'à 3h du matin, là ? Le harcèlement sexuel, petit L... peut-il elle consentant ?
'''Point noir''' : Euh, tout à fait, ouais. Ouais, moi, je pense que, ouais. Enfin, c'est un avis personnel, mais ouais, je pense, ouais.
'''Marmite''' : Ben oui, moi, oui, c'est clair. Oui, je suis consentante.
'''Gérard''' : Ça, de toute manière, je pense que les trois quarts des personnes sont toutes consentantes sur des problèmes, comme ça, hein. Euh, Mathieu ?
'''Mathieu''' : Oui, ben moi, j'étais complètement consentant, puisque j'ai eu, donc, un harcèlement sexuel de ma patronne, et ben maintenant, je suis marié avec.
'''Gérard''' : Et t'as quel âge, sans indiscrétion ?
'''Mathieu''' : J'ai 23 ans.
'''Gérard''' : Et t'appelles à elle d'où, sans...
'''Olivier''' : Indiscrétion ?
'''Gérard''' : Bon, Olivier, tu vas commencer par t'écraser, parce que tout à l'heure, tu vas dégager, ça va aller vite fait. Donc, t'appelles d'où ?
'''Mathieu''' : De Toulouse.
'''Gérard''' : De Toulouse, la fréquence ?
'''Mathieu''' : Ben, moi, je sais pas, parce que je l'écoute sur Internet.
'''Poupon''' : En 17.5.
'''Gérard''' : Ouais, ben, non, je pense pas, hein. Non, parce que c'est pas la première fois qu'on a des gens de Toulouse... Non, mais moi, je pense que, si je la demande à Manu, le temps qu'il la cherche, on verra. Alors, donc, moi, je peux vous dire que je me suis jamais fait harceler, donc, même le jour où ça arriverait, je sais pas si je serais consentant là-dessus. Donc, voilà.
'''Poupon''' : Pourquoi ? Ben, attends, explique-nous pourquoi.
'''Gérard''' : Ben, parce que je vais pas me faire harceler par n'importe qui, déjà, pour commencer.
'''Poupon''' : Ah, mais si elle est mignonne.
'''Gérard''' : Non, mais ça, ça dépendra de la personne. Donc, les animaux pratiquent-ils le harcèlement sexuel ? On va demander à Marmite.
'''Marmite''' : Ouais, les chiens. Il y en a plein, ils viennent sur moi, puis ils frottent leurs zigounettes sur ma jambe, c'est désagréable.
'''Gérard''' : Moi, je vais te dire une chose, Marmite, je pense que Point Noir... Point Noir, ça va être pareil.
'''Point noir''' : C'est surtout chez les bulldogs.
'''Gérard''', ''[cherchant à frapper Olivier, en entendant des sifflets ratés via sa bouche et du larsen]'' : Olivier, tu fais gaffe !
'''Olivier''' : Il y a Gérard qui m'attaque.
'''Gérard''' : Olivier, tu fais gaffe, c'est la dernière fois ! T'amuses pas à faire des conneries, toi.
'''Manu''' : Gérard ? On accueille Casse-toi à la place de Sifflet.
'''Gérard''' : Salut, Casse-toi. T'appelles d'où ?
'''Casse-toi''' : Et j'appelle de Seine-et-Marne.
'''Gérard''' : Et la fréquence, c'est 101.9. Donc, on va demander à Point Noir... Attends, Marmite, tu me disais, toi ?
'''Marmite''' : Que j'étais sexuellement harcelée par les chiens.
'''Gérard''' : Non, mais ça, je peux... Maintenant, il y a quand même trois filles. Trois filles et trois garçons. Je pense que... Les trois quarts du temps, les nanas, c'est quand vous avez vos règles. Et ça, je peux vous le dire, moi, j'ai le... Non, non, non, mais attendez, attendez, attendez. Je vais continuer. Moi, j'ai le chien de ma copine, donc...
'''Manu''' : Il se frotte toujours à ta jambe quand t'as tes règles, Gérard ?
'''Gérard''' : Non, non, non. Il va carrément sur sa sœur. Donc, je pense, à chaque fois, il va... Dès qu'elle a ses règles, hop, tu peux être sûr que t'as le clébar qui qui est là.
'''Marmite''' : Il suffit juste de te laver, Gérard. Tu sens pas, ça sent pas. Faut te laver, c'est tout.
'''Gérard''' : Non, mais c'est pas moi qui...
'''Marmite''' : Non, mais dis-le à ta belle-sœur.
'''Poupon''' : OU à ta meuf.
'''Gérard''' : Non, mais attends, ma meuf, elle t'emmerde, toi. D'accord ? Tiens, ben, Poupon. Donc, pour toi ?
'''Poupon''' : Ben, écoute, moi, bon, déjà, j'ai un gros problème. Je sais que tu vas pas être d'accord, mais moi, j'aime pas les animaux. Donc, je vais te dire, le premier clébar qui vient se frotter sur ma jambe, il prend un coup de savate, quoi.
'''Gérard''' : Non, mais alors, dans ces cas-là, je vais te dire une chose, que...
'''Poupon''' : Ça dépend du chien, ça dépend du chien.
'''Gérard''' : Non, mais t'es vraiment dégueulasse de dire ça, c'est tout.
'''Poupon''' : Si t'es un gros rottweiler, je le laisse terminer. Si t'es un caniche, je le zappe.
'''Casse-toi''' : Ah, c'est dégueulasse, là, franchement.
'''Poupon''' : Attends, j'ai pas envie de me faire spermer par un clébar sur la jambe.
'''Couscous''' : Ouais, Gérard. Moi, j'ai déjà vu deux dromadaires qui se frottaient la bosse, aussi. Ils étaient en train de se masturber, eux-mêmes. Dans le désert du Sahara, en plus.
'''Gérard''' : Attends, attends, hé, hé, hé, hé. À la place des dromadaires, il n'y avait pas des chameaux ?
'''Couscous''' : Oui, il n'y a pas de problème, mais c'est pas le même nombre de bosses, donc ça fait pas le même effet.
'''Gérard''' : Ouais, les chameaux, ils ont deux bosses ?
'''Poupon''' : Non, une, une, une.
'''Gérard''' : Non, ils en ont deux. Les dromadaires, ils en ont une.
'''Marmite''' : Cham, ça veut dire deux en arabe.
'''Mathieu''' : Ouais, bah moi, je pense pas que les chiens et les animaux sont capables de nous harceler sexuellement. Je pense que c'est pas...
'''Poupon''' : Ils ont tout ce qu'il faut, hein. Ils ont une quéquette, ça suffit, hein.
'''Gérard''' : Bah ouais, mais comment tu veux qu'ils reproduisent, alors ? Faut bien qu'ils aillent sur une femelle.
'''Marmite''' : En plus, ils arrivent à se la lécher.
'''Manu''' : Attends, moi, je sais qu'il y a déjà des chiens qui m'ont mis des mains au cul. C'est pas super agréable, quoi.
'''Gérard''' : Attends, un chien te met une main au cul toi ? Tu dirais qu'ils te mettent une patte, ouais.
'''Olivier''' : Moi, ça m'est déjà arrivé, un chien qui me fait un clin d'œil, par contre.
'''Gérard''' : Bon, toi... L'autre, quand il me dit qu'il y a un chien qui lui a fait un clin d'œil, vu qu'à voir ta tranche, ça m'étonne pas de toi, hein. ''[Manu et Olivier applaudissent]''. Toi, de tte manière, les premiers chiens que tu vois dans la rue, ils sont pour toi, hein. Casse-toi ?
'''Reego''' : Gérard, sur IRC, on me demande si tu t'es déjà toi-même harcelé sexuellement.
'''Poupon ''' : Avec ta main droite ou gauche ?
'''Gérard. ''' : Non. Casse-toi ?
'''Casse-toi''' : Ah, j'y crois pas, là, du tout.
'''Olivier''' : C'est quoi le débat, Gérard ? J'étais pas là au début.
'''Gérard''' : Non, ben, toi, les oreilles, c'est comme le cul, ça se lave. T'étais dans l'autre studio en train de faire le con, alors...
'''Poupon''' : C'est sur les animaux, les animaux.
'''Reego''' : Il travaillait.
'''Gérard''' : Oh, non, ben, il travaillait... mais il n'avait qu'à écouter. Et tu m'éteins ce son, parce que tout à l'heure, je vais te faire du... ''[Manu en écho]'' : Je vais te mettre une baffe. Alors, septième question... Manu, tu m'éteins...
'''Point noir''' : Je peux répondre, moi ?
'''Gérard''' : T'avais pas répondu, toi ?
'''Point noir''' : Non, j'ai pas répondu. Tu m'as posé la question, et puis tu m'as coupée en plein milieu.
'''Gérard''' : Ah, bon, ben, alors, vas-y.
'''Point noir''' : Donc, je voulais te dire que c'est vrai qu'effectivement, les chiens sont réputés pour faire du harcèlement sexuel, et surtout la race des bulldogs.
'''Gérard''' : Ouais, mais ça, c'est partout. Donc, je peux vous dire une chose, que j'ai jamais vu des animaux le faire, mais bon, peut-être qu'un jour, je m'en verrai. Donc, la question... Avez-vous déjà été harcelé ? Je pense que je l'avais posé, cette question-là.... Ouais, j'avais oublié de donner les sondages. Donc, il y a 55% des gens qui répondent qui ne sont pas bricoleurs. Donc, je vois pas le rapport avec le harcèlement. 40% des gens répondent qu'ils préfèrent le foot. Donc, je vois pas du tout le... Donc, je vois pas du tout le rapport avec le harcèlement sexuel.
'''Olivier''' : Ça, c'est les sondages.
'''gérard''' : Donc, 5% des gens répondent qu'ils s'en foutent de la politique. Je vois pas du tout le rapport avec le harcèlement sexuel. 0% des gens n'ont pas compris la question. Alors, s'ils n'ont pas compris la question... Donc, il y a 0% qui n'ont pas compris la question. C'est bien. Comme ça, ça me fait plaisir. Pour moi, c'est des Mongols. C'est des petits cons.
'''Olivier''' : Sur Minital, il y a Caroline DS qui dit qu'elle veut te voir à la Loco.
'''Gérard''' : Mais écoute, il n'y a personne.
'''Oivier''', ''[tournant l'éran vers Gérard]'' : Tiens. Regarde.
'''Gérard''' : Ah, il y a un connecté.
'''Olivier''' : Deux.
'''Manu''' : C'est les parents, Olivier, de toute façon.
'''Gérard''' : Donc, septième question. Avant qu'on fasse la pub. Avant qu'on s'envoie un petit disque. Alors, être harcelé sexuellement peut-il devenir une maladie ? On va demander à... Casse-toi.
'''Casse-toi''', ''[hilare]'' : Ah, pas du tout. Mais alors, ça n'a aucun rapport, quoi, je veux dire.
'''Poupon''' : Si, moi, je sais, moi, je sais, moi. Poupon, Poupon, Poupon. Bah, déjà, si tu penses que ça peut être une maladie, il faut que tu vois ça, en fait, avec ton boss, parce que ton boss, il a fait l'émission du dimanche soir, c'est Malade Nocturne. Et Malade Nocturne, c'est donc pour guérir, justement, la maladie du harcèlement sexuel.
'''Gérard''' : Non, mais attends, mon boss, mon boss, déjà, il a un nom, il s'appelle Max. Mais il n'a pas fait ça dans le but de faire chier... C'est tout.
'''Poupon''' : Mais je ne t'ai pas dit dans le but de faire chier, c'est pour soigner la maladie, c'est fait pour ça.
'''Gérard''' : Mais attends, mais ce n'est pas avec la musique que tu vas te faire harceler, espèce d'abruti.
'''Poupon''' : Mais non, ça guérit du harcèlement, et c'est pour ça que ça s'appelle...
'''Gérard''' : Ah ouais, tu crois que la musique ça guérit le harcèlement sexuel ?
'''Poupon''' : C'est une nouvelle thérapie New Age Goer, et ça 'appelle malade nocturne.<ref name="radio1"></ref>
'''Reego''' : Oui, il y a Nostradaminus... Il te demande s'il existe des traitements à base de médicalement.
'''Gérard''' : De médicament, non.
'''Reego''' : Pas de médicament, de médicalmants.
'''Gérard''' : Non, pas à ma connaissance. Mathieu ?
'''Mathieu''' : Moi, je pense que oui, ça peut être une maladie d'être harcelé sexuellement.
'''Couscous''' : Ouais, ça peut être une maladie, mais il faut consulter un bon médecin qui peut te traiter au Koskos pour que tu te soignes.
'''Gérard''' : Ouais, d'accord, avec les merguez, les pois chiches...
'''Couscous''' : Que la semoule.
'''Gérard''' : Pourquoi pas avec une carotte ?
'''Poupon''' : Non, mais il la fume, la semoule, ou quoi, lui ?
'''Gérard''' : Non, mais attends, il fait bien et...
'''Poupon''' : Il habite dans une couscoussière ?
'''Gérard''' : Restez quand même polis, parce que c'est quand même bien qu'il y ait un mec comme lui, au moins pour nous donner un peu d'ambiance dans les débats, parce qu'avec vous, je crois qu'on s'ennuierait.
'''Olivier''' : Je peux t'en mettre, si tu veux, de l'ambiance.
'''Manu''' : Et pas que de l'ambiance.
'''Point noir''' : Moi, je pense pas que ça peut devenir une maladie, par contre, je pense que ça peut devenir un remède.
''' ''' : Moi, ça me rend malade quand je me fais pas harceler, ouais.
'''Gérard''' : Bon, ben, toi, c'est... C'est carrément... Ça, c'est carrément une maladie. C'est une maladie pour toi. Ouais, ben, toi, si t'en as pas, t'es malade.
'''Marmite''' : Ben, carrément, ouais.
'''Gérard''' : Donc, plus t'en as, plus t'en veux.
'''Marmite''' : Ben, plus j'en ai, plus j'en ai, plus j'en veux, ouais.
'''Gérard''' : Ouais, mais plus t'en... Si t'en as pas, ça devient grave. C'est comme de la drogue.
'''Poupon''' : Tu la roules, tu la fumes ?
Mais attendez, attendez, il y a une question IRC.
'''Reego''' : Oui, c'est une question, Gérard. Alors, attends. Est-ce que lorsque l'on pense à toi, Gérard, c'est du harcèlement mental ?
'''Mathieu''' : C'est clair.
'''Poupon''' : Ça grille au moins deux neurones.
'''Gérard''' : Ça, ça dépend des nanas, et c'est leur problème. C'est leur problème, c'est pas le mien, et c'est tout. Donc, je pose la huitième. Pourquoi que les gens ont peur de parler de ce problème, et on va s'écouter les poules qui puent avec... J'ai un œuf pourri dans le trou des fesses, et vous pouvez toujours nous appeler au 0803 08 5000 et toujours le Minitel et à tout de suite. ''[Musique]''.
'''Gérard''' : Suite des débats du jeudi avec Gérard, donc il est 2h31 et on vient de s'écouter les poules qui puent avec... J'ai un œuf pourri dans le trou des fesses et on va récupérer Marmite... ''[tout le monde dit Allô, cacophonie, n'entendant pas Gérard, comme à l'époque de ce sketch. Après deux essais de parler sans succès, il explose]''. Bon, Olivier, tu me fais quoi, là ?
'''Olivier''', ''[lassé]'' : Je fais rien. Et voilà, c'est pour moi. Ça marche, là ?
'''Gérard''' : Marmite !
'''Marmite''' : Ah, salut ! T'étais où ?
'''Gérard''' : J'étais là, mais c'est Olivier qui s'amuse à faire le con. C'est pas grave. Marmite, donc, tu es toujours là ? Point noir ? Poupon ? Couscous ? Mathieu ? Et Casse-toi ? Donc, toujours là. Donc, huitième question. Pourquoi les gens ont peur de parler de ce problème ?
'''Poupon''', ''[la voix déformée par un effet métallique]'' : Mais de quel problème ? Il y a Dark Vader qui vient d'arriver.
'''Olivier''' : J'ai rien fait, moi, Gérard.
'''Gérard''' : C'est quoi ? C'est quoi, cette histoire de merde ? Donc, Casse-toi ?
'''Casse-toi''' : Oui, oui, oui, je suis là. Bah, écoute, je sais pas du tout, moi. Personnellement, c'est pas un problème pour moi d'en parler. Donc, si des gens n'en parlent pas, c'est que ça les gêne, je sais pas, j'imagine.
'''Mathieu''' : Bah, ouais, moi, je pense que c'est dur d'en parler, de harcèlement sexuel, quand même. Parce que si on a peur de se faire harceler, on a automatiquement peur d'en parler.
'''Gérard''' : Ouais, bah, ça, c'est un problème qui se passe à l'heure actuelle, c'est que personne veut en parler.
'''Marmite''' : Non, moi, j'en parle.
'''Point noir''' : Non, mais faut en parler, parce que sinon... personne n'est au courant.
'''Couscous''' : Bah, moi, j'en parle pas, parce que si j'en parle, si tu parles d'harcèlement sexuel, tu te fais forcément harceler sexuellement. Donc, j'en parle pas.
'''Gérard''' : Non, mais je vois pas, mais si... Bon, bah, toi, si tu te fais harceler sexuellement...
'''Couscous''' : Mais si j'en parle à une personne, imaginons, j'en parle à Bébert et Rachida, ils vont m'harceler sexuellement.
'''Gérard''' : Bah, non, si tu leur en parles, que t'as déjà eu des problèmes comme ça...
'''Couscous''' : Ah, bah, ça se voit que tu les connais pas, hein.
'''Gérard''' : Ah, non, mais... Mais ça, je connais pas tes problèmes, moi. Euh, Poupon ?
'''Poupon''' : Bah, écoute, les gens ont peur d'en parler, parce que c'est dangereux, c'est une maladie, et... Bah, y'a des médecins qui soignent ça, ya des psychologues, des harceleurs sexuels, des marabouts, tout ça.
'''Gérard''' : Non, mais si la personne a peur d'aller en parler à un psychologue ou autre, ça, c'est son problème.
'''Poupon''' : Non, mais si c'est une peur, c'est une phobie, si c'est un zubi, c'est sexuel, donc forcément, tu vas voir un sexologue.
'''Gérard''' : Ah, tiens, y'a une question, Colgate, alors là, elle commence à s'amuser. « Gérard, t'as déjà été harcelé dans un couscoussier par les merguez ? » Alors après, t'as « Gérard, t'es déjà harcelé... » ''[le sketch des gens qui n'entendent plus gérard se déclenche, les auditeurs disant allô de manière cacophonique]''.
'''Olivier''' : J'ai rien fait. Est-ce qu'on m'entend, moi ? Allô ?
'''Reego''' : Gérard, décroche ce micro, là, celui-là, il marche pas. ''[Gérard essaie de brancher et débrancher des micros, de manière aharchique]''.
'''Manu''' : Ça va marcher, là. Attendez, attendez, les auditeurs, ça va marcher, ça va marcher. Vas-y, parle, Gérard. ''[le sketch continue]''. Vous l'entendez, là, vous l'entendez, Gérard.
'''Olivier''' : Ça marche. Ça marche ! ''[Gérard prend un boîter de CD et le jette vers la tête d'Olivier qui l'esquive tant bien que mal]''.
'''Olivier''' : Jettes pas un CD !
'''Gérard''' : C'est toi qui déconnes !
'''Manu''' : Voilà, ça y est, ça marche. Parle dans ton micro, Gérard, parle dans ton micro. Vous l'entendez, là. Là, il va vous parler, il va vous parler, vous l'entendez, c'est sûr.
'''Gérard''' : C'est toi qui arrêtes pas de déconner depuis tout à l'heure. Poupon ?
'''Poupon''' : Ben, ce que je te disais, si t'as peur, t'as une phobie, ok ?
'''Gérard''' : Ah, ben, ouais, t'avais déjà répondu quand je t'avais dit... Point noir ?
'''Point noir''' : Ben, moi, j'ai pas peur d'en parler, au contraire, ça m'excite.
'''Gérard''' : à ton âge, je pense que j'irais voir quelqu'un pour en parler quand même, hein.
'''Point noir''' : Non, je préfère pas en parler, je préfère le faire.
'''Marmite''' : Ouais, ben, moi si, j'en parle, hein, je m'en fous, hein.
'''Gérard''' : Ouais, mais t'en parles dans ton entourage ?
'''Marmite''' : Ouais, moi, j'en parle à tout le monde, t'as vu, là, je t'ai appelé pour t'en parler, hein.
'''Gérard''' : Non, mais attends, c'est pas moi qui t'ai appelée, c'est au standard qu'on t'a appelée.
'''Marmite''' : Non, c'est moi qui t'ai appelé.
'''Gérard''' : Ouais, mais après, le standard t'a rappelée pour participer au débat.
'''Olivier''' : On l'a harcelée.
'''Marmite''' : Ils m'ont un peu harcelée toute la semaine.
'''Couscous''' : Ils l'ont harcelée téléphoniquement.
'''Gérard''' ''[effet déformant sur la voix]'' : Non, mais ça... Olivier fait gaffe !
'''Manu''' : Moi, je voulais juste rajouter que vous avez quand même harcelé le boss, quoi.
'''Poupon''' : Je vais te dire que le boss, on a été à deux doigts de l'enlever et de le torturer, c'est clair.
'''Couscous''' : Moi, je l'ai harcelé à coups de saucisse dans le derrière.
'''Gérard''' : Donc, neuvième question. Devrais-t-on créer une école sur le harcèlement sexuel ? On va demander ça, tiens, point noir, parce qu'à 17 ans...
'''Point noir''' : Ah, ouais, non, mais moi, je suis tout à fait d'accord pour cette initiative, ouais. Ah, ouais, il n'y a aucun problème. Bah, déjà, comme je te disais tout à l'heure, on fait des trucs par correspondance. Mais alors, si on ouvre une école, ah, ouais, moi, j'arrête la boulangerie et je vais dedans, quoi, c'est clair.
'''Marmite''' : Moi aussi, hein. Moi, je serai prof. Je serai prof, j'harcèle tout le monde, hein.
'''Poupon''' : Moi, je veux bien des cours particuliers, à ce moment-là.
'''Marmite''' : Bah, il n'y a pas de problème.
'''Couscous''' : Ah, moi aussi, hein.
'''Gérard''' : Non, mais attendez, attendez, attendez, attendez, attendez. Alors, Marmite, toi, t'es d'accord avec point noir, Poupon ?
'''Poupon''' : Bah, moi, je dis qu'effectivement, il faut des pédagogues pour faire des écoles, c'est clair.
'''Marmite''' : Des pédologues.
'''Couscous''' : Ouais, moi, je pense que ça serait bien, mais il faudrait que la professeure, elle soit bien roulée, hein. Ah, parce que sinon, il n'y a pas moyen d'apprendre, hein. Faut qu'elle écarte bien les cuisses, pour qu'on voit bien la foufoune, quoi.
'''Gérard''' : Non, bah, t'es vraiment un cochon, toi.
'''Point noir''' : Ouais, mais il faudrait qu'il n'y ait pas que de la théorie, il faudrait qu'il y ait de la pratique aussi.
'''Marmite''' : Bah, évidemment.
'''Mathieu''' : Oui, alors moi, je pense que ça serait une bonne initiative de faire une école sur le harcèlement. Puisque, comme ça, je pourrais être professeur et je pourrais faire mumuse avec des petites demoiselles.
'''Casse-toi''', ''[pendant le son de quelqu'un qui a raccroché]'' : Bah, écoute, moi, Gérard, je suis tout à fait d'accord.
'''Marmite''' : Elle s'est cassée.
'''Reego''' : Pourquoi tu lui dis casse-toi ?
'''Manu''' : Non c'est pas elle, c'est une autre... Je ne sais pas, il l'a pris pour lui, quoi. Je vais le rappeler, je crois que c'est Couscous, en plus. Non, il n'est plus là. Il a mal pris, ce que tu lui as dit.
'''Gérard''' : Bon, donc, moi, je peux vous dire une chose, des écoles, je ne voudrais pas que ça existe. Ouais, non, pas avec les profs, hein.
'''Poupon''' : Attends, je vais te dire, s'il y avait des cours de quéquette à l'école, les lycéens, ils ne seraient pas en grève, hein. Attends, ils feraient des heures supplémentaires en permanence et tout, tout ce que tu veux.
'''Reego''' : Il y a une bonne question IRC, de Kevin Klein. Gérard, comment reconnaître un harceleur potentiel ?
'''Mathieu''' : C'est trop compliqué pour lui.
'''Manu''' : C'est pas les harceleurs potentiels, en plus, c'est les harceleurs sexuels. Tu dis n'importe quoi, Reego.
'''Gérard''' : Non, mais même, de toute manière, là-dessus, je peux rien dire. Alors, dernière question.
'''Poupon''' : Déjà ? Attends, il reste encore 20 minutes.
'''Gérard''' : Bah non, bah... Après, on verra...
'''Reego''' : Moi, j'ai plein de questions sur l'IRC, si tu veux, Gérard.
'''Gérard''' : Est-ce que c'est du harcèlement sexuel si on fait l'amour ? Alors, Marmite ? Bon, toi... De toute manière, toi, t'es...
'''Marmite''' : Ouais, ouais, moi, j'aime tout, quoi.
''' ''' : Toi, t'es carrément branchéz à fond, là-dedans, hein.
'''Marmite''' : Bah, à fond, ouais.
'''Gérard''' : Ça te dérange pas ?
'''Marmite''' : Oh, non, non, non, rien ne me dérange.
'''Point noir''' : Oh, bah, moi, tant qu'il y a de la vie, tout va bien.
'''Gérard''' : Oh, bah, toi, à 17 ans... À quel âge que t'as perdu ta...
'''Marmite''' : Ta petite flamme ?
'''Gérard''' : À quel âge que t'as commencé tes relations ?
'''Point noir''' : À 14 ans.
'''Poupon''' : Eh les filles, j'espère que vous serez demain à la Loco. hein.
'''Gérard''', ''[voix déformée par un effet sonore, il finit par jeter un casque vers Olivier]'' : À 14 ans ? 14 ans... Oh !
'''Reego''' : On jette rien, Gérard.
'''Gérard''', ''[hurle, effet se poursuit]'' : T'ÉTEINS ÇAAAAAA ! T'ÉTEINS OU JE TE BALANCE UN MICRO ?
'''Point noir''' : Je suis sûre que je t'en apprendrai des trucs.
'''Gérard''' : Ouais, bah, écoute, moi, je dis, dans ces cas-là, on sait à quoi on s'expose. On peut perdre sa place de président, hein. On va pas parler de vie privée, mais tu sais très bien de quoi on parle.
'''Marmite''', ''[pendant un bruit d'un applaudissement par une personne, en continu]'' : Tu crois que Chirac...
'''Poupon''' : Bah, je veux dire, avec la gueule de Bernadette, moi, je comprendrais qu'il aille garceler ailleurs.
'''Gérard''' : Olivier, fais gaffe, parce que tout à l'heure, je vais te balancer quelque chose, toi. Tu vas comprendre ta douleur.
'''Manu''' : Excusez-moi, on retrouve Couscous. Il l'avait mal pris, mal pris, quand tu lui as dit, casse-toi, mais je lui ai expliqué que c'était pas lui.
'''Reego''' : Alors, attends, je vais retrouver, j'arrive plus à savoir où c'est. C'est Disco qui dit, si Adam avait pas harcelé Ève, on serait pas là.
'''Gérard''' : Ouais, bah, ça, peut-être.
'''Reego''' : Ah, bah non, sûrement.
'''Gérard''' : Bah, oui. Mathieu, pour toi ?
'''Mathieu''' : Donc, oui, je pense que le harcèlement sexuel, c'est faire l'amour, c'est sûr.
'''Casse-toi''' : Moi, je crois pas qu'il y ait de l'harcèlement là-dedans, parce qu'étant donné que c'est une entente entre les deux, moi, je crois pas, non, franchement.
'''Couscous''' : Ah, bah, ça dépend comment tu le prends et ça dépend comment tu le fais. En sodomie, moi j'aime bien. Moi, je crois pas que c'est du harcèlement sexuel. Du moment que tu fais l'amour, il n'y a pas de problème.
'''Manu''' : Par contre, Gérard, moi, j'ai une question pour toi. Est-ce que tu crois que quand on drague une fille, on peut considérer ça comme du harcèlement ?
'''Gérard''' : Non, non, non, non.
'''Manu''' : Parce qu'au début, t'insistes. Si elle veut pas, t'insistes. Ouais, ça, s'il te plaît.
'''Gérard''' : Non, mais je peux dire que t'as pas besoin d'insister.
'''Manu''' : Ouais, mais toi, c'est parce que t'es un sex-symbol que t'as pas besoin d'insister. Mais pense à tous les Tony, Arnett et Goldo comment ils rament.
'''Gérard''' : Chacun voit midi à sa porte et c'est tout. Ça, je vois pas du tout le rapport. Si la nana veut pas sortir avec toi, elle sortira pas avec toi, c'est tout. Donc... ''[bruit d'applaudissements d'une foule et le studio applaudit]''. Conclusion, Marmite ?
'''Marmite''' : Ben, conclusion, vive la bite.
'''Poupon''' : Mais pas déjà, attends, il reste un quart d'heure.
'''Mathieu''' : Non, mais c'est pas grave, après, on fait un mini-débat improvisé.
'''Poupon''' : Il reste un quart d'heure, Gégé, invente une question, improvise.
'''Mathieu''' : Un débat sur les portes clés, après, ça va être génial.
'''Gérard''', ''[la voix déformée]'' : Non, non ! On fait con... OLIVIER ! ''[il lui jette sa feuille à la tête, et le stylo]''. ÉTEINS-MOI ÇA !
'''Reego''' : Alors, à la demande des auditeurs, on a une petite question IRC de Compi Musique 8m com... c'est un peu long comme nom. Le harcèlement donne-t-il la chiasse ? Si oui, de quel côté ?
'''Mathieu''' : Du côté droit.
'''Couscous''' : De la fesse droite.
'''Gérard''' : Non, je vois pas du tout le rapport.
'''Olivier''' : C'est connu, pourtant.
'''Manu''' : Est-ce que, par exemple, la pilule Viagra incite au harcèlement ?
'''Mathieu''' : Bon, Manu, elle est nulle ta question, retourne en standard.
'''Marmite''' : Pas forcément, Manu, parce que moi, je prends pas de Viagra et j'harcèle, quoi.
'''Gérard''', ''[la voix déformée, il explose]'' : Non, mais ça, c'est le débat de la semaine prochaine. OLIVIER T'ÉTEINS ! Eh, dégage, dégage ! Je veux plus te voir, là !
'''Olivier''' : Ah, j'ai pas fait exprès.
'''Reego''' : Bon, en attendant, j'ai Davy1, Davy1, sur l'IRC, qui est allé voir la définition du harcèlement sexuel dans le dictionnaire. Et on y apprend que le petit Robert a harcelé la rousse.
'''Gérard''' : Donc, conclusion, Marmite ? On fait conclusion sur ce débat et c'est terminé, après.
'''Marmite''' : Ouais, ben, vive la bite. Et puis, prends... garde le sourire, Gérard. C'est important, là. Demain, je viens te harceler dans les chiottes de la loco.
'''Gérard''' : Ouais, ben, t'as raison. Tu verras comment tu vas être reçue avec moi, demain.
'''Marmite''' : Ben, d'accord. À demain.
'''Olivier''' : Dans les toilettes, hein.
'''Point noir''' : Ben, écoutes, moi, Gérard, honnêtement, t'es devenu ma proie. Je vais t'harceler, ça va être puissant, quoi. Je dis, ça va être puissant, parce que tu m'as donné l'envie de t'harceler. Et franchement, tu...
'''Gérard''' : Ouais, non, mais attends, moi, je sors pas avec des mineures, hein.
'''Point noir''' : Tu vas subir. Tu vas subir ce que jamais t'as subi, Gérard.
Tu vas pouvoir définir le terme harcèlement. Si si, tu me sauteras, Gérard.
'''Gérard''' : C'est ça, ben, alors, je préfère me mettre une capote avant d'attraper des morpions avec toi.
'''Reego''' : C'est plutôt l'inverse, je crois.
'''Mathieu''' : Il sort pas avec des mineures, il sort que avec des horreurs.
'''Gérard''' : Alors, Poupon, ta conclusion, je viens de l'entendre. Terminé pour toi. Mathieu ?
'''Mathieu''' : Ouais, je me suis masqué tranquille, donc, Gérard, tes débats, bof. Bof Et puis, mais par contre, moi aussi, je vais t'harceler, je vais te faire ta fête demain, tu vas voir. Je te le dis, mon pote !
'''Gérard''' : Ouais, ben, surtout de Toulouse, t'as raison. Tu crois que...
'''Mathieu''' : Attends, tu crois quoi ? Moi, j'ai une voiture, hein. Moi, j'ai une voiture, mon pote.
'''Gérard''' : Casse-toi. ''[Max revient, un bruit de pleurs, de sanglots est envoyé, insistant et couvrant la voix des auditeurs]''. Bon, ouais, tu me vires la chialose, là.
'''Manu''' : Ouais, mais bon, tu l'as déçue, quoi.
'''Gérard''' : Et alors, j'en ai rien à foutre. Casse-toi ?
'''Casse-toi''' : Ouais, Gégé. Ben, écoute, Gérard, je viens de te le dire, je t'ai dit, ton débat, il était vachement chaud, et maintenant, j'ai vachement chaude.
'''Gérard''' : Ah, ben, c'est bien. Couscous ?
'''Couscous''' : Ouais, il y a pas de problème. Moi, je dis que le harcèlement sexuel, c'est pas bien, mais fais quand même gaffe à ton derrière. Un accident est si vite arrivé, Gérard.
'''Gérard''' : Non, mais t'inquiète pas, j'ai mon garde du corps.
'''Couscous''' : Moi, je vais le prendre le derrière comme il faut, tu vas voir.
'''Gérard''' : Donc, moi, la conclusion sur le harcèlement sexuel, c'est la dernière fois, Olivier, que tu fais la pro. Non, mais je peux te le dire, c'est la dernière.
'''Reego''' : C'est pas une conclusion.
'''Gérard''' : Déjà, tu m'as fait... t'as fait ton bordel, donc t'as gagné.
'''Olivier''' : Et voilà, je ne fais jamais rien, c'est toujours sur ma gueule.
'''Gérard''', ''[la voix déformée, il jette le CD de JP Jarre à la tête d'Olivier]'' : Non, non, là, tu viens d'appuyer... Alors, t'éteins ça, parce que...
'''Olivier''' : Ok, ok, ok. Tu ne me jettes pas ce laser dans la figure.
'''Gérard''' : Ouais, mais c'est pas le tien, c'est à moi. Alors, ça te coûte dix sacs.
'''Manu''' : Ouais, mais ça peut lui faire mal aussi, quand même.
'''Olivier''' : Tu veux me jeter un laser dessus et tu veux me le faire payer ?
'''Gérard''' : Donc, si vous avez des questions à me poser, moi, je peux...
'''Manu''' : Allez, chacun son tour, chacun son tour, une question.
'''Gérard''' : Alors, on va demander à Marmite.
'''Marmite''' : Si un jour, tu travailles, est-ce que toi, si tu travailles, si t'étais patron, tu harcelerais tes secrétaires ?
'''Gérard''' : Non.
'''Olivier''' : oh ! Je t'ai vu harceler des fois des filles ici.
'''Casse-toi''' : Oh, mytho, Gérard.
'''Gérard''' : Non, mais attends, toi, Olivier, tu t'écrases, tu ferais mieux de t'occuper de ton boulot.
'''Olivier''' : Quand Sandy n'est pas là...
'''Manu''' : Je l'ai vu harceler des mecs.
'''Gérard''' : Eh, tu veux qu'on la fasse descendre ? T'es vraiment un bâtard, hein. T'es vraiment un bâtard, toi, de dire des conneries comme ça.
'''Reego''' : Là, t'es en train de le... Le harceler, verbalement.
'''Gérard''' : Tu dégages. Allez, hop. Tu vires. Tu vires. Non, non, non, tu vires. Je veux plus te voir dans les studios, toi, maintenant. Bonne nuit.
'''Reego''' : Gérard, sur IRC, Gérard, sur IRC, il y a Axel Duroux qui dit conclusion quand tu passes à mon bureau.
'''Gérard''' : Quand il veut et ça m'étonnerait que ça soye le vrai.
'''Reego''' : On verra demain.
'''Piont noir''' : Ouais, ben, moi, j'ai pas de questions spéciales, mais je voulais simplement te dire que te retrouve jamais tout seul parce que sinon, je vais te sauter dessus, quoi.
'''Gérard''' : Ouais, ben, attends. Déjà, à 17 ans, faudrait déjà que tu m'attrapes.
'''Manu''' : Tu cours pas super vite, Gérard. Elle peut te rattraper, hein.
'''Point noir''' : Je pars du principe que quand on veut quelque chose, on l'a.
'''Gérard''' : Tu crois que je vais quitter Sandy pour toi ?
'''Point noir''' : Ah, non, absolument pas. Tu peux la garder. Moi, ça me dérange pas. Je préfère être la maîtresse.
'''Gérard''' : Ah, non, ben, alors là, je vais te dire une chose. Tu te mets le doigt bien profond où que je pense.
'''Point noir''' : Écoute, quitte pas. Je baisse mon slip et je le mets.
'''Gérard''' : T'es vraiment une allumeuse, toi.
'''Poupon''' : Salope.
'''Gérard''' : Je sais pas, je voulais pas dire ce mot.
'''Olivier''' : Et tu l'as dit pourtant.
'''Gérard''' : Non, non, c'est pas moi qui l'ai dit.
'''Marmite''' : Gérard, est-ce que je peux me faire un fist ?
'''Mathieu''' : Ouais, ben, moi, je voudrais savoir quand est-ce que tu vas t'acheter un rasoir parce que là, t'as vraiment une tête de pignouf, en fait.
'''Gérard''' : Ben, quand j'auai les moyens.
'''Mathieu''' : Ben, je t'en amènerai un de ces quatre, alors.
'''Gérard''' : D'accord, ben, tu l'envoies à la radio. Et casse-toi ?
'''Casse-toi''' : Mais, Gérard, j'ai pas de questions pour toi, désolée, mais...
''[bruit de rires aux éclats d'un enfant]''.
'''Poupon''' : Qui c'est qui vient avec un niard ?
'''Olivier''' : Qui c'est qui a un gamin, Manu ?
'''Manu''' : Je sais pas, moi, c'était pas...
'''Gérard''' : Non, c'était pas prévu, mais tu ferais mieux de le prévoir.
'''Poupon''' : Tu vois, quand c'est du harcèlement, ça finit par faire des gosses, hein.
'''Casse-toi''' : Ça fait rire les gamins, le harcèlement.
'''Gérard''' : Tu ferais mieux de prévoir.
'''Manu''' : Ben, le gamin, il rigole. Tu l'amuses, tu l'amuses.
'''Gérard''' : Non, mais attends, parce que... Casse-toi, j'ai pas compris sa question. Et Couscous l'a pas posée.
'''Casse-toi''' : Ben, donc, Gérard, ça va être difficile de comprendre ma question, étant donné que j'en n'ai pas posée. ''[coupure]''.
'''Olivier''' : J'ai coupée, j'ai pas fait exprès.
'''Gérard''' : Toi, je sens qu'il y a une ramette de papier, là. Je pense qu'avant la fin de la soirée, elle va voler dans ta tranche. DOnc Casse-toi pas de questions ? Tant pis pour toi.
'''Marmite''' : Moi, j'en ai une. Est-ce que, Sandy, tu la harcèles sexuellement ?
'''Reego''' : Ah, et vice-versa. On me dit sur IRC.
'''Gérard''' : Tu fais le 849, on va lui demander qu'elle réagisse.
'''Mathieu''' : 849 kilos ?
'''Olivier''' : Non, mais continue ton débat.
'''Gérard''', ''[la voix déformée]'' : Attends, j'attends que Couscous pose la question. Et tu éteins ce double-son ! Éteins ça, là. Éteins, éteins.
'''Point noir''' : Tu m'excites, Gérard, quand tu cries.
'''Manu''' : Gérard, elle est là, ta femme.
'''Olivier''' : Donc, la question, c'est quoi ?
'''Marmite''' : Est-ce que Gérard harcèle Sandy sexuellement et vice-versa ?
'''Sandy''' : Oui, effectivement, il me harcèle, mais c'est uniquement pour lui ramener le café le matin. Je crois que, là, si je ramène pas le café le matin, là, il me fait une crise, hein.
'''Poupon''' : Ouais, poupon, oui. Ouais, je voulais dire, vous parlez beaucoup du harcèlement sexuel, mais, effectivement, on parle pas du harcèlement ménager ou du harcèlement culinaire où l'homme force sa copine à la cuisine et le ménage. Ça, c'est du harcèlement ménager et culinaire.
'''Mathieu''' : T'es un peu macho, Gérard, en fait.
'''Couscous''' : Est-ce que tu penses que le harcèlement sexuel est en principe ?
'''Poupon''' : Si tu parles de la syntaxe des palmypèdes dans la pédagogie instinctive, c'est sûr.
'''Olivier''' : Non, mais c'est pas con, ça. C'est pas con, Gérard. Qu'est-ce que t'en penses ?
'''Gérard''' : Personnellement, rien du tout.
'''Manu''' : Ouais, en fait, tout est lié, quoi.
'''Couscous''' : Ça serait pas intrincite par rapport au site du texte.
'''Poupon''' : Non, si tu reviens au concept abstrait de la prévision...
'''Olivier''' : Laissez parler un peu Gérard, aussi.
'''Gérard''' : Non, non, mais moi, de toute manière, sur la question, je peux pas répondre. Non mais là, On va se quitter, là-dessus.
'''Olivier''' : 6 minutes, encore.
'''Mathieu''' : Jusqu'au bout, ton boulot.
'''Couscous''' : Gérard, c'est Couscous, je peux te poser une question ? Est-ce que t'as déjà vu des personnes faire du harcèlement sexuel ?
'''Gérard''' : Euh, jusqu'à maintenant, non, pas encore.
'''Point noir''' : Eh ben, tu vas bientôt pouvoir le voir.
'''Gérard''' : Mais attends, toi, à 17 ans, tu vas pas me prendre la tête.
'''Poupon''' : Elle va te prendre le cul.
'''Gérard''' : Non, mais attends, toi, à 17 ans, déjà, t'es pas sûre de rentrer à la loco.
'''Sandy''' : À mon avis, t'es une grosse allumeuse. T'es une grosse pétasse, aussi, hein.
'''Mathieu''' : Sandy, t'es jalouse ?
'''Gérard''' : Oui, elle est jalouse, et elle a très bien...
'''Sandy''' : C'est pas la question d'être jalouse, c'est la question que ça se fait pas. Quand t'as un mec, tu vas pas aller voir ailleurs, tu vas pas allumer les autres mecs pour le plaisir.
'''Point noir''' : Attends, qui te dit que j'ai un mec ?
'''Sandy''' : Elle, elle veut allumer Gégé.
'''Max''' : Pourquoi pas, pourquoi pas. Pour mon anniversaire, tu pourrais te faire plaisir, Gégé.
'''Gérard''' : Eh, point noir, déjà, à 17 ans, t'es pas sûre de rentrer à la loco, déjà.
'''Max''' : Je la ferai rentrer.
'''Point noir''' : Je peux t'attendre à la sortie.
'''Gérard''' : Ouais, bah, là, là, tu sauras même pas comment que je serai habillé.
'''Manu''' : Ouais, mais Gérard, j'ai pris son nom et j'ai mis +1 sur le listing.
'''Max''' : Je vais la faire rentrer. Je vais la faire rentrer, moi, je vais la faire rentrer.
'''Gérard''', ''[en regardant Manu]'' : T'as qu'à allumer le bouboule au standard.
'''Manu''' : Elle veut pas de moi, elle veut de toi.
'''Gérard''' : Non, mais moi, j'en veux pas, moi, je suis déjà pris... ''[nerveux]''. Alors, dans ces cas-là, tu vois, Point noir, ce que tu viens de dire, eh ben, tu vas gâcher l'anniversaire à Max, c'estt que demain, je reste chez moi. Voilà, bravo, point noir.
'''Sandy''' : Ah, bah, pour une fois, j'étais décidée d'y aller.
'''Gérard''' : Bah, ouais, mais tu diras merci à Point noir.
'''Max''' : Gérard, c'est pas à cause d'une fille de 17 ans que tu vas pas venir dans l'anniversaire.
'''Gérard''' : Moi, je réponds pas à des questions d'une petite...
'''Max''' : Mais t'es une vraie gonzesse, toi, à 39 ans, tu perds les pédales pour une fille de 17 ans ? Elle rentrera pas, elle rentrera pas.
'''Point noir''' : Gérard, si ça peut te rassurer, je travaille le week-end.
'''Max''' : Gérard, tu vas venir vendredi à la loco, puis c'est tout. Attends, tu vas pas discuter, attends, ça va.
'''Poupon''' : On a besoin de toi, Gégé, on t'aime.
'''Gérard''', ''[à Manu]'': Bon, eh, tu me laisses Marmite pour un instant, tu me coupes les autres parce qu'ils me font chier.
'''Marmite''' :Est-ce que tu crois que le thème du... ''[coupure, gérard lance une giffle à Manu]''.
'''Manu''' : Ah, non ! Mais t'es ouf !
'''Gérard''' : Tu m'enlèves Marmite !
'''Reego''' : Il lui a mis une tarte.
'''Manu''' : Eh bah, ouais, ça y est, j'enlève les autres ! Putain, il m'a mis une claque. J'halucine.
'''Gérard''', ''[souriant]'' : Eh, ouais, eh ! Tu vois, tu ne t'y attendais pas.
'''Marmite''' : Gérard, est-ce que tu crois que le thème du harcèlement pourrait être porté au cinéma ?
'''Gérard''' : Bah, de toute manière, ça se voit dans les films. Ouais, mais même, quand tu vois les trucs sur la mode, fais-moi confiance... Les mecs, ils se rincent bien l'œil quand ils préparent les nanas pour défiler.
'''Sandy''' : Est-ce que t'as vu le film Le harcèlement, avec Demi Moore ?
'''Gérard''' : Alors, le film Harcèlement avec Denis Moore... De tte manière, c'est pas harcèlement, c'est striptease.
'''Mathieu''' : Moi, j'ai vu un autre film d'harcèlement, ça s'appelait Ferme la porte, que j'écarte les cuisses.
'''Gérard''' : Moi, j'ai vu un truc, c'est que maintenant, je vais vous laisser.
'''Couscous''' : Gérard, c'est Couscous, j'ai une question. Est-ce que tu peux me reciter une fable de La Fontaine ?
'''Gérard''' : Le corbeau et le renard, voilà, terminé, point final à la ligne.
'''Poupon''' : Gégé, Gégé, 9x9, ça fait combien ?
'''Gérard ''' : 9x9, 68.
'''Poupon''' : Bon, Gégé, moi, je voulais te dire, la semaine prochaine, tu fais un débat sur le vieux gras, et je voudrais savoir où c'est qu'il faut le mettre, le vieux gras.
'''Gérard''' : Non, mais le viagra, c'est un truc que tu mets dans ta bouche et que...
'''Reego''' : Il est là, le vieux gras.
'''Poupon''' : C'est sûr que c'est pas des suppos de vieux gras ?
'''Max''' : Bon, alors, conclusion vite fait, de Gérard, pour le débat de ce soir, qui était bien, quand même, à part Olivier, qui a perturbé un petit peu la fin de ce débat, dommage.
'''Gérard''' : Donc, tu ne feras pas partie de l'équipe la semaine prochaine. Donc, tu es renvoyé, tu ne fais plus partie de notre équipe le jeudi.
'''Max''' : Alors, la conclusion, Gérard, s'il te plaît, parce que tu t'écares toujours du débat. T'es toujours aussi mauvais.
'''Gérard''' : Ben non, conclusion, c'est dommage que ça soit terminé comme ça, sinon, je pense que c'était un bon débat, à part le premier, qui a foiré.
'''Max''' : Non, il était bien, il était bien.
'''Gérard''' : Il a quand même foiré, mais je pense que sur l'IRC...
'''Max''' : Ça a répondu présent, c'était parfait.
'''Max''' : La conclusion sur le harcèlement sexuel, parce que ce n'est pas ça ce qu'on attend de toi, c'est de parler du débat.
'''Gérard''' : Je pense que c'est un peu con ce qui arrive aux gens, maintenant, quand ils vont voir les patrons. Voilà.
'''Max''' : D'accord.
'''Gérard''' : Quand la nana va voir le patron, si t'es bien... si t'es canon, comme Marmite elle disait, t'es prise. Si t'es pas bien, tu retournes chez toi.
'''Olivier''' : Elle est canon, Marmite, tu crois ?
'''Gérard''' : Je ne sais pas. Moi, je m'en fous, personnellement. Mais moi, je peux te dire que si t'es bien, t'es prise. Si t'es pas bien, ben... C'est simple, il va te dire, on te rappelle. Et puis, ta candidature, elle va, comme Manu vient de faire, hop, à la poubelle. Donc, la semaine prochaine, les deux thèmes du débat. Donc, on va parler sur le Viagra, qui est sorti, là, depuis peu. Et bien sûr, le fameux débat, tu veux que je fasse à tout prix, mais... Je ne suis pas chaud, mais on va le faire quand même en deuxième partie du... En deuxième... Deuxième partie. Ça sera sur la politique. Et voilà. Donc, deux débats qui risquent d'être, quand même... Assez mouvementés et assez chauds. Et on va se quitter avec...
'''Max''' : Chaze sur Fun Radio. Je vous souhaite une bonne nuit. Demain, 22h, bien sûr. Et puis, on vous souhaite une bonne nuit avec Rousseau. Et puis, on se retrouve jeudi prochain. Et sinon, demain soir, avec nous, à la loco, pour fêter mon birthday. Ça sera en direct, d'ailleurs, de minuit à 4h du matin. Bonne nuit. ''[Musique]''.
== Le débat sur la politique ==
=== Contexte ===
Cedébat est d'emblée placé sous le signe de l'incertitude. Gérard ne voulait pas le faire, mais l'a fait sous la pression amicale de Max, lequel y voyait une occasion de surréalisme garanti et permanent, ce qui sera le cas. C'est donc un malaise qui introduit ce débat, mais il libérera le comique de tous les acteurs.
Les grands thèmes d'actualité y sont abordés : les mouvements des élèves et des enseignants contre la surcharge des classes, le déficit de l'assurance maladie, le pacte civil de solidarité, premier pas vers l'autorisation du mariage des personnes homosexuelles, le rôle d'une émission satirique culte de l'époque, les Guignols de l'info, parodiant via des marionnettes des artistes et des hommes politiques, etc. Bien sûr, à tout ces sujets, Gérard est ignorant, déversant tout au plus du contenu mal compris de sa chaîne de télévision favorite voire exprimant des idées paraissant choquantes mais qui, au fond, n'en sont pas.
Côté radio, Reego introduit un personnage IRC majeur : Turpentine. Cette auditrice poursuivra Gérard tout au long de son avenir.
=== Les personnages ===
* Gérard Cousin : Gérard
* Igor : Reego
* Manu et Phildar
* Laura : Cassenoisette, Téton
* Franck Bargine : Max, Jean Pitivier, Jean Cotivier
* Saucisson à l'ail (Casse-toi, lors du dernier débat), joué aussi par Sandy parfois
* Plote-moi (déjà entendu lors de la Formule 1), Casse-couille, Pète-burne
* Tony Morestin : Tony, Caillera, Bulldog Mystère, Pitbull Secret
* Sandy Threadkell : X
* Mégane : T-bête, Citrouille
* Mladen Derek : Grostring
* Goldo : Vaseline
=== Transcription ===
'''Gérard''' : Bonsoir et bienvenue dans les débats du jeudi. Vous pouvez toujours nous appeler au 0803 08 5000 et 3615 code Funradio, rubrique Direct et l'IRC irc.fr. On accueille donc x, 21 ans, de Mazamet.
''' ''' : Mes respects du soir, Gérard.
'''Gérard''' : Cassenoisette, 19 ans, de Niort.
'''Cassenoisette''' : Ça va bien ?
'''Gérard''' : Je sais pas, j'ai pas regardé ce matin. Plotte-moi, 20 ans, de Gap.
'''Plote-moi''' : Bonsoir Gérard, bonsoir Yargla. Bonsoir Tuiline, je te kiffe bébé.
'''Max''' : Pas de message...
'''Gérard''' : Les messages terminés, c'est bon pour toi. Tony...
'''Tony''' : Et bonsoir, j'adore la politique.
'''Gérard''' : 20 ans, de Paris.
'''Phildar''' : C'est tout ? On va les rappeler. Non, on va les rappeler, ils sont pas encore là.
'''Gérard''' : Alors pourquoi vous me donnez des fiches avec des noms qui sont pas là, des auditeurs ? Alors, commencez pas à faire votre travail à moitié ! Au boulot !
'''Max''' : Ce soir, faut être sérieux, on va arrêter de déconner, parce que ça commence à déconner à plein tube. Donc, dans un instant : débat de Gérard, comme chaque jeudi bien sûr, sur la politique. ''[Musique]''
'''Gérard''' : On récupère Saucisson à l'ail qu'on a eu tout à l'heure.
'''Saucisson à l'ail''' : Rebonsoir Gérard.
'''Gérard''' : Cassenoisette, rebonsoir.
'''Cassenoisette''' : Rebonsoir Gérard.
'''Gérard''' : Parle un tout petit peu... Parle un tout petit peu... Parle un tout petit peu... Un petit peu plus fort s'il te plaît, merci.
'''Cassenoisette''' : Rebonsoir Gérard.
'''Gérard''' : Plotte-moi, 20 ans de Gap.
'''Plotte-moi''' : Oui, bonsoir. Je tiens à préciser que je ne foutrai pas le bordel ce soir.
'''Gérard''' : Ouais, ben j'espère pour toi. Et ceux qui ont des téléphones pourris, vous me le dites.
'''Phildar''' : Attends, Manu, il va gérer ça. Parce qu'il y en a un qui a un téléphone vraiment pourri, on va le trouver.
'''Gérard''' : Tony, rebonsoir. 20 ans, Paris.
'''Tony''' : Rebonsoir Gérard.
'''Gérard''' : T-bête...
'''T-bête''' : Salut Gérard.
'''Gérard''' : 20 ans, de Dinan. Et Grosstring, 23 ans, de Bourges. On peut écouter Fun Radio sur 96.7. J'ai oublié de préciser les fréquences.
'''Grostring''' : Ouais, c'est ça. Salut Gérard.
'''Gérard''' : Bonsoir. Donc, T-bête c'est... Dinan en 103.5.
'''Phildar''' : T-bête, pas T-bête.
'''Gérard''' : Dinan en 103.5. Paris : 101.9. Gap : 93 FM. Niort : 93.4. Mazamet : 99.4. Celui qui s'amuse avec les sonnettes est prié d'arrêter, merci d'avance.
'''Potte-moi''' : C'est chez toi, Gérard, je crois.
'''Gérard''' : Non, mais je ne suis pas chez moi pour l'instant ! Celui qui s'amuse avec les sonnettes : gare ! Alors, première question... Donc, le premier débat c'est sur la politique. J'ai oublié de préciser.
'''Tony''' : Ma passion...
'''Gérard''' : Donc : à quoi sert le vote en politique ? Tony, comme c'est ta passion, vas-y.
'''Tony''' : Le vote en politique, c'est pour élire les élus. Et c'est très important, parce que c'est ceux qui nous représentent au sommet de l'État. Donc, c'est eux qui nous disent : « Tu vas payer tant d'impôts chaque mois », et qui nous prennent un cinquième de notre salaire. Et je trouve ça dégueulasse. Je tiens à le dire.
'''Gérard''' : Il n'y a pas qu'un cinquième de notre salaire, ils nous prennent quand même plus aussi. Parce qu'il faut dire aussi qu'il y a la...
'''Phildar''' : La CPG aussi...
'''Gérard''' : Non, non, il y a un autre truc... La CSG, quand même, ils nous retirent pas mal.
'''Tony''' : C'est un syndicat ça.<ref name="hist9"></ref>
'''Grosstring''' : Moi je trouve que, déjà, si tu veux, le vote quelque part ça fait une sortie, quoi. Une ou deux fois par an, tu vas voter.
'''Gérard''' : Tu votes deux fois dans... deux fois, tu as deux tours. Faut préciser.
'''Grosstring''' : Non, mais toi, si tu votes deux fois, c'est ton problème quoi.
'''Gérard''' : Non, mais il y a deux tours, faut bien préciser.
'''Grosstring''' : Si ça t'a plu, tu peux y retourner. Je suis d'accord.
'''Gérard''' : Non, mais attends, si au premier tour ça passe pas, tu revotes une deuxième fois. C'est ça que je veux te dire.
'''Tony''' : Si t'es pas éliminé au premier tour, tu reviens...
'''Grostring''' : Non, mais attends, je sais... Si j'y vais pas la première fois, je peux y aller la deuxième si je loupe.
'''Gérard''' : Bah oui, mais même si t'as pas envie d'y aller, que t'es ailleurs... De toute manière, il y a une question là-dessus, je pense que je vais sûrement la faire. Tbête ?
'''T-bête''' : Ouais, ça sert à rien.
'''Gérard''' : Pourquoi ?
'''T-bête''' : Parce que c'est... c'est triché quoi. On sait déjà qui c'est qui va être élu, donc c'est pas la peine d'y aller.
'''Gérard''' : Ah non, mais attends ! Tu peux pas le savoir dès le premier... tu peux pas le savoir.
'''T-bête''' : Mais si, tu peux.
'''Gérard''' : Non, mais attends ! Attends, tu peux pas le savoir dès le départ qui c'est qui va être élu au début.
'''Manu''' : Je crois qu'aux dernières élections, il y avait les résultats sur Internet deux jours avant.<ref name="hist10"></ref>
'''T-bête''' : Bah oui.
'''Gérard''' : Ouais, mais tu peux pas savoir tout de suite au premier tour qui c'est qui sera là.
'''T-bête''' : Mais si, ils s'arrangent entre eux.
'''Gérard''' : Mais non, mais non, mais non !
'''T-bête''' : Mais non, tu connais rien !
'''Gérard''' : Quoi, j'y connais rien ? Attends, tu vas pas commencer... Parce que sinon, toi, tu as... tu vas retourner à Dinan vite fait, toi. Plotte-moi ?
'''Phildar''' : Non, non, non, non ! Pas ce soir.
'''Gérard''' : Non, bah c'est son nom. Il pourrait peut-être trouver d'autres noms que des noms comme ça...
'''Plotte-moi''' : Excuse-moi, c'est pas ma faute.
'''Gérard''' : Bon, et qui c'est qui s'amuse avec les réveils, là ? Ça commence à me prendre la tête, là.
'''Plotte-moi''' : Comme a dit Monsieur Tony là, je crois que c'est vrai. C'est les élus quoi : ils nous enculent un peu, et en plus...
'''Gérard''' : Eh ! Tu restes poli s'il te plaît quand même, à 0h42.
'''Tony''' : J'ai pas dit qu'ils nous enculaient, j'ai dit que c'était des gros pédés.
'''Gérard''' : Ouais, bah tu restes poli, Tony. Parce que sinon, tu vas faire un stage au standard, toi aussi, tout à l'heure. Parce que si tu veux faire les débats, tu restes calme. C'est ce qu'on avait bien précisé quand t'étais venu le jour de l'anniversaire à Max, d'accord ?
'''Tony''' : Bon anniversaire.
'''Gérard''' : Ouais, d'accord. Alors donc, pour toi... donc Plotte-moi, donc on continue avec toi, avant de demander à Cassenoisette et Saucisson à l'ail.
'''Plotte-moi''' : Bah moi je crois que, effectivement, c'est vrai quoi. Ils nous... bon, je vais pas dire « enculer » parce qu'ils nous enculent pas, mais ils nous prennent vraiment de la thune et c'est ça qui est vraiment chiant quoi. Ça m'énerve, moi. ''[bruit de réveil ou de vieux téléphone]''.
'''Gérard''' : C'est toi qui joues avec un réveil ?
'''Plotte-moi''' : Moi ? Bah non, mais tu déconnes ! J'ai pas de réveil.
'''Gérard''' : Non, mais qui c'est qui joue avec un réveil là ? Ça commence à m'énerver là ! Cassenoisette ?
'''Cassenoisette''' : Ouais, bah moi je trouve que ça sert à rien d'aller voter.
'''Gérard''' : D'accord. Question réaction IRC ?
'''Reeigo''' : Oui, sur IRC, il y a Snul qui me dit que le vote est une chose bien, surtout pour « Miss T-shirt mouillé ».
'''Gérard''' : Non, bah ça... peut-être pour lui. C'est pas... c'est pas...
? Phildarl y a pas deux tours là, il y a qu'un tour de poitrine. Donc c'est pas valable.
'''Manu''' : Ouais, mais il y a deux seins quand même.
'''Reego''' : Ouais, mais il y a qu'un tour.
'''Gérard''' : Non, mais ça y est, c'est bon. On va pas s'éterniser sur les T-shirts mouillés. Donc, Cassenoisette ?
'''Tony''' : Moi j'aime bien toucher les parties...
'''Gérard''' : Bon, Tony ! Tu t'écrases s'il te plaît un peu maintenant. Cassenoisette ?
'''Cassenoisette''' : Ouais, bah moi je trouve que ça sert à rien d'aller voter, quoi.
'''Gérard''' : Mais pourquoi, toi ?
''''Cassenoisette''' : Bah c'est tout simple : tu te pointes là-bas, tu vas voter, tout est truqué, tout est déjà fait d'avance.
'''Gérard''' : Non, non, non, non, non ! C'est pas... Non, non, non, non, non ! Je te dis que non ! Non ! Non, je te dis !
'''Cassenoisette''' : Mais si, Gérard !
'''Gérard''' : Non, non, mais attends ! Moi, j'ai assisté à un dépouillement dans la région où j'habite, et j'ai même assisté au truc des votes. Et fais-moi confiance que c'est pas truqué, je peux te le dire tout de suite.
'''Cassenoisette''' : Moi je te dis quelque chose, Gérard, c'est que je suis très bien placée pour le savoir. Je te dirai pas ce que je fais dans la vie, mais je suis très bien placée pour le savoir.
'''Gérard''' : Bah, peut-être pour toi. Mais moi je te dis tout de suite que c'est pas truqué. C'est pas truqué d'entrée, c'est tout. Saucisson à l'ail ?
'''Saucisson à l'ail''' : Bah écoute, moi je suis un peu d'accord avec tout le monde, mais moi aussi je dis que c'est truqué quoi. Parce que des fois tu vois les chiffres : ça monte, ça descend, c'est n'importe quoi.
'''T-bête''' : C'est vrai, c'est n'importe quoi.
'''Gérard''' : Mais non, mais... Je suis pas trop d'accord avec vous, parce que là... Non, non, mais attendez. Moi, je vais donner quand même mon truc. Moi, je peux vous... Non, mais... Je peux vous dire, je peux vous dire une chose : que c'est pas possible que ça soit truqué d'entrée. C'est impossible. C'est contrôlé, donc ça peut pas être truqué tout de suite.
'''T-bête et Grostring''' : Pourquoi ? Dans quel sens ?
'''Gérard''' : Non, non, mais il y a pas de « dans quel sens » ou de « Pourquoi », Moi, je te dis que ça peut pas être truqué ! Oui, Reego ?
'''Reego''' : Oui, il y a Goldberg sur IRC qui demande : « C'est quoi un épouillage ? ».
'''Gérard'' : Un dépouillage, c'est de retirer le bulletin...
'''Phildar''' : Non, le sac d'une petite vieille dans la rue.
'''Gérard''' : Non, non, non ! Attends, Phildar, tu t'écrases s'il te plaît, merci.
'''Reego''' : C'est quoi l'épouillage alors ?
'''Gérard''' : Non, dépouillage ! Il a pas compris ce que j'ai voulu dire. Donc, dépouillage, c'est de retirer le bulletin qu'on a mis dans une enveloppe, et on le met de côté. Et on fait des tas, après on les compte pour savoir qui passe, qui sera élu ou pas. Voilà, c'est tout.
'''Manu''' : Ça sert à quoi de le mettre dans une enveloppe si après ils nous le retirent ?
'''Gérard''' : Mais non, mais on le retire ! Et après ils ont tout ce qu'ils veulent.
'''Grostring''' : Ça sert à fabriquer des enveloppes.
'''Gérard''' : Voilà. Donc, deuxième question : la politique vous rend-elle amoureuse ? On va demander... Bon, celui qui est avec son réveil, t'arrêtes ! C'est clair et net, parce que je vais pas chercher midi à quatorze heures tout à l'heure, je vais en virer. Parce qu'il y a d'autres personnes qui attendent pour participer, c'est bien clair.
'''Tony''' : Ouais, moi je voulais répondre à la question.
'''Gérard''' : Ton nom c'est quoi ?
'''Tony''' : Tony.
'''Gérard''' : Ouais, bah précisez vos noms quand vous voulez parler, d'accord.
'''Plotte-moi''' : Ouais, mais on le reconnaît quand même.
'''Tony''' : Moi je voulais dire que Élisabeth Guigou, je la trouvais bonne.
'''Gérard''' : Non, mais attends ! T'arrêtes de donner des noms, s'il te plaît !
'''Tony''' : Bah écoute, c'est son nom, c'est de la politique.
'''Gérard''' : Ouais, ouais. C'est pas la peine de citer les noms des personnes politiques.
'''Grosstring''' : Gérard ? Moi je voulais... je voulais dire que, moi, c'était Ségolène Royal que je trouvais bonne.
'''Gérard''' : Bon, et Grosstring et Tony... soit que vous vous calmez et vous arrêtez de donner des noms, soit que vous gerbez. Ça va aller vite vous deux ! C'est pas la peine de se foutre de ma gueule derrière, parce que sinon vous allez virer tout de suite. C'est clair et net.
'''Manu''' : Pas de marques !
'''Grostring''' : Mais pourquoi ?
'''Gérard''' : Non, il y a pas de pourquoi !
'''Tony''' : C'est ta question, excuse-nous.
'''T-bête''' : Ouais, moi une fois j'ai rencontré un mec dans l'isoloir, on a fait crac-crac machin et tout. Et ouais, j'étais amoureuse. Donc c'est bien. C'est bien.
'''Gérard''' : D'accord. Plotte-moi ?
'''Phildar''' : Non !
'''Plotte-moi''' : Mais si ! Si quand même, merde ! Un peu... Oui, bah j'y vais. ''[bruit de sonnette]''. Ah non...
'''Gérard''' : Bon Manu, t'essaies de me choper le réveil et celui qui a du monde chez lui. Parce que ça m'énerve là !
'''Manu''' : Je crois qu'il attend des invités, ouais, mais je sais pas qui c'est.
'''Gérard''' : Ouais, mais moi je veux pas le savoir ! S'il participe au débat et s'il a des invités, il dégage !
'''Manu''' : Écoute, fais-les rentrer, mets-les dans la cuisine, et puis on n'en parle plus.
'''Gérard''' : Bon alors, Plotte-moi...
'''Grostring''' : Il organise peut-être un meeting politique, il attend des gens.
'''Tony''' : Eh Georges Marchet, ya pas moyen que tu rentres !
'''Gérard''' : Oh, c'est fini là, avec les noms !
'''Plotte-moi''' : Ouais, arrêtez, c'est vrai. Euh, comme ont dit les autres les autres, avec les Guigou et tout ça, moi c'est la mère... la mère Tiberi, je crois.
'''Gérard''' : D'accord. Je pense que Plotte-moi, et Tony, et Grosstring, je crois que vous allez pas finir le débat. Non, non, mais vous donnez des noms comme ça, c'est pas tellement bon. Cassenoisette ?
'''Cassenoisette''' : Ouais, bah moi je pense pas que la politique rende amoureuse. Néanmoins, moi quand je vais voter, je vote pour celui qui a apparemment la plus grosse queue quoi.
'''Gérard''' : D'accord, carrément. Saucisson à l'ail ?
'''Saucisson à l'ail''' : Bah écoute, moi je vois pas vraiment le rapport mais je vais quand même te répondre : bah moi, ça me rend pas amoureuse.
'''Gérard''' : Ah bah c'est pas mal. Moi je peux vous dire une chose, que moi non plus ça me rend pas du tout amoureux.
'''Manu''' : Je croyais que t'étais amoureux de Jaco pourtant ?
'''Gérard''' : Non, non, non.
'''Tony''' : Moi ce que je voulais dire, c'est que les membres du Parti Communiste, ils sont pas très bandants.
'''Gérard''' : Bon Tony !
'''Tony''' : Oui ?
'''Gérard''' : Encore une connerie comme ça et tu t'en vas.
'''Manu''' : Pas de marques, Tony ! Pas de marques !
'''Gérard''' : T'as pas besoin de citer les partis.
'''Tony''' : Pardon. La prochaine fois je dis que les initiales...
'''Phildar''' : Gérard, j'ai une question Minitel de Merlot, du département 44, qui demande (enfin il veut revenir à la question précédente très rapidement) : « Est-ce que Gérard met un timbre à l'enveloppe quand il va voter ? ».
'''Gérard''' : Je vois pas du tout le rapport ! Je vois pas du tout le rapport là-dessus.
'''Phildar''' : Bah si ! Comme tu prends une enveloppe et que tu la déposes, est-ce que tu prends soin de mettre un timbre avant pour qu'elle arrive bien à destination ?
'''Manu''' : C'est quoi l'adresse aussi ?
'''Gérard''' : Non, non, non ! Attends, déjà c'est pas ça. À quoi sert le vote en politique : c'est quand tu vas dans les urnes. Tu t'amuses pas à voter avec des timbres sur les enveloppes !
'''Phildar''' : Ah d'accord, c'est pas les mêmes enveloppes ?
'''Gérard''' : Voilà, c'est pas du tout pareil.
'''Grostring''' : Gérard, je peux te poser une question ? Je voudrais savoir si des fois tu te grattes les urnes.
'''Gérard''' : N'importe quoi toi !
'''Manu''' : Moi par contre j'avais une question : comment s'est fait un urinoir ? Parce que moi je sais pas, je suis jamais allé voter.
'''Gérard''' : Bah c'est simple : c'est une petite cabine avec un rideau. C'est tout, pour pas qu'on voie.
'''Phildar''' : Et tu mets 2 francs ?
'''Gérard''' : Pour pas qu'on voie pour qui tu votes.
'''Manu''' : Et quand t'as fini de voter, tu tires la chasse ?
'''Reego''' : Ils te donnent une petite serviette pour t'essuyer.
'''Gérard''' : Peut-être. On sait pas. Donc, troisième question : les enfants ont-ils le droit de faire de la politique ? On va demander ça à Cassenoisette, comme elle est bien placée.
'''Cassenoisette''' : Oui, il y en a déjà qui ont tenté le coup, Gérard. Et je peux te confirmer que, effectivement, bientôt les médias vont parler d'un petit jeune qui a 14 ans et qui s'y met vachement. Et en fait...
'''Gérard''' : Cassenoisette, parle plus fort un peu. Cassenoisette, tu parles plus fort ! Il y a du monde derrière toi.
'''Cassenoisette''' : Oui, donc...
'''Gérard''' : Ouais, bah alors ! Tu demandes aux gens...
'''Cassenoisette''' : Il y a personne ! Il y a personne ! Il y a absolument personne, je suis toute seule assise sur ma chaise comme une clocharde.
'''Gérard''' : Non, bah c'est bizarre. On entend du monde chez quelqu'un, mais je voudrais bien savoir chez qui.
'''Cassenoisette''' : Ouais, donc je te disais, bientôt il y a un petit jeune de 14 ans qui commence à se mettre à la politique et les médias vont bientôt en parler. Je peux pas en dire plus parce que sinon ça serait divulguer des secrets... des secrets d'État. Néanmoins, sache que tu vas bientôt entendre parler d'un petit jeune de 14 ans.
'''Tony''' : C'est pas Jordi ?
'''Gérard''' : Non, non, mais c'est bon. On n'a pas besoin de savoir les noms, d'accord ?
'''Cassenoisette''' : Je ne donne pas de noms.
'''Gérard''' : Oui, non, mais je sais. Ouais, je sais. Cassenoisette, c'est pas pour toi que je parle, c'est pour Tony qui veut dire sûrement de qui il veut parler. Je vois à peu près.
'''Reego''' : Il y a un certain Max sur l'IRC qui me demande si les animaux ont le droit de voter.
'''Gérard''' : Je vois pas comment qu'ils pourraient voter, les animaux.
'''Reego''' : Il me dit : dans la mesure où certains hommes politiques sont des chiens, les animaux pourraient voter.
'''Gérard''' : Ouais, mais ça... Maintenant avec les trucs sur les Guignols de l'info, comme ils font pas mal de conneries, ils s'amusent à faire des... des figurines des hommes politiques en tête de chien et tout ça. Saucisson à l'ail, j'étais venu à toi.
'''Saucisson à l'ail''' : Bah écoute, moi je pense qu'ils ont pas vraiment le droit, mais c'est pas pour ça que ça les empêche de le faire quoi.
'''Gérard''' : D'accord, ok. Plotte-moi ?
'''Plotte-moi''' : Euh oui, donc je crois que c'est un peu bizarre ce qu'elle a dit tout à l'heure, parce que moi j'ai entendu parler qu'il fallait quand même avoir 23 ans, il me semble.
'''Gérard''' : Non, là tu peux... non c'est 21. Non, si je me souviens, si je me trompe pas... Non, non, pour être... pour machiner, il faut avoir 21 ans à peu près pour voter...
'''Cassenoisette''' : Je peux rajouter juste quelques...
'''Gérard''' : Oui, oui, vas-y.
'''Cassenoisette''' : Il faut savoir qu'en fait, cet enfant-là, ce jeune adolescent, va demander l'anticipation.
'''Gérard''' : Ah d'accord, d'accord.
'''Cassenoisette''' : Donc c'est pour ça que je répondais à la question. Je ne peux pas divulguer, c'est quand même un secret d'État, c'est pas à moi d'en parler. Les médias vont faire leur boulot beaucoup mieux que moi, et donc voilà, c'est tout ce que je voulais dire.
'''Plotte-moi''' : C'est ton gosse, Gérard ?
'''Gérard''' : Non ! C'est... On se calme ! Je viens d'entendre un nom que j'aime pas. Par contre là, on vient de me donner un petit sondage : il y a 20... Donc, pour ou contre la politique ? Mais ça j'en avais pas parlé, donc je vois pas pourquoi qu'on met « pour ou contre ». Donc, il y a 20 % des gens qui... qu'ont dit qu'ils n'aimaient pas la grossièreté, ça c'est vrai. 40 % des gens ont dit que les... que les types, c'étaient des petits parasites...
'''Manu''' : Les tiques, c'étaient des petits parasites.
'''Gérard''' : Ouais, que c'était l'éthique, c'étaient des petits parasites que l'on trouve sous les... sous le chien. Et 40 % des gens ont dit qu'ils n'en avaient rien à foutre. Et ça, je suis bien d'accord avec les 40 % qui disent qu'on en a rien à foutre. Ça, pour moi, c'est réel. Donc Tony, pour toi ?
'''Tony''' : J'ai pas suivi la question, parce qu'avec tes sondages là tu m'as perturbé.
'''Gérard''' : Alors : les enfants ont-ils le droit de faire de la politique ? Voilà la question.
'''Tony''' : Bah oui tout à fait. Moi je pense que les enfants, ça serait pas pire que ce qu'il y a maintenant. Enfin moi je sais pas, si par exemple une fille de 12 ans elle est aussi bien galbée qu'Élisabeth Guigou...
'''Gérard''' : Bon Tony ! Tony, c'est la dernière fois. Tu vas retourner voir Manu au standard !
'''Phildar''' : Ah, il est impossible ce Tony !
'''Gérard''' : Non, non Tony, je te l'avais dit gentiment tout à l'heure de ne pas citer le nom des personnes politiques.
'''Tony''' : J'ai pas entendu, j'étais au standard.
'''Gérard''' : Si, si, t'as très bien entendu ! Donc c'est terminé ! C'est terminé Tony ! C'est terminé ! C'est terminé ! C'est terminé ! Terminé pour toi, Tony. Au revoir.
'''Tony''' : Bon, je t'embrasse, Eliabeth.
'''Reego''' : Et sur IRC on me dit : « Tony tu dégages ».
'''Gérard''' : Voilà bah ça y est, il est parti. Donc, T-bête ?
'''T-bête''' : Moi je dis que les gosses ils ont rien à faire dans la politique, oui. Ils feraient mieux de jouer au Lego et de pas nous faire chier quoi. C'est une affaire d'adultes et c'est pas du tout une affaire de gamins quoi.
'''Gérard''' : Ouais mais, comme je disais tout à l'heure, donc faut bien avoir la majorité pour y être.
'''T-bête''' : Mais c'est même pas une question de majorité, c'est que les gosses ils ont rien à faire là-dedans quoi. Ils jouent aux billes et puis c'est tout.
'''Gérard''' : Ouais mais t'en as beaucoup qui veulent se lancer dedans aussi.
'''T-bête''' : Mais ouais, mais c'est des petits cons.
'''Gérard''' : Bon, ok. Grosstring ?
'''Grosstring''' : Bah moi je sais pas. Mais je sais pas si tu regardes des fois, ils invitent des mômes à l'Assemblée Nationale. Pour faire des séances et tout, et pour s'intégrer un peu. Ils s'emmerdent, ils posent tous la même question : « Quand est-ce qu'on mange ? ». Ils veulent tous aller pisser en même temps.
'''Gérard''' : Ouais, non mais...
'''Grosstring''' : Et en plus, ils dégueulassent tous les sièges des députés.
'''Gérard''' : Ouais mais non mais attends !
'''Grostring''' : Attends, je parle s'il te plaît. Moi je trouve que, vraiment, les mômes c'est à l'école, à la crèche ou au baby-sitting et tout, et puis c'est pas dans la politique quoi ! Ça va !
'''Gérard''' : Non, mais faut dire qu'aussi avec ce qui se passe à l'heure actuelle, bon bah... les étudiants, les trois quarts ont 15, 16 voire 17 ans.
'''T-bête''' : C'est des petits cons, les étudiants !
'''Gérard''' : Ouais mais attends, mais c'est quand même... c'est quand même... c'est quand même leur problème. Parce que bon, faut dire une chose que si ils sont trop nombreux dans les classes... faut voir aussi le nombre de personnes qu'il y a dans les classes. J'ai entendu dire qu'ils étaient jusqu'à 50 personnes dans une classe.
'''T-bête''' : 70 moi j'ai entendu.
'''Grosstring''' : Excuse-moi, mais même s'ils sont 50 par classe, c'est pas beaucoup. T'en mets 20 dans la classe et 30 dans le couloir, tu laisses la porte ouverte et tout le monde peut suivre.
'''Gérard''' : Ouais, non non non. Non non. Attends, attends. Attends, attends, Grosstring ! Grosstring ! Grosstring ! S'il te plaît, attends. Il y a une question IRC.
'''Reego''' : Oui, Grosstring, je suis désolé. Il y a Erki sur IRC donc qui te demande, Gérard : « À combien d'érections as-tu participé ? ».
'''Gérard''' : Non mais ça, j'y répondrai pas parce que c'est pas le thème du débat politique.
'''Reego''' : Ah si, en politique les élections c'est normal !
'''Manu''' : À la place de Tony, on accueille Caillera qui appelle de Sarcelles, 101.9.
'''Caillera''', ''[prenant l'accent d'un jeune de banlieue parisienne]'' :Bonsoir Lascard !
'''Gérard''' : Non, tu parles comme il faut !
'''Caillera''' : Je suis une caillera. Moi je voulais dire que je vote... je vote et voilà.
'''T-bête''', ''[même accent]'' : Tu votes pour qui toi ?
'''Caillera''' : Moi je vote pour... pour ceux qui légaliseront le vol de... des mobylettes. Voilà.
'''Gérard''' : D'accord, ok. D'accord. Tu peux répondre à la question ?
'''Caillera''' : J'ai pas entendu, j'étais au standard.
'''Gérard''' : Alors : les enfants ont-ils le droit de faire de la politique ?
'''Caillera''' : Tout à fait ! Moi je suis tout à fait d'accord, que pourquoi il y aurait des discriminations comme ça dès le plus jeune âge ?
'''Gérard''' : Non mais... Moi je peux vous dire, moi je peux vous dire une chose, que j'ai... je voudrais pas que mon enfant s'amuse à faire de la politique parce que ça, ça me plairait pas du tout. Déjà moi j'en fais pas, donc...
'''Phildar''' : Et pourquoi justement ? Justement sur Minitel, en plus ça cartonne, ce soir on est 30 connectés. Il y a un auditeur qui s'appelait je sais plus comment, Yann, qui voulait te demander pourquoi toi tu ferais pas de la politique et pourquoi tu serais pas ministre de la route ?
'''Gérard''' : Non, non, mais ça, moi c'est un truc qui me branche pas. Et quand j'entends parler de ce qu'ils parlent à la télé, même sur les radios, fais-moi confiance que c'est une prise de tête pas possible. Donc... c'est sans arrêt en train de nous dire : « Ouais mais de toute manière... ». Comme ils disent pour les étudiants : c'est malheureux d'en parler. Ils disent : « Ouais, de toute manière on vous promet des bourses et puis tout ça », et puis en fin de compte ils ont jamais rien les étudiants. Ils ont jamais rien eu, et c'est pour ça moi je leur donne raison de faire ce qu'ils font, c'est tout. C'est quand même leur truc pour avoir un bac et donc moi je leur donne raison, c'est tout. Continuez. ''[applaudissements de Manu et Phildar qui acclament, Gérard président]''.
'''Reego''' : À ce propos, y'a Yankee sur IRC qui me dit : « Si Gérard était président, c'est l'État qui se ferait enculer ».
'''Gérard''' : Bon bah ça, il se démerde. Donc, quatrième question... Alors : pensez-vous que l'on parle trop de politique ? Caillera ?
'''Caillera''' : Moi je suis d'accord avec toi Gérard, parce que moi y'a... dans la téci, ils tournent... y'a le maire l'autre fois il est venu et il nous parle, il nous prend la... il nous prend la... il nous prend la gueule, il nous fait : « Arrêtez de fumer des tarpés, trouvez un job », tout ça... Mais non, on s'en fout ! Non on s'en fout, parce que on casse des trucs.
'''Grosstring''' : Bah moi je trouve que on en parle pas... pas tellement en fait. Là, pas plus tard que... attends ouais c'était hier, j'ai regardé « Le Juste Prix » : que dalle !
'''Gérard''' : Non mais attends ! Eh ! Oh ! Grostring ! Tu crois... tu crois qu'ils en parlent pas assez ? Ils ont fait... ils ont fait carrément tout un truc sur... euh... sur Bill Clinton à 23h10. Attends ! Tu te fous de moi là ? Dans ce cas-là, si tu regardes « Le Juste Prix », c'est pas la peine de participer au débat sur la politique !
'''Grostring''' : Quant au journal télévisé, là tout à l'heure, ils ont pas vraiment... tout ce qu'ils ont montré : c'est la fusée qui décolle.
'''Gérard''' : Bah ouais, mais ils ont quand même parlé de la politique, je suis désolé.
'''Grostring''' : Ils ont parlé de politique les astronautes quand ils décollaient ?
'''Gérard''' : Non non mais ils en ont quand même parlé à 20h. Je suis désolé, à 20h !
'''Grosstring''' : Moi j'ai allumé à 20h02, ils n'en parlaient plus déjà.
'''Gérard''' : Alors... non, non mais attends. T-bête ? ''[silence]''. T-bête ''[sonnette]''. Oh ! Tu te réveilles ? Allez hop ! Bonne nuit pour lui ! Allez hop ! Celui-là c'est... comme ça il se réveillera. Oui Reego ?
'''Reego''' : Oui il y a Vomis de porc sur IRC qui te demande, Gérard : « Pourquoi tu dis qu'il y a trop de poils éthiques ? Tu aimes les hommes imberbes ? ».
'''Gérard''' : Non n'importe quoi ! N'importe quoi ! Plotte-moi ?
'''Plotte-moi''' : Ouais, moi je pense que... Il y a trop de... il y a trop de... il y a trop de politique. D'ailleurs on devrait directement passer au deuxième débat.
'''Gérard''' : Non mais alors pour l'instant c'est pas...
'''Caillera''' : Toi, tu vas gagedé, toi !
'''Gérard''' : Non mais attends, toi si t'es pas content tu vas faire comme Tony, T-bête : tu vas gerber aussi. Comme ça on va prendre d'autres personnes, tu vois ? J'ai envie de... ce soir on est à la troisième, il y a 12 questions. Alors soit que tu réponds gentiment à la question, soit que tu vires. Tu choisis.
'''Plotte-moi''' : Je veux bien faire comme Tony parce que mon nom il me plaît pas trop là.
'''Gérard''' : Eh ben alors, c'est bien alors ! Pareil ! Allez salut ! C'est bien : il ne nous reste plus qu'un, deux, trois, quatre... Il nous en reste plus que quatre.
'''Manu''' : Attends excuse-moi Gérard, on accueille quand même Citrouille.
'''Citrouille''' : Eh salut Gérard !
'''Gérard''' : Salut Citrouille, bon t'appelle d'où ?
'''Citrouille''' : J'appelle de Paris.
'''Gérard''' : Ok. Alors donc je répète la question comme tu viens d'arriver.
'''Citrouille''' : Oui s'il te plaît.
'''Gérard''' : Alors : pensez-vous qu'on parle trop de politique ? On va demander à Cassenoisette, comme j'étais sur elle en premier.
'''Cassenoisette''' : Ouais ben on en parle beaucoup, c'est vrai, mais à tort et à travers. Tu vas dire que je vais remettre l'histoire de Clinton sur le tapis...
'''Gérard''' : Non mais justement, j'en ai parlé aussi moi. Donc...
'''Cassenoisette''' : Bon je vais t'expliquer en gros. Moi j'ai dû partir là-bas... j'ai dû partir aux États-Unis parce que je travaille au Parlement et on a dû donc aller là-bas, et on a eu des réunions donc avec Bill Clinton. Et il faut savoir qu'il y a des choses qui sont vraies et qu'il y a des choses qui ne sont pas vraies. C'est-à-dire qu'on va revenir sur le harcèlement avec...
'''Gérard''' : Ouais mais on ne va pas s'éterniser là-dessus !
'''Cassenoisette''' : Non, non, non. Mais il y a des choses... il faut savoir que, bon, il ne l'a pas harcelée quoi. Elle était tout à fait d'accord et bon,
'''Gérard''' : Elle était consentante...
'''Cassenoisette''' : elle était tout à fait consentante. Elle adorait le sucer, elle ravalait tout, elle était contente et puis voilà quoi.
'''Gérard''' : D'accord... Attendez, attendez ! Il y a une question IRC.
'''Reego''' : Oui, enfin c'est une réaction à ce sujet : on te demande, Gérard, à ton avis, est-ce que pour qu'un président fasse parler de lui il faut qu'il se fasse sucer ?
'''Gérard''' : Non pas spécialement.
'''Phildar''' : On va peut-être pas revenir sur l'affaire Bill Clinton.
'''Gérard''' : Non mais en deux mots... Moi je lui dis, là je peux y répondre de toute manière : ça sert à rien strictement. C'est cassenoisette.
'''Grostring''' : Ouais mais Gérard, il faut reconnaître que ça aide quand même.
'''Gérard''' : Ouais mais ça, je vois pas...
'''Grostring''' : S'il y avait un président, par exemple un président bulgare ou un truc comme ça, un mec dont on n'entend jamais parler : s'il se faisait pomper un bon coup, je suis sûr que dès demain on en entendrait parler quoi. C'est clair.
'''Manu''' : On accueille Casse-couille.
'''Casse-couille''' : Bonsoir à tous ! Bonsoir aux 20 millions d'auditeurs qui nous écoutent quand même. J'ai 19 ans et j'appelle de Mont-de-Marsan.
'''Gérard''' : Et la fréquence de Mont-de-Marsan ?
'''Casse-couille''' : Euh alors ça, je sais plus moi.
'''Manu''' : Je vais la trouver !
'''Saucisson à l'ail''' : Bah écoute moi Gérard, moi je pense que la politique, si tu veux en entendre parler, t'en entends parler. Mais si tu veux pas en entendre parler, t'en entends pas.
'''Gérard''' : Bah voilà. Donc je suis tout à fait... Euh, Citrouille ? T'avais pas répondu.
'''Citrouille''' : Ouais mais alors moi je dis : on parle pas assez de la vie privée des hommes politiques. Moi je voudrais savoir si Chirac il met des slips ou des caleçons.
'''Gérard''' : Ah si, si ! Attends, attends ! Citrouille ! Citrouille ! Citrouille ! Citrouille ! Attends Citrouille, je vais te dire une chose : on en a quand même... on en entend parler sans arrêt, parce qu'hier y'a un truc sur la première qui a passé carrément toute la partie... une bonne partie de la nuit. Ils ont fait ça à 23h30 sur la 1. Je sais plus le nom du reportage (je crois que c'est « Reportages ») : ils nous ont cassé les burnes avec l'affaire Bill Clinton !
'''Citrouille''' : Pourquoi t'as regardé ?
'''Gérard''' : Non, non je vais pas regarder ! J'ai zappé parce que ça me prenait la tête.
'''Citrouille''' : Moi je dis qu'il faudrait faire ça toutes les semaines : si Chirac il a des maîtresses, si Jospin il a une grosse piste...
'''Gérard''' : Ouais bah c'est bon ! On en a rien à foutre ! Ouais, Casse-couille ?
'''Grosstring''' : Gérard ? Ouais c'est Grosstring. Je voulais juste dire un truc sur la vie privée des hommes politiques. Je sais pas si t'as remarqué, mais l'été dans tous les magazines genre Paris Match, Gala, etc., c'est que des photos des hommes politiques qui sont... qui sont moule-couilles sur la plage.
'''Gérard''' : Ouais mais d'accord, mais ça c'est... non mais ça c'est leur problème.
'''Manu''' : On a même vu Barthez en jet-ski, t'imagines ?
'''Gérard''' : Casse-couille, tu veux répondre avant qu'on pose la cinquième ?
'''Casse-couille''' : Ce qu'il y a c'est que moi j'étais au standard.
'''Gérard''' : Alors : pensez-vous qu'on parle trop de politique ? Manu, tu me gères celui qui arrête pas de roter comme un porc parce que ça m'énerve ça !
'''Manu''' : Pas de problème, il va aller gerber, il va revenir.
'''Gérard''' : Ouais bah il va aller gerber... il va aller gerber chez lui définitivement !
'''Reego''' : Il y a Gognol sur IRC qui te demande comment tu ferais pour boucher le trou de la Sécu ?
'''Gérard''' : Ah bah ça c'est pas mon problème ! Ça c'est pas mes problèmes. Pour les trous de la Sécu, ils sont assez grands de s'en occuper ! Ça ça me regarde...
'''Reego''' : Bah apparemment non.
'''Phildar''' : Ouais mais attends ! C'est bien aux hommes politiques de s'occuper du trou de la Sécu. Alors Casse-couille, pour toi ? Alors pensez-vous que l'on parle trop de politique ? Donc c'était la question comme tu étais au standard.
'''Casse-couille''' : Ouais, je tiens à préciser que d'abord que la fréquence c'est 52.6 à Mont-de-Marsan vu que je l'avais pas dit tout à l'heure. Donc effectivement, je trouve qu'on en parle beaucoup, mais on en parle quand même un peu moins que quand il y a les élections. Là, on en a 24 heures sur 24, il y a que de ça.
'''Gérard''' : Ah ouais mais... mais non mais Casse-couille ! N'empêche, je suis au directeur : c'est une chose que, d'accord, on en parle moins avant qu'il y ait eu les élections, mais là quand même ils nous bassinent encore à l'heure actuelle avec l'affaire Bill Clinton et l'affaire... Levinsky ! Avec Levinsky !
'''Casse-couille''' : Ouais mais je croyais que tu voulais pas en parler ?
'''Gérard''' : Non, non mais moi je te dis : tu dis qu'on en parle pas assez... si ! Ils sont en train de nous bassiner avec tout ça !
'''Citrouille''' : Mais ils en parlent pas assez !
'''Gérard''' : Bah ouais mais on en a ras-le-bol d'entendre parler de ça sans arrêt !
'''Auditeur''' : Mais non !
'''Gérard''' : Donc alors, vous allez réfléchir à la question : « Avez-vous un membre de votre famille qui fait de la politique ? ». Et on va s'écouter Pierre de la Montagne avec Elles sont blanches mes chaussettes et elles puent. Et on se retrouve tout de suite après. ''[Musique]''.
'''Gérard''' : Voilà, vous pouvez toujours nous appeler au 0803 08 5000 et 0800 70 5000. Toujours le 36 15 code Fun Radio, rubrique direct, et l'IRC www.fr Fun... euh... Fun Radio,
'''Reego''' : Slash Fun Radio. On a 921 connectés quand même, Gérard, ce qui est énorme !
'''Gérard''' : Ouais, j'en veux 1000 ! J'en veux 1000 avant... avant une heure et demie. Et alors on va... ON récupère Saucisson à l'ail, Cassenoisette, Grostring, Caillera, Citrouille et Casse-couille.
'''Casse-couille''' : Oui, si tu pouvais donner le label, la maison d'édition des disques que tu mets, ça m'aiderait.
'''Gérard''' : Bon, alors là, faut demander ça à Phildar.
'''Phildar''' : C'est le label rouge, c'est approuvé.
'''Casse-couille''' : D'accord, merci. Je connais, je connais.
'''Gérard''' : Ouais, bon c'est bien, c'est bien comme ça. Donc vous avez eu le temps de réfléchir à la question. On va demander... bah tiens, Casse-couille.
'''Casse-couille''' : Moi non, j'ai pas de... j'ai pas de membre, ni de ma famille ni de mon corps, qui participe à la politique.
'''Citrouille''' : Ouais, moi j'ai un oncle, mais bon c'est la tehon, il est communiste alors on lui parle plus.
'''Gérard''' : Non non non ! Non non, mais ça...
'''Phildar''' : On fait pas de politique.
'''Citrouille''' : Ah ok, ouais. Bon bah on lui parle plus quand même parce que c'est un gros con.
'''Gérard''' : Ok, ah bah c'est bien. Alors Caillera ?
'''Caillera''' : Ouais, moi je... mais nous, ils veulent pas de nous parce qu'on a... avec des tepo, on a voulu faire un parti politique.
'''Gérard''' : Ouais ?
'''Caillera''' : Et on est allé à la mairie et ils ont pas voulu de nous, ces messieurs.
'''Gérard''' : D'accord. Gros String ?
'''Gros String''' : Bah moi j'ai un cousin, ouais, qui fait de la politique. Ouais. Et il colle des affiches. Et bah voilà quoi. Un jour il était dans la merde parce qu'il avait emmené qu'un tube de colle, et il a pu en coller que trois quoi.
'''Gérard''' : D'accord, d'accord. Je vois pas du tout le rapport. On prend pas de la colle, on prend pas des tubes de colle ! On prend pas des tubes de colle, les mecs ! Y'en a qui sont avec des seaux et qui préparent déjà... Ouais ouais, non mais c'est bon. Tu me laisses reparler s'il te plaît ? Merci.
'''Grostring''' : Bah non, je crois qu'il y a un moment, si tu sais pas comment on colle des affiches, moi je peux rien faire pour toi.
'''Gérard''' : Non mais attends ! Tu demanderas à ceux qui... quand ils les colleront pour les élections, tu leur demanderas !
'''Gros String''' : Excuse-moi, j'ai beaucoup de respect pour toi. Mais... ''[bruit de clochette]''.
'''Gérard''' : Bon alors celui-là, ça commence à m'énerver.
'''Gros String''' : Il a passé... mon cousin, il a passé un CAP en collage d'affiches, et il sait certainement beaucoup mieux que quiconque coller des affiches. Peut te le dire.
'''Casse-noisette''' : Ouais, bah moi j'ai pas de famille qui travaille là-dedans, mais bon moi je suis dans le milieu, je travaille pour le parti de Jean-Marie Le Pen...
'''Gérard''' : Bon bah alors Casse-noisette, c'est bon là pour toi, c'est terminé.
'''Gros String''' : Elle a le droit de parler !
'''Gérard''' : Non non non ! J'avais précisé de pas donner de... Allez hop, terminé, c'est bon. Allez hop ! Hop ! Saucisson à l'ail ?
'''Saucisson à l’ail''' : Bah écoute Gérard, moi chez moi tout le monde est contre. ''[la voix de Gérard criant : Ah non nonn non non non]''.
'''Gérard''' : Saucisson à l'ail, continue.
'''Saucisson à l’ail''' : Moi je t'ai dit, mais chez moi tout le monde est contre... ''[même voix]''.
'''Gérard''' : Eh ça commence à bien faire là ! Phildar ?
'''Phildar''' : Non c'est pas moi.
'''Gérard''' : Non, c'est pas toi qui t'amuses avec un petit bouton là ?
'''Phildar''' : Non. Moi, je suis en train de me percer les miens, mais ça ça te regarde pas.
'''Gérard''' : Oui oui oui, mais t'es en train de t'amuser là-bas ! Ok ? Je t'ai vu. Donc Saucisson à l'ail, toi pour toi ?
'''Phildar''' : Gérard, deux secondes, j'ai une question sur Minitel. On est encore 23 connectés. De R2D2 : « Je trouve qu'il y a beaucoup trop d'hétérosexuels dans le milieu de la politique. Et toi Gégé, que t'en penses quoi ? ».
'''Gérard''' : Moi j'en pense rien du tout de ça.
'''Phildar''' : Mais est-ce que tu trouves que en fait, justement en ce moment on parle du PACS, je sais pas si tu...
'''Gérard''' : Non non, mais ça c'est pas... ça rien, j'en parle pas.
'''Phildar''' : Pour le mariage des homosexuels qui font de la politique...
'''Gérard''' : J'en parle pas ce soir, c'est tout.
'''Phildar''' : Pourquoi ?
'''Gérard''' : Parce que ça m'intéresse pas, c'est tout !
'''Phildar''' : Mais c'est intéressant, les gens ils aimeraient savoir.
'''Gérard''' : Ouais bah peut-être, mais moi...
'''Gros String''' : Gérard ? Excuse-moi, excuse-moi, Gros String là. T'aimerais pas de faire introduire dans le milieu ?
'''Manu''' : Il préfère sur le côté. On accueille X s'il vous plaît.
'''X''' : Oui, bonsoir Gérard.
'''Phildar''' : Oh elle est bien, elle !
'''Gérard''' : T'appelles d'où ?
'''X''' : Bah j'appelle de chez moi apparemment. Un appartement très bien d'ailleurs.
'''Gérard''' : Donc région parisienne ?
'''Phildar''' : Le truc que tu paies 900 balles là.
'''Gérard''' : Région parisienne ?
'''Phildar''' : 90 mètres carrés là ?
'''Gérard''' : Région parisienne ?
'''X''' : Bah oui, région parisienne.
'''Gérard''' : Ok, 101.9. Merci d'apprécier. Donc à toi, X. Alors, de répondre ?
'''X''' : Bah si tu peux me répéter la question parce que j'étais au standard.
'''Gérard''' : Avez-vous un membre... avez-vous un membre de votre famille qui fait de la politique ?
'''X''' : Non, malheureusement j'ai pas... j'ai pas quelqu'un qui fait de la politique dans mon entourage ni dans ma famille. Non.
'''Casse couille''' : C'est l'invitée Mystère ça, non ?
'''Gérard''' : D'accord. Donc moi je peux vous dire que moi non plus. Comme j'ai pratiquement personne que... de cet entourage, moi là-dedans, je suis tranquille.
'''Gros String''' : Gérard, ton membre, il fait pas de politique ?
'''Gérard''' : Bah... Gros String, tu veux parler de quel membre ? Alors vas-y.
'''Gros String''' : Ton membre à toi ! Tu nous demandes nos membres à nous maintenant...
'''Gérard''' : De la famille s'il vous plaît que je demande ! Faut pas confondre les torchons et les serviettes. D'accord ?
onlCailleraEt alors ta femme ?
onlGérardMa femme, elle t'emmerde. Alors, sixième question...
'''Phildar''' : Déjà ? Ça passe tellement vite.
'''Gérard''' : Bah oui. Doit-on voter pour... Peut-être une question IRC avant...
'''Phildar''' : J'en aurai une, j'en aurai une !
'''Reego''' : Vas-y, vas-y, Phildar.
'''Phildar''' : Ok, donc c'est Paul Ethic qui te demande : « Gérard, as-tu un membre actif dans les parties ? ».
'''Gérard''' : Non. Donc il est rassuré.
'''Reego''' : Sur IRC... pardon. Il y a SNUL qui te demande si tu connais le parti GNB ?
'''Gérard''' : Non plus. On est combien là maintenant ?
'''Phildar''' : On est 7 ou 8 dans le studio.
'''Gérard''' : Non non, mais ça je m'en fous ! Je veux savoir sur l'IRC si on va dépasser les mille ce soir.
'''Reego''' : 986, on y arrive bientôt. Merci le Pape.
'''Gérard''' : Alors on continue. Donc sixième question : « Doit-on voter pour avoir une copine ? ». On va demander ça à Gros String, comme il n'arrête pas de jacter sans arrêt.
'''Gros String''' : Est-ce que tu peux répéter ? J'ai mal compris.
'''Gérard''' : Doit-on... doit-on voter pour avoir une copine ? C'est la dernière fois que je répète la question, alors ouvrez bien les oreilles.
'''Gros String''' : Alors j'ai compris, mais il faut articuler aussi un peu. Alors est-ce qu'on doit voter pour avoir une copine ? Moi je dis oui si on veut... si on veut niquer une nana qui fait de la politique. Genre je sais pas moi, par exemple, comment elle s'appelle l'autre là... ah, la blonde là, Elisabeth...
'''Caillera''' : Elisabeth Guigou !
'''Gérard''' : Alors c'est bon Caillera, tu peux partir. Et Gros String avec, tous les deux, vous pouvez partir. On va demander ça à Saucisson à l'ail.
'''Saucisson à l’ail''' : Bah écoute, moi franchement je dis que non. Ça dépend, mais franchement je dis que non.
'''Gérard''' : D'accord, je vois bien ce que tu veux dire. Citrouille ?
'''Citrouille''' : Ouais, moi je me suis jamais fait de meuf, alors je suis pas...
'''Gérard''' : Non mais : « Doit-on voter pour avoir une copine ou un copain ? », si tu veux, dans l'ensemble.
'''Citrouille''' : Bah moi j'ai plein de copines !
'''Gérard''' : Non mais putain, mais t'es bouchée ou quoi toi ce soir ?
'''Citrouille''' : Non, pourquoi ?
'''Gérard''' : T'as mangé quoi là ? T'as mangé du poulet enragé, on dirait ?
'''Citrouille''' : Non, il était pas enragé.
'''Gérard''' : Bah dis donc, on dirait ! Parce que je crois... je crois que tu comprends pas ce que je veux dire.
'''Citrouille''' : Peut-être les champignons, ils devaient pas être frais alors.
'''Gérard''' : Ouais, d'accord.
'''Reego''' : Gérard, il y a Turpentine sur IRC qui te demande si tu as voté pour trouver Sandy ?
'''Gérard''' : Personnellement, non, je l'ai...
'''Manu''' : Il a voté nul, ouais !
'''Gérard''' : Attends, je l'ai votée par pochette surprise dans IP Magazine. Ça va lui faire plaisir !
'''Reego''' : C'est pas un truc de homo ça ?
'''Gérard''' : Non non, c'est un magazine comme ça. Donc qui c'est qui nous reste ? Casse-couille ?
'''Casse-couille''' : Oui, bah moi j'ai très bien entendu ta question, mais je la comprends pas très bien quoi.
'''Gérard''' : « Doit-on voter pour avoir une copine ou un copain ? ».
'''Casse-couille''' : Bah je comprends pas le rapport là.
'''Gérard''' : Bah doit-on voter... par exemple, si tu veux voter... Pour qui... Tu peux voter si tu veux ! Tu peux voter pour retrouver une copine, t'as le droit !
'''Casse-couille''' : Bah logiquement, quand tu votes c'est pour... pour élire quelqu'un !
'''Gérard''' : Bah oui ! Bah dans... dans la politique y'a bien des nanas qui font de la politique. Donc si tu veux être copine avec elles, faut bien que tu votes pour elles, voyons !
'''Citrouille''' : N'importe quoi !
'''Casse-couille''' : Ah ouais, mais faut avoir des business...
'''Gérard''' : Quoi ? Qui c'est qui dit n'importe quoi ? Qui c'est qui vient de dire n'importe quoi ?
'''Manu''' : Ouais, alors donc on accueille Téton et on accueille aussi Bulldog Mystère. ''[Gérard regarde Manu méchamment]''
'''Bulldog Mystère''', ''[voix de tête]'' : Oui bonsoir ! Bonsoir Gérard, bonsoir tout le monde.
'''Manu''' : C'est ce qu'il m'a donné comme nom, Gérard ! Me regarde pas comme ça.
'''Gérard''' : Alors lui tu peux... tu peux lui dire qu'il prenne un autre nom.
'''Bulldog Mystère''' : Je veux rester dans l'anonymat.
'''Gérard''' : Qu'est-ce que c'est encore ce travlot là ?
'''Bulldog Mystère''' : Eh bah écoute, je vote !
'''Gérard''' : Eh c'est pas un débat sur les travlots, c'est un débat sur la politique !
'''Bulldog Mystère''' : Je vote aussi bien que toi !
'''Gérard''' : Ouais bah moi je t'emm... Bon, les fréquences là s'il vous plaît.
'''Bulldog Mystère''' : 96.10.
'''Gérard''' : Et Téton ?
'''Téton''' : Bah moi j'appelle de Lille.
'''Gérard''' : Fréquence ?
'''Téton''' : 96.8.
'''Bulldog Mystère''' : J'ai pas encore de téton moi.
'''Gérard''' : 96.8. Ok. Et alors X ?
'''X''' : Non, je pense qu'on devrait créer des écoles pour voter, pour essayer d'avoir une copine quoi.
'''Gérard''' : Téton ?
'''Téton''' : Oui bah si tu voudrais répéter la question, parce que j'étais au standard.
'''Casse couille''' : Il a dit qu'il la répétait pas.
'''Gérard''' : Alors doit... ça commence à bien faire ! Faudrait peut-être écouter...
'''Manu''' : Quand je leur parle, ils peuvent pas t'entendre, Gérard. Donc euh...
'''Reego''' : Gérard, il y a une bonne question de Toons sur l'IRC : « Est-ce qu'il est normal que tout le monde ait le droit de voter ? ».
'''Gérard''' : Bah ça dépend des âges. En principe tu as le droit de voter qu'à partir de 18 ans. Mais donc si t'as moins de 18 ans, tu n'as pas le droit de voter.
'''Reego''' : Et on est mille sur l'IRC ça y est !
'''Gérard''' : Ah ça y est, on a atteint les mille hein ! ''[ovations générale, applaudissements du studio]''. On a atteint les mille quand même. Il est 1H20, j'avais dit avant 1h30. C'est bien, continuez.
'''Bulldog Mystère''' : Moi Gérard, en tant que Travlo, j'estime que tout le monde a le droit de voter.
'''Gérard''' : Non mais attends ! Pour l'instant je demande à Téton, je demande pas au Bulldog.
'''Téton''' : Tu m'as toujours pas répété la question.
'''Gérard''' : Alors : « Doit-on voter pour... pour choisir une copine ou un copain ? ».
'''Téton''' : Euh ouais, peut-être, pourquoi pas ouais.
'''Gérard''' : Ouais ? Ouais mais c'est pas mal là ta réponse.
'''Téton''' : Ah qu'est-ce que t'en penses ?
'''Gérard''' : Ouais bah elle est nulle à chier ! Bulldog Mystère là ?
'''Citrouille''' : Comme la question.
'''Gérard''' : Attends, si t'es pas contente tu raccroches et tu vas faire dodo !
'''Bulldog Mystère''' : Écoute, moi je vote, mais c'est pas pour trouver une copine parce que je suis hermaphrodite. Donc...
'''Citrouille''' : Pas d'insulte !
'''Gérard''' : Bon eh les autres derrière, vous le laissez parler. On vous a laissé parler, alors vous le laissez parler.
'''Bulldog Mystère''' : Un petit peu de respect quand même. Je suis différent de vous, mais je suis quand même... j'estime...
'''Phildar''' : T'as le droit de t'exprimer. T'inquiète pas.
'''Bulldog Mystère''' : Bah oui ! Merci Phildar. Tu connais ce problème en plus.
'''Gérard''' : Ouais, non mais vas-y accouche là ! On va pas...
'''Bulldog Mystère''' : Bah oui, bah je te dis moi j'ai pas besoin de voter pour... pour trouver un copain. Je vais en boîte.
'''Gérard''' : D'accord. Même en boîte... même en boîte, de toute manière tu peux te trouver facilement des copains ou des copines. J'ai vaguement entendu sur l'antenne.
'''Bulldog Mystère''' : C'est pas le thème du débat.
'''Gérard''' : Non mais je peux répondre que j'ai vaguement entendu ce soir qu'il y en a une, elle savait pas du tout ce qu'elle voulait faire avec le mec qu'elle a rencontré vendredi à La Loco. Donc c'est pas grave. Oui Reego ?
'''Reego''' : Oui, il y a Le Chiant sur IRC qui te demande si on peut voter dans tous les pays.
'''Gérard''' : Euh... très bonne question. Je vais y réfléchir, je vous donnerai les réponses tout à l'heure. Alors, la septième : « Peut-on faire de la politique pour être une star ? ». On va demander ça à Bulldog Mystère.
'''Bulldog Mystère''' : Apparemment tu m'aimes bien.
'''Gérard''' : Tu vas parler, comme c'est toi le dernier arrivé, donc tu parles un peu.
'''Bulldog Mystère''' : Euh... alors peut-on faire de la politique pour être une star ? Ouais, bah oui ! Bah tu vois bien qu'on a parlé de la b... à Clinton assez souvent, que maintenant je pense qu'il peut faire un film de boules sans problème. La b... à Clinton est connue du monde entier. Même sur Internet...
'''Gérard''' : Ouais bah ça je sais pas, sur internet si c'est vraiment vrai.
'''Bulldog Mystère''' : Écoute, j'ai cliqué dessus hier toute l'après-midi, je peux te dire que sa b... est sur le net !
'''Reego''' : Si si c'est vrai.
'''Gérard''' : Ouais je sais, il paraît qu'ils veulent... qu'ils font des photos dessus. Euh... Téton ?
'''Téton''' : Bah moi je suis d'accord avec ce que tu dis, Gérard.
'''Gérard''' : Bah... mais c'est-à-dire ?
'''Téton''' : Bah c'est-à-dire que je suis d'accord.
'''Gérard''' : Non mais c'est pas la peine de dire que t'es d'accord avec moi, mais tu précises ta réponse.
'''Téton''' : Bah je pense exactement comme toi.
'''Gérard''' : Alors ? Bah c'est-à-dire ?
'''Téton''' : C'es-à-dire que oui, je pense que oui. Ouais, effectivement, vu les circonstances, ouais je pense.
'''Gérard''' : Euh... X ?
'''Bulldog Mystère''' : Oh une collègue !
'''X''' : Bulldog Mystère ! Je suis pas du tout un collègue à toi, t'inquiète pas.
'''Gérard''' : Hé Bulldog Mystère, tu la mets un petit peu en veilleuse !
'''Bulldog Mystère''' : T'es jalouse parce que j'ai une b...
'''X''' : Tu la met en veilleuse s'il te plaît, merci. Bon, tu peux me la répéter parce qu'elle arrête pas de parler et j'entends rien.
'''Gérard''' : Alors : « Peut-on faire de la politique pour être une star ? ».
'''X''' : Non, je pense pas qu'on peut faire de la politique pour être une star. Parce que toi t'es déjà une star, et t'as pourtant pas fait de politique !
'''Citrouille''' : N'importe quoi !
'''Gérard''' : Qui c'est qui dit n'importe quoi ?
'''X''' : Bah pourquoi tu dis n'importe quoi ?
'''Téton''' : Ce qui est vrai, c'est qu'il sent l'alcool.
'''Citrouille''' : N'importe quoi !
'''Gérard''' : Hé celle qui est pas contente, alors tu rentres chez toi et tu t'écrases d'accord ?
'''X''' : T'as des meilleures réponses toi ?
'''Citrouille''' : Qu'est-ce qu'on peut entendre comme conneries à la radio.
'''Casse-couille''' : Moi tout d'abord un truc que je comprends pas là : euh Bulldog Mystère et X, c'est pas la même personne ?
'''Bulldog Mystère''' : Non c'est ma sœur !
'''Gérard''' : Ouais c'est ta sœur, elle bat le beurre entre les cuisses d'un catcheur. Alors Casse-couille ?
'''Casse-couille''' : Alors moi je pense que ça, ça devrait te donner des idées d'ailleurs ! Vu que tu fais quand même aujourd'hui, même ce soir, 20 millions d'auditeurs, je pense que tu devrais te mettre dans la politique.
'''Gérard''' : Non non attends ! Pour l'instant on a pas fait 20 millions d'auditeurs. La semaine dernière on a fait 15 millions d'auditeurs. Là ce soir... la semaine dernière on avait plus de... on avait 1000 connectés à je sais plus quelle heure, et là il y a à 1h20 on était déjà 1000 connectés sur le net. Et là.
'''Reego''' : On atteint bientôt les 1200.
'''Gérard''' : Et là on va arriver... on va arriver sur 1200 connectés d'ici deux heures.
'''Casse-couille''' : Ouais mais... ouais mais Gérard ?
'''Gérard''' : Oui ?
'''Casse-couille''' : Imagine, tes 15 millions là. 15 millions d'auditeurs ! Imagine ils voteraient pour toi et tu serais président quand même !
'''Gérard''' : Ouais mais ça on verra.
'''Casse-couille''' : Bah faudrait que tu vois, faudrait que tu réfléchisses à ce genre d'hypothèse.
'''Citrouille''' : Non faut pas que tu réfléchisses !
'''Gérard''' : Non mais celle qui dit faut pas que je réfléchisse, je fais ce que je voudrai ! Citrouille ?
'''Citrouille''' : Oui. Moi je dis qu'il faut être une star pour faire la politique, et pas le contraire. Elle est mal tournée ta question. Moi je dis si Depardieu fait de la politique, t'es sûr il est élu. Moi je dis qu'il faut être une star pour faire la politique.
'''Gérard''' : Bon ok, c'est ton opinion. Mais moi personnellement, non je te dis tout de suite.
'''Citrouille''' : Bah tu la partages pas, eh bah tant pis pour toi. Mais moi je te dis que c'est ça. Tu verras, on en reparlera, on en reparlera.
'''Saucisson à l’ail''' : Bah écoute moi je suis pas tellement d'accord parce que je dis que c'est pas parce qu'on fait de la politique qu'on est une star hein. Parce que il y a bien des gens qui font de la politique et puis on s'en fout totalement, on en entend jamais parler. ''[bruit de tonalité de téléphone]''.
'''Phildar''' : C'est quoi ça ?
'''Manu''' : Je crois que c'est X qui a raccroché.
'''Bulldog Mystère''' : Merde ! Merde, merde, merde, merde, merde !
'''Gérard''' : Euh Bulldog Mystère, tu dis encore une seule fois un gros mot, tu gerbes !
'''Bulldog Mystère''' : Merde !
'''Gérard''' : Alors tu dégages ! Bonne nuit.
'''Bulldog Mystère''' : Non c'est pas moi !
'''Gérard''' : Non c'est pas toi, c'est ma sœur ? Saucisson à l'ail, donc t'as peut-être pas fini ?
'''Saucisson à l’ail''' : Si si j'ai fini Gérard.
'''Reego''' : Il y a Serval qui me demande, enfin qui te demande, si être une star politique dans les Mercedes, c'est dangereux.
'''Gérard''' : Non. Je vois le rapport où il veut en venir, mais...
'''Reego''' : Moi je vois pas.
'''Casse couille''' : Quoi ? Il y a histoire d'un pont dans la...
'''Gérard''' : Non non mais c'est bon ! Je vois ce qu'il voulait dire, donc c'est pour ça que j'y réponds pas. Alors voilà. Donc, huitième question : « Les extrasterrestres doivent-ils faire de la politique ? ». On va demander ça...
'''Phildar''' : attends Manu...
'''Manu''' : Oui oui oui. A la place de X qui a raccroché, on ne sait pas pourquoi, on accueille Jean-Pitivier.
'''Gérard''' : Ben X c'est plus là ?
'''Manu''' : Non elle a raccroché.
'''Gérard''' : Alors donc ben faudra la rappeler.
'''Manu''' : Jean-Pitivier... on n'a plus de ligne pour l'instant Gérard.
'''Gérard''' : Jean-Pitivier ? Tu me refais une fiche !
'''Bulldog Mystère''' : Je veux qu'on rappelle ma sœur...
'''Gérard''' : Oh toi ! Bulldog Mystère tout à l'heure c'est toi qui dégager, Ça va me faire une ligne de libre.
'''Jean-Pitivier''' : Oui bonsoir. Bonsoir. Alors je travaille... je suis maire sénateur, député de l'Aveyron. J'écoute vos débats depuis tout à l'heure sur la politique, je trouve ça très sympathique mais je trouve que ça n'a aucun intérêt. Pourquoi ? Je m'explique. Vous, vous allez parler, d'ailleurs je vous ai entendu dire un mot sur les extraterrestres, je pense que vous prenez un petit peu à la légère la politique et qu'on est en train de dénaturer un petit peu tout ce milieu de la politique qui est certes magouille et pots-de-vin, mais c'est en même temps grâce à la politique qu'on peut faire avancer le pays. Et je vous entends tout à l'heure poser des questions du genre : « Est-ce qu'on peut être amoureux en faisant de la politique ? ».
'''Citrouille''' : C'est bidon !
'''Bulldog Mystère''' : C'est admissible !
'''Gérard''' : Bon alors Bulldog Mystère, tu dégages pour de bon ce coup-là, allez hop ! Ça t'apprendra à couper la parole aux gens.
'''Jean-Pitivier''' : Je pense que vous abusez un petit peu, que vous avez tendance un petit peu à prendre à la légère... ça sert à rien de faire un débat sur la politique si c'est pour l'aborder d'une manière rigolote. À ce moment-là, vous faites un débat sur les strings ou sur la sodomie ! Mais ne venez pas nous emmerder, en venant faire des débats sur la politique.
'''Bulldog Mystère''' : Oui la sodomie, la sodomie ça c'est bien ça !
'''Gérard''' : Bon de toute manière, c'est pas moi qui ai décidé de faire ce débat-là. Dans ces cas-là, vous appellerez...
'''Jean-Pitivier''' : Non mais dans ces cas-là Monsieur, vous assumez vos responsabilités !
'''Gérard''' : Bon alors dans ces cas-là, si c'est pour réagir comme ça, c'est pas la peine d'appeler. Ok ?
'''Jean-Pitivier''' : Non mais écoutez, j'essaie de le dire, vous êtes en train de vous énerver, on dirait vous êtes vous-même un homme politique et je trouve ça très décevant de votre part.
'''Gérard''' : Non mais moi je fais les débats qu'on me dit de faire, c'est tout !
'''Jean-Pitivier''' : Parce que vous avez l'air aussi débile qu'un homme politique !
'''Gérard''' : Ouais bah alors si ça vous plaît pas, bah dans ces cas-là vous restez chez vous !
'''Jean-Pitivier''' : Moi ça me plaît, mais c'est sûr que je voterai pas pour votre gueule !
'''Gérard''' : Bah tant mieux ! Bah moi non plus !
'''Bulldog Mystère''' : Et moi je voulais dire que j'avais la gérardose en plaques.
'''Gérard''' : Bon allez celui-là tu me le vires là, le Bulldog Mystère. Hop terminé pour lui.
'''Jean-Pitivier''' : Monsieur Gérard, est-ce que vous avez voté dernièrement pour les cantonales ?
'''Gérard''' : Ça, ça vous regarde pas ! D'accord ?
'''Phildar''' : Est-ce que toi t'as déjà été voter ? C'est une bonne question ça, on parle de politique.
'''Gérard''' : Bah de toute manière, j'ai déjà été voter, c'est tout !
'''Jean-Pitivier''' : Pour qui ? Vous êtes de droite, RPR ?
'''Gérard''' : Non non mais ça c'est pas... ça je vous dirai pas mon parti.
'''Jean-Pitivier''' : Parce qu'on parlait tout à l'heure de Jean-Marie Guigou, un homme politique que j'aime beaucoup au demeurant... et on parle pas suffisamment d'hommes politiques, des politiques. Je veux dire, qu'est-ce que vous pensez de la gauche ? Le RPR de gauche ?
'''Gérard''' : Non non mais ça on en a rien à foutre ! J'ai dit que je voulais pas parler des partis.
'''Jean-Pitivier''' : Alors vous n'en avez rien à foutre et dès qu'il faut parler de politique, faut quand même parler des partis, de la droite et de la gauche.
'''Gérard''' : Non non mais moi je parle pas des partis, c'est tout ! Si ça vous plaît pas vous raccrochez, vous restez chez vous, c'est tout.
'''Jean-Pitivier''' : Non mais c'est débile de parler de politique avec des extraterrestres !
'''Gérard''' : Bon c'est bon, ça y est, ça y est on a compris. Merci.
'''Jean-Pitivier''' : Vous êtes con alors !
'''Manu''' : À la place de Bulldog Mystère, on accueille Pitbull Secret. Bonsoir !
'''Reego''' : Gérard, vite fait sur IRC, y'a SNUL qui te demande si tu connaîtrais un président idéal.
'''Gérard''' : Non. Alors donc on va poser la...
'''Jean-Pitivier''' : Il répond à aucune question, il est con comme ça !
'''Gérard''' : Bon alors Jean-Pitivier, vous dégagez ! Ça vous apprendra de m'insulter. Hop !
'''Jean-Pitivier''' : Attendez Monsieur ! Insulter ça fait partie du milieu politique, c'est normal !
'''Gérard''' : C'est ça, c'est ça ! Allez restez chez vous. Les extraterrestres doivent-ils faire de la politique ? ». On se retrouve tout de suite après, vous allez y réfléchir. Et on va s'écouter Gilles Duboudin avec Mets des baskets pour manger du pâté. Et on se retrouve tout de suite après. ''[Musique]''.
'''Gérard''' : Voilà bienvenue à nouveau. On va saluer tout le monde.
'''Reego''' : Voilà, je voulais saluer tous les gens de l'IRC à savoir on est quand même 1350,2...
'''Manu''' : Avant de reprendre, on accueille Jean-Cotivier.
'''Jean-Cotivier''' : Bonsoir.
'''Gérard''' : Donc on va parler... on va... je vais vous donner un petit sondage là quand même parce que rapidement... Donc tout le monde... à la question : « Tout le monde peut-il faire de la politique ? ». Alors il y a 50 % des gens qui ont répondu qu'il faut obligatoirement posséder...
'''Téton''' : Et moi j'entends plus Gérard ! Il y a un problème au standard ou quoi ? Allo ? Allo ?
'''Gérard''' : Qu'est-ce qu'il se passe là, Manu ?
'''Manu''' : Bah non il y a rien. Il y a rien.
'''Manu et Phildar''' : Allo ? Et là c'est bon ? Allo ? Vous nous entendez là ?
'''Casse couille''' : Bah non on t'entend plus Gérard mais...
'''Manu''' : Vous m'entendez ? Vous m'entendez ? Allo ! Allo ! Allo !
'''Cirtouille''' : J'entends Manu, ouais. Gérard, parle un coup !
'''Gérard''' : Allo ! Allo !
'''Casse couille''' : On n'entend plus Gérard !
'''Gérard''' : Oh mais qu'est-ce que tu me fais toi là, Phildar ! Fildar merde ! C'est toi qui fais des conneries encore !
'''Phildar''' : Mais non, j'ai rien fait !
'''Reego''' : Sur IRC ils t'entendent plus non plus.
'''Gérard''' : Qu'est-ce qu'il se passe là, Phildar ? Qu'est-ce que t'es en train de déconner là ?
'''Manu''' : Le bouton là, Phildar !
'''Phildar''' : Lequel ?
'''Manu''' : Celui-là, le petit blanc là ! Désenclenche-le. Voilà.
'''Casse couille''' : Voilà, on t'entend là.
'''Gérard''' : Voilà Phildar, t'arrêtes de faire tes conneries oui ? ''[le sketch se prolonge, Gérard explose sur Phildar qui prétend qu'il n'y a rien. Le sketch boucle deux fois, aboutit à la même explosion. Max rentre dans le studio]''. Non mais attends, il déconne depuis tout à l'heure lui !
'''Phildar''' : Y'a rien là !
'''Max''' : Ah mais ouais mais c'est normal ! Faut appuyer là, t'appuies là ! Voilà c'est bon, vous nous entendez là ?
'''Pitbyll''' : Ouais impeccable !
'''Manu''' : Oh lala t'es vraiment un cave !
'''Phildar''' : Bah je le savais pas !
'''Gérard''' : Ouais non mais tu vas le savoir, tout à l'heure tu vas te prendre une gaufre ! Alors : « Tout le monde doit-il... tout le monde peut-il perdre de la politique ? ». Sur la question, donc y'a 50 % des gens qui ont répondu qu'il faut obligatoirement posséder un chromosome de moi. Je vois pas ce que ça veut...
'''Phildar''' : Si c'est plus... ça va mieux, quand t'as un chromosome de 2 mois t'as moins de chance.
'''Gérard''' : 40 % des gens ont répondu que oui puisque c'est Gérard et le président des cons. Bah moi je l'emmerde celui qui a répondu ça ! Ça c'est des sondages de merde. Et 10 % des gens qui ont répondu merde. Ah bah c'est bien. Si c'est Olivier de la pro qui s'amuse à faire des sondages comme ça, le deuxième il va se le carrer au cul !
'''Citrouille''' : C'est quoi ce chromosome ?
'''Gérard''' : J'en sais rien.
'''Reego''' : Sinon sur l'IRC y'a Seigneur qui dit que son chien fait de la politique : sa queue part en sucette vers la droite et il a son permis d'érection.
'''Gérard''' : Alors Saucisson à l'ail t'es toujours là ?
'''Saucisson à l’ail''' : Oui oui je suis toujours là.
'''Gérard''' : Casse-couille ?
'''Casse-couille''' : Pas de problème, je suis là toujours là.
'''Gérard''' : Citrouille ?
'''Citrouille''' : Ouais je suis là.
'''Gérard''' : Téton ?
'''Téton''' : Bah ouais.
'''Gérard''' : Pitbull ?
'''Pitbull Secret''' : Bonsoir...
'''Gérard''' : Jean ? Jean-Cotivier ? Jean-Cotivier ? ''[nouveau sketch, nouvelle explosion, éclats de rire des auditeurs]''.
'''Pitbull secret''' : C'est trop facile.
'''Gérard''' : Non, fais gaffe ! Parce que tu vas retourner chez toi tout à l'heure. Je le sens, hein ?
'''Phildar''' : On a dit qu'on allait changer la question sur les extraterrestres et qu'on allait parler du président de l'Allemagne.
'''Gérard''' : Ouais, donc qui s'appelle ?
'''Phildar''' : Gérald Krafner.
'''Gérard''' : Voilà.
'''Jean Cotivier''' : C'est quoi l'histoire de l'Allemagne ? C'est quoi ? J'ai pas compris.
'''Gérard''' : Non, c'est un pays qui était... qui était machiné par un autre chancelier et maintenant ça a changé.
'''Phildar''' : Non, un chandelier !
'''Gérard''' : Un chancelier !
'''Reego''' : Non, on me confirme, c'est chandelier.
'''Gérard''' : Non, c'est chanc... chancelier ! Vous savez rien du tout, alors taisez-vous !
'''Manu''' : Gérald, ça se trouve où l'Allemagne ?
'''Gérard''' : L'Allemagne, ça se trouve du côté de...
'''Manu''' : du Pakistan un peu ou pas ?
'''Gérard''' : Non, du côté de Strasbourg par là. Vers Strasbourg de toute manière. Il y a une frontière qui se trouve à la limite de Strasbourg.
'''Manu''' : Il y a une île pas loin, non ?
'''Gérard''' : Non, il n'y a pas d'île ! Parce que toi, tu viens d'une île toi ?
'''Manu''' : Bah ouais, Tahiti ! Excuse-moi.
'''Gérard''' : Ouais, tu viens d'une île des cacahuètes ! Donc alors, je pense que vous en avez tout le temps...
'''Jean Cotivier''' : Je voulais savoir juste, l'Allemagne, c'est bien là où il y avait eu Margareth Tatcher ?
'''Gérard''' : Non, c'est pas du tout là ! Ça, c'est en Angleterre. Faudrait peut-être pas confondre l'Angleterre et l'Allemagne ! Donc vous en avez entendu parler. Donc qu'est-ce que vous pensez qu'il va faire lui maintenant ?
'''Jean Cotivier''' : Ben Edmund Cole, je pense que c'est bien qu'il soit passé au pouvoir.
'''Gérard''' : Non, mais il a été viré ! Il a été remplacé, abruti !
'''Jean Cotivier''', ''[le ton hautain]'' : Vous êtes peut-être au courant de choses que nous on ne sait pas, moi en tout cas je sais que... moi en tout cas je sais qu'Edmund Cole, qui est en contact avec Margareth Thatcher...
'''Gérard''' : Non mais écoute ! Écoute bien ce qu'on vient de te dire : il n'est plus président de l'Allemagne !
'''Jean Cotivier''' : Je fais de la politique alors ! En Allemagne, moi je sais de quoi je parle parce que moi j'ai vécu en Allemagne, la capitale à Bucarest pendant pas mal d'années.
'''Gérard''' : Non mais Bucarest, c'est pas la capitale de l'Allemagne, abruti !
'''Pitbull''' : C'est la préfecture !
'''Phildar''' : C'est la Suisse.
'''Gérard''' : C'est en Suisse, Bucarest.
'''Citrouille''' : Ah ouais, mais c'est une ville jumelée.
'''Gérard''' : Ah ouais, c'est une ville jumelée, c'est ça. Bon, je pense qu'on va pas s'éterniser trop sur cette question-là.
'''Phildar''' : Justement, si, il y a un mec qui veut répondre à cette question, c'est Saka Merde ! Il dit qu'il va faire comme Clinton : il va sauter sa secrétaire.
'''Gérard''' : C'est bien, il fait ce qu'il veut ! Chacun fait ce qu'il veut de son cul.
'''Jean Cotivier''' : Juste pour dire que l'Allemagne c'est quand même la plus belle ville fleurie c'est tout.
'''Pitbull''' : Le secrétaire allemand démangeait de la bière et puis il buvait des patates !
'''Gérard''' : Avec Strasbourg derrière.
'''Pitbull''' : Je voulais dire que la secrétaire allemande, elle mangeait de la bière et elle buvait des patates.
'''Gérard''' : Tu te calmes un petit peu toi !
'''Citrouille''' : Mais ta question c'est quoi ?
'''Gérard''' : Ma question, je vais vous la poser, parce que c'était pas du tout prévu dans ce truc-là.
'''Reego''' : Il y a une question avant sur IRC, une question de Turpentine qui te demande : « Gérard, où est-ce qu'on peut apprendre à voter ?
'''Gérard''' : Où on peut apprendre à voter, il n'y a pas besoin d'apprendre !
'''Citrouille''' : Dans les chiottes de la Loco.
'''Gérard''' : Non, pas du tout, alors toi, tu vas commencer par fermer ton clapet ! Parce que tu vas virer toi !
'''Casse-couille''' : Tu as déjà voté, Gérard ?
'''Tégon''' : Tu commences à être vulgaire encore toi !
'''Pitbull''' : Moi je fais une dedifun à Elisabeth Guigou si elle nous écoute !
'''Gérard''' : Alors toi, Jean Gauthier ou Pitbull, vous allez vous calmer parce que vous allez rejerber ! Je pense que je vous avais dit de ne pas revenir, vous êtes revenus sous d'autres noms ! ''[à Manu qui dit non]'' : Non, à peine !
'''Jean Cotivier''' : Gérard, il a décidé de s'arrêter de voter le jour où Krasniki il a décidé d'arrêter la politique.
'''Gérard''' : Et ta connerie, elle a arrêté de voter quand toi ? Bon alors. Vous avez entendu parler des grèves en ce moment ? Je pense que vous en avez tous ras le bol.
'''Pitbull''' : Ah bon, il y a des grèves ?
'''Citrouille''' : Il y a des grèves ?
'''Gérard''' : Oui, il y a des grèves. Il y a des grèves encore.
'''Citrouille''' : Où ça ?
'''Casse-couille''' : Bah, la grève du cœur !
'''Gérard''' : Non, il n'y a pas des grèves. Ça c'est la greffe, abruti !
'''Téton''' : Les routiers sont en grève.
'''Citrouille''' : Les routiers, c'est des fénéants !
'''Gérard''' : Oh ta gueule toi ! Là, comme ça t'es tranquille toi ! Au moins je vais t'avoir répondu tout de suite toi !
'''Jean Cotivier''' : Il y a la grève des porcs là, des trucs de porcs en ce moment !
'''Gérard''' : Ouais, il y a ça.
'''Manu''' : Demain il y a la RATP je crois. Demain...
'''Gérard''', ''[hurle]'' : Ah s'il vous plaît ! Vous fermez vos gueules quand je parle ! Merci.
'''Jean Cotivier''' : C'est la grève des porcs, c'est-à-dire que ta femme elle est en grève en ce moment ?
'''Gérard''' : Qui c'est qu'il vient de dire ça ?
'''Pitbull''', ''[dans l'hilarité générale]'' : 130 kilos de Sandy là !
'''Gérard''' : Alors tu me vires...
'''Manu''' : Je ne sais pas qui c'est.
'''Phildar''' : Tu gères Manu, parce que là on n'en a ras le bol !
'''Manu''' : Je sais, je sais, je vais essayer.
'''Phildar''' : C'est impossible de faire un débat potable !
'''Jean-Cotivier''' : Moi je me casse, salut ! ''[il raccroche]''.
'''Phildar''' : Au revoir.
'''Manu''' : C'est un con, ce mec.
'''Gérard''' : C'est qui ?
'''Manu''' : C'est Jean Cotivier.
'''Reego''' : Gérard, pour revenir sur le débat, sur IRC on me demande si un bulletin blanc est réutilisable ?
'''Gérard''' : Non ! Non, un bulletin blanc ne peut... un bulletin blanc de toute manière ne servira à rien parce que c'est un bulletin où il n'y a rien d'.écrit. C'est simplement une enveloppe blanche qui ne peut pas être réutilisable. Au deuxième tour peut-être, si. Parce que si la personne veut re-voter blanc, elle re-vote blanc !
'''Phildar''' : Mais est-ce qu'ils gardent le même... est-ce qu'ils gardent le même ticket ou... ?
'''Gérard''' : Non non non !
'''Téton''' : Bah si, on peut réécrire dessus !
'''Pitbull''' : Mais c'est une technique exécrable !
'''Citrouille''' : Moi je trouve ça lamentable !
'''Gérard''' : Non mais moi je peux vous dire une chose : les papiers, une fois qu'ils ont servi, sont détruits ou même brûlés !
'''Citrouille''' : Mais c'est n'importe quoi !
'''Gérard''' : Non mais attends, je sais ce que je parle !
'''Citrouille''' : Mais ils en font du PQ après !
'''Gérard''' : Mais oui, c'est ça !
'''Phildar''' : Non parce que je suis désolé, parce que les billets ce n'est pas combustib !
'''Gérard''' : Non non mais attends ! Si tu parles du prix comme Gainsbourg, qui a brûlé 500 balles en direct à la télé, fais-moi confiance qu'il faut complètement être starbé ! Donc alors, moi je peux vous dire qu'en ce moment... Non non, vas-y.
'''Reego''' : Alors oui, bon, vite fait : il y a Turpentine qui te demande si tu as déjà voté par procuration ?
'''Gérard''' : Justement, c'est la question ! On allait en venir.
'''Manu''' : On accueille Vaseline à la place de Cotivier.
'''Gérard''' : Alors donc, on était sur les grèves. Vous en avez entendu parler. Je pense qu'il y en a pas mal d'entre vous... je crois qui sont encore étudiants, je pense.
'''Phildar''' : J'ai une question de Pitbull : « Gérard, est-ce que c'est vrai que les électeurs, pour voter, doivent glisser leurs enveloppes dans ton urne à caca ? ».
'''Gérard''' : Alors là, tu peux dire à ce petit con... c'est qui ?
'''Phildar''' : C'est Pitbull.
'''Gérard''' : Non, mais il est là.
'''Phildar''' : Non mais il n'y en a pas qu'un Pitbull en France !
'''Gérard''' : Non mais je vais te dire que celui-là, je l'emmerde sur Minitel, d'accord ? Phildar, je t'ai prévenu de ne pas me couper sur des questions con Minitel ! ok ? Au lieu de te marrer parce que tout à l'heure je vais me lever et tu vas te foutre une gaufre ! ''[Reego rit, Phildar soutit, Gérard pointe le siège devant le standard]'' : De toute manière, au deuxième débat, c'est plà ta place !
'''Manu''', ''[espièglemnt ravi, danse]'' : Ouais, je fais la réa ! YES !
'''Gérard''' : Eh tu calmes tes nerfs, Manu !
'''Manu''', ''[histérique]'' : Non mais c'est bon, c'est bon. Tu calmes tes nerfs, Manu, mais t'éteins ton micro, merci.
'''Gérard''' : Et t'éteins ton micro, merci. Alors donc, je pense que certains d'entre vous sont encore étudiants dans tout ce qu'il nous reste. Saucisson à l'ail, donc t'es encore étudiante toi ?
'''Saucisson à l'ail''' : Non, pas du tout.
'''Casse-couille''' : Oui, moi je fais des études en sorcellerie et j'ai pris option en chaudronnerie.
'''Gérard''' : N'importe quoi ! Citrouille ?
'''Citrouille''' : Non, moi je ne suis pas étudiante, je ne suis pas une fénéante.
'''Gérard''' : D'accord. Téton ?
'''Téton''' : Ouais, moi je suis étudiante.
'''Gérard''' : Pitbull ?
'''Pitbull''' : Moi je suis à l'ENA, le clodo !
'''Gérard''' : Bon toi, tu vas te calmer parce que tout à l'heure tu vas virer ! Hein, Tony ? Hein, Tony ?
'''Casse-couille''' : De quoi tu parles là, Gérard ? Tony il est parti depuis tout à l'heure.
'''Gérard''' : Vaseline, donc toi ?
'''Vaseline''' : Bah moi je suis dans la vie rétroactive.
'''Gérard''' : Non, mais est-ce que t'es étudiant ou pas ?
'''Vaseline''' : Bah non, je suis dans la vie rétroactive.
'''Phildar''' : T'es dans un tube aussi !
'''Vaseline''' : Bah, en tube ou en comprimé.
'''Gérard''' : Non, mais je pense que pour ceux qui sont étudiants, je pense que pour vous les grèves, vous en avez ras le bol aussi vous ! Je pense que vous voudriez bien que ça se termine et qu'ils trouvent un moyen pour que ça cesse, le nombre d'élèves dans les classes.
'''Téton''' : Ah bah tu m'étonnes, on a envie de bosser nous !
'''Phildar''' : En plus ils peuvent même pas aller faire la grève parce qu'il y a les grèves des métros.
'''Gérard''' : Non non non !
'''Manu''' : Si, demain ?
'''Gérard''' : Non !
'''Manu''' : Je te jure que si.
'''Gérard''' : Moi je te dis que non ! Alors là, tu te mets bien profond dans le cul toi ! ''[Reego est outré. Gérard enchaîne]''. Donc je peux vous dire que ça, ça faudrait que ça cesse, et que l'autre là, celui qui s'occupe de ça, des étudiants, fasse ce qu'il a promis. Parce que ça commnece à devenir chiant pour vous, vous pouvez pas suivre vos études. ''[applaudissements de Manu]''. Voilà, bravo. On va pas s'éterniser sur cette question, c'est un petit point que je voulais faire parce que Max il en a parlé. Donc on a fait le tour à peu près de la question. Donc maintenant je voulais vous demander : est-ce qu'il y en a parmi vous qui ont déjà voté par correspondance ?
'''Reego''' : Ouais, moi !
'''Gérard''' : Non, mais parmi les auditeurs !
'''Vaseline''' : Ah non, moi j'étais abonné à J'aime lire, c'est tout.
'''Gérard''' : Non mais attends, toi tu vas répondre correctement à la question parce que sinon tu vas gerber très vite maintenant ! Parce que je veux pas me laisser emmerder dans les douze dernières minutes qui nous restent du débat, je vous préviens d'entrée ! Alors Vaseline.
'''Vaseline''' : Par correspondance... tu peux préciser un petit peu ce que tu veux dire ? C'est-à-dire que t'envoies ton bulletin de vote à de la famille et ils votent pour toi ?
'''Gérard''' : Non non non, par correspondance ! Par exemple, si tu pars en vacances au moment des élections, tu peux demander à quelqu'un de ta famille de voter pour toi en laissant ta carte d'identité, c'est ça la correspondance.
'''Citrouille''' : S'ils étaient moins cons, ils feraient pas des élections pendant les vacances !
'''Gérard''' : Non mais regarde, quand il y a des ponts, par exemple comme au mois de mai, comme ça s'est passé là......
'''Phildar ''' : On parle pas du Pont de l'Alma !
'''Gérard''' : au mois de mai, abruti !
'''Phildar''' : Non mais on parle pas du pont de l'Alma ! C'était pas au mois de mai, c'était au mois d'août en plus.
'''Téton''' : Gérard, c'est quoi une procuration ?
'''Gérard''' : Une procuration, c'est que tu donnes l'autorisation par exemple à quelqu'un de ta famille pour aller voter pour toi.
'''Téton''' : Et comment on fait pour donner l'autorisation ?
'''Gérard''' : Tu t'adresses au commissariat de police le plus proche de chez toi, ou tu vas même à la mairie et tu leur demandes. Tu dis : « Voilà, je suis pas là pendant le temps des élections, est-ce que je peux donner l'autorisation à mes parents ? ».
'''Téton''' : Donc en fait si toi tu vas pas voter, je peux me pointer à ta mairie et dire : « Voilà, je viens de la part de Gérard et je vais voter pour lui » ?
'''Gérard''' : Non, mais à une condition que moi je signe ! Parce qu'il faut que la personne intéressée signe aussi.
'''Phildar''' : Mais comment peux-tu être sûr que la personne va voter ce que tu veux ?
'''Gérard''' : Ah non, mais ça c'est sûr ça là-dessus, je suis d'accord avec toi ! Mais ça c'est... faut voir avec quelqu'un de ta famille. Tu peux très bien dire à la personne de ta famille : « Tu mets rien dans l'enveloppe, basta ».
'''Phildar''' : Ouais, mais je croyais que c'était personnel, que t'avais le droit de le dire à personne.
'''Gérard''' : Ouais, mais si tu veux voter blanc, tu votes blanc c'est tout !
'''Pitbull''' : Gérard, il fait caca partout mais il vote écologiste !
'''Gérard''' : Ouais, moi je t'emmerde toi !
'''Reego''' : Sur IRC il y a Pingouin qui te demande s'il faut un isoloir pour voter par correspondance ?
'''Gérard''' : Non, pas spécialement.
'''Reego''' : Et est-ce qu'il faut un abonnement ?
'''Gérard''' : Non plus !
'''Reego''' : Est-ce qu'on peut voter dans le noir ?
'''Gérard''' : En principe, quand tu tires le rideau, bien sûr tu peux voter dans le noir !
'''Pitbull''' : Normalement t'es une voiture, moi je regarde l'émission tous les soirs !
'''Gérard''' : Non mais tais-toi toi ! Ça me fera des vacances quand...
'''Reego''' : Et il y a Le Chiant aussi qui te demande si on peut continuer à voter quand le vote est fini ?
'''Gérard''' : Non je pense pas, une fois que c'est terminé à partir de 8h... à partir de 20h, ils peuvent plus voter.
'''Reego''' : Mais alors pourquoi les résultats ils arrivent après 8h ?
'''Gérard''' : Parce que le temps... il y a le dépouillement déjà à 8h ! S'il vous plaît, vous me laissez parler, je réponds à Reego ! Donc déjà à 8h ils commencent déjà à faire un sondage, BBVA, pour te dire à peu près le nombre... ''[rires moqueurs du studio]''. si ça s'appelle comme ça.
'''Phildar''' : Il y a le BBVB aussi.
'''Gérard''' : Non, BBVA et IFOPS. Donc ils commencent déjà à te donner un point de vue sur le nombre de personnes qui ont voté, le nombre d'abstentions...
'''Téton''' : Quand tu parles de dépouillage, ça veut dire qu'en fait ils se bourrent la gueule juste avant quoi ?
'''Gérard''' : Non mais attends, c'est qui là qui parle ? C'est qui qui vient de poser là ? C'est Téton ?
'''Téton''' : Ouais c'est moi, ouais.
'''Gérard''' : Non mais je crois que la question sur le dépouillage, il y a longtemps qu'elle a été posée ! Je vois pas ce que tu la ramènes.
'''Téton''' : Attends je réponds ! Je suis en train de te poser une question qui a tout à fait rapport avec ce que tu viens de dire : parce qu'on dit que les résultats sont après 8h et pendant ce temps-là ils font le dépouillage. Le dépouillage c'est quoi ? C'est se bourrer la gueule avant ?
'''Gérard''' : Mais non ! C'est de retirer les papiers qui sont dans les enveloppes !
'''Téton''' : Voilà, tu vois que t'es capable de répondre quand tu veux !
'''Gérard''' : Il y a longtemps que j'avais répondu déjà, fallait te réveiller un peu.
'''Reego''' : À ce sujet Gérard, il y a Turpentine qui me demande si c'est des facteurs qui dépouillent les enveloppes ?
'''Gérard''' : Non, c'est des gens comme nous.
'''Pitbull''' : Des toxicomanes ?
'''Gérard''' : Non non, ça peut être des gens comme nous.
'''Manu''' : Pas comme toi quand même ?
'''Gérard''' : Moi si, je l'ai déjà fait !
'''Phildar''' : Ah oui, il s'est déjà dépouillé !
'''Citrouille''' : Tu l'as fait ? Ça m'étonne pas que la droite est passée !
'''Gérard''' : Doit-on parler de politique en cours ? Ça va concerner ceux qui font...
'''Citrouille''' : En cours de quoi ?
'''Gérard''' : En cours quand t'es à l'école !
'''Reego''' : Quand tu cours ?
'''Gérard''' : En cou-reuh !
'''Citrouille''' : Quand on fait du jogging ? ''[prononcé avec le « ing » à la française]''.
'''Gérard''', ''[distrait, tournant le regad]'' : Non non non... C'est toi qui me parles en même temps, je croyais que c'était l'autre dindon là-bas ! Donc, Saucisson à l'ail ?
'''Saucisson à l'ail''' : Bah écoute, moi ça fait longtemps que je suis plus à l'école.
'''Gérard''' : Parle un peu plus fort !
'''Saucisson à l'ail''' : Je dis, ça fait longtemps que je suis plus allée à l'école, donc je peux pas vraiment répondre. Mais je pense que de toute façon c'est interdit. Tu te fais engueuler à partir du moment où tu parles de politique.
'''Gérard''' : Non, mais t'en as beaucoup qui essayent d'en parler.
'''Saucisson à l'ail''' : Oui, qui essayent, mais enfin ils se font vite... vite casser en général.
'''Gérard''' : Ouais, mais dans les lycées je pense que s'ils sont pas pronds ils peuvent en discuter entre eux.
'''Saucisson à l'ail''' : Ah ouais, non mais là y'a pas de problème, c'est sûr. Ok. Casse-couille ?
'''Casse-couille''' : Ouais non, en cours non, on parle pas de politique. À part des fois d'Elisabeth Guigou mais sinon...
'''Gérard''' : Bon alors Casse-couille là, tu te casses ! Comme ça tu me les casseras plus. Allez, c'est terminé pour lui ! Ça commence à me les gonfler qu'on arrête pas de parler d'elle, alors ce coup-là terminé ! Citrouille ?
'''Citrouille''' : Ouais, alors moi une fois y'a un prof qu'en a parlé. Il a pas le droit ! ''[fièrement]'' : J'ai porté plainte et le mec il est radié de l'Éducation Nationale.
'''Gérard''' : Non mais attends, parce que souvent... ah attendez s'il vous plaît ! Je vais répondre quand même à Citrouille. Souvent t'as des profs qui en parlent pour dire à peu près ce qu'ils en pensent. C'est sûr que normalement ils ont pas le droit.
'''Citrouille''' : Ils ont pas le droit !
'''Gérard''' : C'est pour essayer de machiner un peu l'atmosphère, mais je pense que c'est sûr...
'''Citrouille''' : Ils ont pas le droit.
'''Gérard''' : Mais oui, je sais ! Donc, Téton ?
'''Téton''' : Non, ils ont pas le droit d'en parler, c'est interdit par la loi.
'''Gérard''' : D'accord. Pitbull ?
'''Pitbull''' : Bah moi j'échangerais jamais un cours de politique contre le cours de bio, la reproduction des molusques en Antarctique !
'''Gérard''' : Ouais, c'est ça, t'as raison toi.
'''Manu''' : Gérard, excuse-moi, à la place de Casse-couille on accueille Pèute-berne.
'''Gérard''' : Salut Pète-burnes.
'''Pète-burnes''' : Vas-y Gérard, je crois que tu peux parler maintenant.
'''Gérard''' : Donc je te répète la question comme t'étais au standard : donc doit-on parler de... de politique en cours ? Donc... donc pour toi ?
'''Pète-burnes''' : Bah je pense que les élèves, quand ils sont en cours, ils ont d'autres trucs à faire.
'''Gérard''' : Bah oui ! Mais est-ce qu'on a le droit d'en parler ? Tu me diras, surtout qu'en ce moment il y a certains problèmes, on en a discuté tout à l'heure sur les histoires des grèves qui commencent à nous prendre la tête, on en a ras le bol. Pour les étudiants, ils en ont marre aussi !
'''Citrouille''' : C'est des fénéants !
'''Gérard''' : Mais ouais ! Mais c'est des fénéants... Non, c'est pas des fénéants ! C'est les profs qui sont des fénéants parce qu'ils veulent pas...
$*'''Citrouille''' : Comme les routiers, c'est des fénéants !
'''Gérard''' : Oh ta gueule toi !
'''Téton''' : C'est des alcooliques !
'''Gérard''' : Bon alors toi Citrouille, tu dégages !
'''Citrouille''' : C'est pas moi !
'''Pitbull''' : Non, mais t'es pas visé quand on dit alcoolique.
'''Gérard''' : Non mais Téton, pour toi ? Donc toi ? Oh, vous vous réveillez là ! Vous répondez aux questions !
'''Téton''' : Mais je t'entends pas Gérard !
'''Gérard''' : Alors peut-on... doit-on parler de politique en cours ? Allo ? ''[silennce. Gérard jette un briquet sur Phildar et se précipite vers lui]''. Tu te fous de ma gueule ou quoi toi là ?
'''Phildar''' : Bah j'ai rien fait !
'''Gérard''' : Non, tu me coupes les auditeurs ! Donc Téton ?
'''Téton''' : Ouais bah, je t'ai répondu il y a deux minutes Gérard !
'''Gérard''' : Donc Pitbull ?
'''Pitbull''' : Bah moi aussi.
'''Gérard''' : Ok. Vaseline ?
'''Vaseline''' : Ouais bah, doit-on en parler en cours ? Moi je dis, si les filles elles se mettent des doigts dans les cours, ça le fait pas.
'''Gérard''' : Bon d'accord, je vois pas du tout le rapport.
'''Vaseline''' : Bah « doit-on », tu dis « doit-on » ! Bah si elles se touchent, c'est pas bien.
'''Gérard''' : Bon, alors les sondages avant de faire la conclusion. Je vais donner les...
'''Phildar''' : un petit sondage rapide, ouais.
'''Gérard''' : Les deux derniers sondages qu'on a. Donc à la question : « La politique est-elle bien faite en France ? ». Il y a 60% des gens qui disent qu'elle est bonne avec des des seins énormes. Ça, je vois pas... ça c'est bien signé Olivier de la Production pour me sortir des conneries comme ça ! 40% des gens qui disent que la maquette on voit des traces de colle. Donc ça, je vois pas du tout le rapport avec la politique, Olivier de la Pro. Après question... à la question : « Votez-vous... ». ''[Olivier rentre dans le studio, boudant]''. Non non, t'as rien fait ! Tu me prends pour un con toi ? Tu me prends pour un con, non ?
'''Phildar''' : Termine Gérard, termine.
'''Gérard''' : Donc à la question : « Votez-vous souvent ? ». Donc il y a 40% des gens qui disent qu'ils votent... qu'ils rotaient seulement après avoir bu du Coca. Donc je vois pas du tout, c'est bien lui. 36% des gens qui ont dit qu'ils votaient plus de 6 fois par jour, donc je vois pas du tout le rapport non plus. Et 30% des gens qui ont dit qu'ils ne votaient jamais car Gérard ne s'est jamais présenté aux élections. Et je me présenterai jamais !
'''Reego''' : Une petite question vite fait sur IRC : il y a Orki qui te demande : « Qu'est-ce qu'on gagne quand notre bulletin est tiré au sort en fait ? ».
'''Gérard''' : Non mais attends ! Je vois pas du tout... son bulletin au sort ? C'est dans les jeux, donc ça je m'en fous, c'est pas dans la politique !
'''Pitbull''' : Une Twingo !
'''Gérard''' : Ouais, une Twingo ! Une Kangoo, tiens ! Ouais, pourquoi pas s'il veut. Donc on va faire la conclusion du débat. Donc il est 57. Donc Saucisson à l'ail ?
'''Saucisson à l'ail''' : Bah écoute, laisse passer les autres, après je répondrai.
'''Gérard''' : Bon, ok. Vaseline ?
'''Vaseline''' : Ouais bah, je sais pas... je voulais te féliciter pour la manière dont t'as présenté la dualité indicible de la phénoménologie intrinsèque du problème. Et puis bravo pour ton débat.
'''Gérard''' : Bon allez, ça commence à devenir llourd... Ta conclusion c'était ça pour me dire ? Pitbull ?
'''Pitbull''' : Ouais ouais, c'est moi ! Alors... donc moi je fais toujours ma dédicace à Elisabeth Guigou si tu m'écoutes !
'''Gérard''' : Alors allez hop, c'est bien, tu peux rentrer chez toi maintenant, ta conclusion est faite ! Téton ?
'''Téton''' : Bah moi je dirais que la politique c'est comme toi, Gérard : c'est catastrophique quand on en parle.
'''Gérard''' : Et bah c'est bien ! Si c'est pour ça que t'as voulu participer au débat, c'est bien.
'''Téton''' : Bah ouais, je fais ce que je veux, je suis assez grande !
'''Gérard''' : Bah de toute manière tu fais ce que tu veux, moi aussi je fais ce que je veux. Je suis majeur et vacciné ! J'ai pas besoin de...
'''Téton''' : QU'est-ce tu m'embrouilles, pourquoi tu me parles d'abord ?
'''Gérard''' : Bon bah alors je te demande la conclusion, donc tu réponds et c'est tout !
'''Téton''' : Eh bah donc la conclusion : c'est la politique, c'est comme toi, c'est catastrophique quand on en parle. Point barre.
'''Gérard''' : Eh bah alors ok, bah salut ! Citrouille ?
'''Citrouille''' : Je dis : les politiciens c'est comme les routiers, c'est des poivrots.
'''Gérard''' : D'accord. Eh bah alors c'est sympa ! C'est bien parce qu'il y en a beaucoup qui ont entendu ce que tu viens de dire. Pète-burnes ? Pète-burnes ? Pet Burne ?
'''Pète-burnes''' : Ouais. Moi je dois dire que t'as souvent trouvé qu'il y avait des questions qui avaient pas de rapport, mais faut être indulgent avec ceux qui disent des trucs qui ont pas de rapport, parce que toi tes questions... bon, elles ont pas trop de rapport entre elles aussi donc...
'''Gérard''' : Non mais attends ! Mais dans ces cas-là t'avais qu'à écouter dès le début, t'aurais peut-être pu comprendre plus ! Ouais bah, dans ces cas-là t'avais qu'à comprendre les questions qu'on a posées ! Parce que je trouve que on a fait quand même largement le tour de tout ce qui se passe en France !
'''Pète-burnes''' : Ouais mais t'as quand même parlé des extraterrestres ! Bon...
'''Gérard''' : Non non non ! Justement ça a pas été fait, je suis désolé. La question elle a pas été faite, on a passé sur le truc.
'''Pète-burnes''' : Ouais, mais tu l'as citée quand même !
'''Gérard''' : Ouais, non non ! Mais on l'a pas faite. Donc nuance ! Faut pas confondre entre citer et l'avoir fait, ok ? Euh oui.
'''Reego''' : Oui, donc une conclusion IRC de Daube : « Avant de voter, mettez une capote, c'est important contre le cancer du SIDA, surtout si vous êtes homosexuel ».
'''Gérard''' : Non mais ça c'est... c'est même pas une question que je vais faire dans les maladies tout à l'heure après les deux disques. Saucisson à l'ail, pour terminer la conclusion ?
'''Saucisson à l'ail''' : Bah écoute, j'ai pas trouvé que c'était un débat très intéressant parce que vu les conneries que tout le monde faisait, c'était pas génial.
'''Gérard''' : Ouais non mais d'accord, bah c'est ça de toute manière ! Je m'en doutais un peu de toute manière que ça allait foirer un tout petit peu.
'''Phildar''' : Non, c'était bien, c'était bien !
'''Gérard''' : Ouais ouais. Non non mais quand j'ai un abruti de cave qui me fait que des conneries, hein Phildar ? ''[Manu chantonne : je vais faire la réa, je vais faire la réa]''. Donc moi je peux vous dire une chose : que c'est dommage qu'on n'a pas trop de temps pour continuer parce qu'on a...
'''Phildar''' : C'est vrai que t'as tellement de trucs à dire sur la politique.
'''Gérard''' : On est tellement pris par le temps. Donc moi je peux vous dire une chose : c'est qu'à l'heure actuelle, c'est vrai...
'''Max''' : Ce qui est bien en même temps, excuse-moi c'est Max, c'est que tu disais au début que tu voulais pas faire un débat, et en même temps ta conclusion c'est « dommage qu'on n'ait pas eu assez de temps d'en parler plus longtemps ». Tu voudrais parler plus longtemps d'un débat que tu ne veux pas faire ? C'est bien.
'''Gérard''' : Non parce qu'il y a certaines questions qu'on aurait pu plus approfondir, c'est-à-dire sur les grèves.
'''Max''' : Il devrait y avoir la suite dans les mois à venir.
'''Gérard''' : Ouais bah ça on verra ! On attendra le sondage du premier !
'''Phildar''' : On attend de voir si Bill Clinton est encore président !
'''Gérard''' : Toi, écrase ! Donc la conclusion : c'est vrai qu'en ce moment on a parlé pas mal de grèves, et ça c'est vrai que c'est chiant pour tout le monde les grèves, ce qui se passe à l'heure actuelle. Donc maintenant c'est au gouvernement de s'en prendre après, ils font ce qu'ils veulent, ils nous emmerdent pas avec leur connerie et ils font ce qu'ils peuvent. Ok voilà. ''[applaudissements enthousiastes de tout le studio]''. Donc on va se quitter. Et on va se quitter pour...
'''Max''' : Pour mieux se retrouver tout à l'heure !
'''Gérard''' : Pour mieux se retrouver tout à l'heure sur les maladies. Donc on va se quitter avec Marie-Josée Perrec avec Les cafards, c'est meilleur chez soi*. Et vous pouvez nous appeler toujours au 0803 08 5000. Toujours 36 15 code Fun Radio, rubrique direct. Et l'IRC, on était combien ?
'''Reego''' : On est actuellement 1428,6.
'''Gérard''' : C'est bien. On continue. On continue. Allez, à tout de suite ! ''[Musique]''.
== Le débat sur les maladies ==
=== Contexte ===
Le premier débat a mis en place quelque chose de clé dans les esprits de l'équipe : Gérard est désormais persuadé, on ne sait comment, que la fréquentation de l'IRC représente son audience. Cette idée donne à Reego un rôle encore plus régulateur et accentue un outil de pression sur Gérard, dont l'équipe va pouvoir largement abuser. Mais bien sûr, cette pression aura des conséquences, et ce second débat le montre. Gérard devient hypernerveux, sensible aux chiffres, et peut aller jusqu'au dérapage. C'est ce qui nous offrira ce débat, envers Phildar, qui devient désormais clairement le fusible permanent.
Toujours surréaliste dans le contenu, ce débat deviendra un peu plus décousu du fait des interventions de Phildar et de l'équipe, poussant l'animateur à littéralement mener un combat physique avec Phildar, échauffé par le précédent débat où Gérard avait fait porter à Phildar quelques responsabilités de problèmes techniques qui étaient surtout des sketchs. Sans gravité, vu le peu de moyens de l'animateur, l'épisode n'en reste pas moins un moment marquant de l'année. D'autant plus drôle, malgré tout, que Manu déclenche, par des bruits, soutenus parfois par sa copine en tant qu'auditrice (Laura), la furie de l'animateur, que Reego entretient, sans que Gérard n'interroge la cohérence entre son bouc-émissaire et la situation initiale. Le schéma devient très clair : Reego jouit d'une immunité, quoiqu'il dise, Phildar d'un statut de paratonnerre, et Manu est un électron libre.
Parmi les skecths, pour la première fois et ceci deviendra récurrent, les auditeurs choisissent des psuedonymes afin que, en les citant, gérard prononce des mots précis. Cela sera un facteur comique indéniable.
=== Les personnages ===
* Franck Bargine : Max
* Gérard Cousin : Gérard
* Sandy Threadkell : Cirrhose
* Phildar et Manu
* Igor : Reego
* Laura : Oui-bonsoir, Pâté de foie
* Mégane : S'il-te-plaît (stp), Soutif
* Tony Morestin : Je-sens-pas-bon, Viagra, Syphilis et Jean-Louis, MST, Petit Kyste
* Goldo : Javal, Supo
* Arnet : Pot de chambre, Cuvette
* Olivier Bouchet : Olivier de la pro
=== Transcription ===
'''Gérard''' : C'était Marie-Josée Pérec avec les cafards C'est Meilleur Chez Soi*. Donc, vous pouvez toujours nous appeler au 0803 08 5000 / 0800 70 5000. Toujours 36 15, code Fun Radio, rubrique direct et sur l'internet... Reego qui y est toujours. Donc, www.frfunradio je sais plus quoi...
'''Reego''' : Slash Fun Radio.
'''Gérard''' : Ouais, slash Fun Radio. On était 1400, je sais plus combien.
'''Reego''' : On a dépassé, on arrive à 1584,1. ''[applaudissements et ovations du studio]''.
'''Gérard''', ''[fier]'' : Combien ? J'ai cru mal entendre, là.
'''Reego''' : 1584,1.
'''Gérard''' : Ah d'accord, c'est pas mal ! Alors, on va accueillir Pot-de-chambe, 21 ans, de Montluçon. On écoute Fun Radio sur 92.1. Bonsoir. Javal, 24 ans, de Brest, 103.2. Cirrhose, du foie... 20 ans, Paris, 101.9. Bonsoir. Je-sens-pas-bon, je sais pas ce que c'est encore.
'''Phildar''', ''[pendant que Gérard crie oh oh à Manu, en mode non]'' : C'est quand, le matin, tu t'habilles et que tu sors directement.
'''Gérard''' : Hé, à 2h du matin, il est pas encore couché, lui, là ?
'''Phildar''' : Il a quel âge ?
'''Gérard''' : 12 ans.
'''Je-sens-pas-bon''', ''[voix de tête]'' : Salut, salut.
'''Gérard''' : Non, non, ça va pas, non ?
'''Je-sens-pas-bon''' : Ouais bah, j'ai le droit quand même. J'ai pas cours, je suis en vacances.
'''Reego''' : C'est les vacances, Gérard. C'est les vacances, on peut !
'''Gérard''' : On écoute Fun Radio Gap, 90.7. S'il-te-plaît, 22 ans, de Dieppe, on écoute Fun Radio, 100.1. Salut. Répondez bien quand je parle, hein, surtout. Dites pas bonsoir quand on vous parle, hein, surtout. Oui-bonsoir. 17 ans, on écoute Fun Radio...
'''Oui-bonsoir''' : J'habite en Belgique.
'''Phildar''' : À Bourbon ?
'''Oui-bonsoir''' : À Bourlon.
'''Gérard''' : À Bourlon, pas Bourbon, abruti. Oh là là... Et on écoute Fun Radio Belgique, 101.9, c'est ça ? Ok. Donc, alors, le débat, c'est sur la maladie.
'''Phildar''' : Les maladies. Les petites maladies.
'''Gérard''' : Donc, je pense qu'on en avait déjà discuté la semaine dernière, qu'on allait faire ce débat-là. Alors, on va poser la question : la grippe s'attrape-t-elle sur le menton ? On va demander ça... Tiens ben, à Oui... de Bourlon.
'''Oui-bonsoir''' : Tu peux répéter, s'il te plaît ?
'''Gérard''' : Oh non, ouais... Ça va pas commencer, hein !
'''Oui-bonsoir''' : J'ai pas entendu... J'ai pas entendu la fin de ta putain de question.
'''Gérard''' : Ma putain de question ? Elle t'emmerde. Si t'es pas contente, ma petite, tu vas faire non, Tu vas aller au standard, tu vas pas me prendre la tête là-dessus. Alors, la grippe s'attrape-t-elle sur le menton ?
'''Oui-bonsoir''' : Bah moi, je trouve que la grippe s'attrape partout. J'en ai attrapé sur la pointe du pied, ça me fait franchement mal.
'''Gérard''' : D'accord. Ok. S'il te plaît ?
'''Phildar''' : Bah, t'es poli, ce soir.
'''Stp''' : Dans le métro.
'''Gérard''' : D'accord. Je pense que vous êtes vachement bien réveillés pour le deuxième débat, ça fait peur. Merci pour le Larsen.
'''Stp''' : Dans le TGV aussi.
'''Gérard''' : Alors, je-sens-pas-bon ?
'''Je-sens-pas-bon''' : J'ai pas de grave maladie. Mais bon, je suis jeune, mais je suis déjà dépressif quand même. Mais la grippe, je sais pas.
'''Gérard''' : La grippe s'attrape-t-elle sur le menton ? C'est la question. C'est pas une autre question que je te pose.
'''Je-sens-pas-bon''' : Bah moi, les maladies, on m'a pas encore pu... expliquer encore. Moi, j'ai rien eu au menton. J'ai une fossette.
'''Gérard''' : Non mais attends, à 12 ans, t'as pas eu de maladie ? Tu me prends pour un con, là ?
'''Je-sens-pas-bon''' : Ouais, j'ai eu la coqueluche, mais c'est tout, quoi.
'''Gérard''' : Ouais, la coqueluche. T'as pas un petit problème de voix, là ?
'''Je-sens-pas-bon''' : Si, si, un petit peu, ouais.
'''Phildar''' : Il a pas encore muté, c'est pour ça.
'''Gérard''' : Bah ouais, à 12 ans, dis donc, ça fait bien. Cirrhose, du foie ?
'''Cirrhose''' : Bah écoute, je pense que la... la grippe peut s'attraper aussi sur le menton, parce que tu peux avoir aussi des boutons sur le menton.
'''Gérard''' : Ouais, mais de toute manière, la grippe... elle peut s'attraper sur les...
'''Cirrhose''' : La grippe peut s'attraper partout...
'''Gérard''' : sur les parties les plus sensibles du corps, c'est-à-dire celles du milieu.
'''Je-sens-pas-bon''' : Ca chatte, la chatte !
'''Gérard''' : Hey, gamin, là, tu vas te calmer, parce que tout à l'heure, tu ves aller voir Phildar au standard.
'''Je-sens-pas-bon''' : Excuse-moi, papa.
'''Javal''' : Ouais, bah, si tu veux pas choper la grippe sur le menton, tu mets une écharpe, simplement.
'''Gérard''' : Ouais, d'accord. Bah, on dirait que ça vous fait peur quand je fais le débat sur la maladie, parce que vous êtes à moitié endormis là-dessus.
'''Reego''' : Alors, faut demander à Gérard si on peut soigner l'acné juvénile et si on a des chances, un jour, de trouver un vaccin pour éradiquer cette maladie.
'''Gérard''' : Non, mais ça, le problème sur l'acné, on va en parler aussi.
'''Reego''' : Est-ce qu'il y a plus de chances... Ça, c'est Orki qui me demande. Enfin, c'est Orki qui me demande... Qui te demande : « Est-ce qu'il y a plus de chances d'attraper des maladies dans les chiottes de la Loco ? » Non... Excuse moi, j'avais pas lu.
'''Oui-bonsoir''' : Si Gérard, il y traîne, ouais.
'''Gérard''' : Qui c'est qui vient de dire ça ?
'''Phildar''' : C'est le petit, mais il est pas au courant.
'''Gérard''' : Non, non, non, ça, c'est une voix de nana. Donc, Pot de chambre ?
'''Pot de chambre''' : Ouais, bah moi, je pense que, en fait, ça s'attrape par les cheveux. Par les cheveux, peut-être.
'''Gérard''' : Par les cheveux ? Ouais, bah, je vois pas du tout le rapport.
''Je-sens-pas-bon ''' : Moi, Gérard... Je voulais dire que j'avais aussi attrapé un truc, là, chez le toubib. C'est la Gérardite aiguë, et je peux forniquer qu'avec des boudins.
'''Gérard''' : Ouais, ouais, je sens pas bon. Je sens pas bon. Tu vois ce que tu as fait ? Tu vas aller faire dodo. Au revoir.
'''Je-sens-pas-bon''' : Sois tolérant !
'''Gérard''' : Allez, hop ! Bonne nuit pour lui.
'''Cirrhose''' : Gérard ? Jaimerais te poser une question : Est-ce que tu crois qu'on peut attraper les maladies par téléphone ?
'''Gérard''' : Euh, non, pas spécialement. Pourquoi ?
'''Cirrhose''' : Bah, je pense que... Je sais pas. On sait jamais, hein.
'''Manu''' : Gérard ? Sur Minitel, il y a... Comment il s'appelle ? Non, je vais pas donner le nom. Il nous dit que t'as une tête d'hémorroïde.
'''Phildar''' : C'est quoi, un hémorroïde ?
'''Oui-bonsoir''' : C'est beau, un hémorroïde.
'''Manu''' : Bah, je sais pas. C'est pour ça que je demande à Gérard.
'''Gérard''' : Des hémorroïdes, ça s'attrape aux couilles.
'''Cirrhose''' : Non, non, non, c'est dans le derrière.
'''Oui-bonsoir''' : À force de mettre du coton-tige...
'''Manu''' : Non mais c'est qu'en fait, Gérard, il a des couilles très proches du derrière, c'est peut-être pour ça.
'''Gérard''' : Alors, là, j'en connais... j'en connais... Qui parlent de coton-tige. Si tu continues, je vais pas chercher midi à 14h, je vais en saquer un au hasard.
'''Je-sens-pas-bon''' : Dans ton cul !
'''Gérard''' : Alors, oui, tu dégages.
'''Phildar''' : Non, non, c'est personne. C'est Je sens pas bon, et je viens de le virer.
'''Gérard''' : Non, non, mais lui, tu le vires complètement. Oui, Reego, il y avait une question ?
'''Reego''' : Oui, oui, il y en a plein. Il y a Viandox qui te demande si on a des séquelles après une maladie mortelle.
'''Gérard''' : Non, ben, je vois pas, parce que si t'es mort, tu peux pas avoir de séquelles. ''[applaudisements et félicitations du studio]''.
'''Javal''' : C'est la première fois.
'''Gérard''' : Par contre, moi, je peux vous dire une chose, que la grippe, je l'ai jamais attrapée sous le menton, en principe.
'''Phildar et Javal''' : Tu l'as attrapée où ?
'''Gérard''' : Je l'ai attrapée dans la gorge, c'est tout, à force de gueuler, souvent, t'as plus de voix.
'''Javal''' : Non, mais gorge profonde ou pas ?
'''Gérard''' : Ben, ça dépend des maladies.
'''Javal''' : Toi, je pense que t'es plutôt gorge profonde.
'''Pot de chambre''' : Ouais, gorge profonde à fond ! Et bien pleine aussi, quand même.
'''Oui-bonsoir''' : Pour embrasser Sandy.
'''Gérard''' : Qui c'est qui parle, là, comme ça ?
'''Javal''' : Ah, c'est pas drôle.
'''Oui-bonsoir''' : C'est oui.
'''Gérard''' : Oui, oui. Oui, alors ? Tu disais ?
'''Oui-bonsoir''', ''[très surprise]'' : Ah, non, mais attends ! C'est pas moi, j'ai rien dit.
'''Gérard''' : S'il te plaît, tu disais ?
'''Stp''' : Moi, je disais rien.
'''Gérard''' : Ouais, c'est bizarre. Il y a une question, là, sur un sondage, encore.Je me demande si c'est pas encore des petites conneries, ça.
'''Reego''' : Non, celui-là, il est officiel, c'est moi qui l'ai récupéré.
'''Phildar''' : Bon, excuse-moi, Gérard. À la place de Je sens pas bon, on a Viagra, 27 ans, de Boulogne.
'''Viagra''', ''[le nez pincé]'' : Bonsoir.
'''Phildar''' : Il est au travail.
'''Javal''' : Salut, vieux gras.
'''Viagra''' : Donc, moi, je voudrais témoigner de mon expérience...
'''Gérard''', ''[rageur, pinçant son nez]'' : Non, mais tu retires... tu retires tes lois de tes narines, je t'entendrai mieux.
'''Viagra''' : Non, mais je suis enrhumé, c'est sur les maladies, donc ça tombe très bien. Donc, moi, ce que j'ai fait, c'est que, bon, là, la pilule Viagra vient d'être introduite en France...
'''Gérard''' : Non, non, mais attends ! Attends, pour l'instant, tu vois, c'est pas... je suis pas encore arrivé à cette question-là. Alors, tu commences pas à jouer les gros caïds. Alors, maintenant, je vais faire le petit sondage, là, qu'on m'a donné. Donc, alors : Pour ou contre les maladies ? Ça, de toute manière, j'avais jamais... J'en ai marre qu'on mette des « pour ou contre » lors des... sur les...
'''Phildar''' : Non, mais c'est important de demander ça aux auditeurs.
'''Gérard''' : Ouais, alors, il y a 10% qui ont répondu que la question était trop compliquée. Ben, c'est pas mal, ça, c'est... 60% des gens ont répondu, mais on ne... on ne s'en souvient plus. Et 30% des gens qui sont contre les maladies de l'éléphant qui pue. ''[Phildar éclate de rire]''. Alors ça, Phildar, tu vois, ton sondage comme ça, tu peux te le carrer dans le cul et te torcher avec !
'''Phildar''' : C'est pas moi ! On a fait un sondage sur les auditeurs.
'''Gérard''' : Comme là, tu vois, ça, c'est... La dernière question : Avez-vous déjà vu des maladies et si oui, pourquoi ? Tu vois, là, je ne vais même pas y répondre, ça va aller vite fait. Voilà. T'es content ? Alors, l'autre question : la diarrhée s'attrape-t-elle en été ou en hiver ? En hiver ou en été ? On va demander à Viagra.
'''Viagra''' : Ben, c'est plus en été, parce qu'il fait chaud, donc on transpire. Donc, parce qu'en fait, en hiver, le caca a tendance à se solidifier. Donc, ça fait qu'on chie des pavés de merde.
'''Oui-bonsoir''' : Ben, moi, c'est ni en hiver, ni en été. C'est en automne.
'''Phildar''' : Ben, pourquoi ?
'''Oui-bonsoir''' : C'est la saison des feuilles.
'''Gérard''' : Ah ouais, d'accord. C'est pas mal ! Ah non, non, mais c'est pas mal. Ouais, c'est bien. S'il te plaît ?
'''stp''' : Ouais, moi, j'ai la diarrhée quand j'ai la chiasse.
'''Gérard''' : La chiasse, c'est quoi ?
'''Phildar''' : Gérard, est-ce que tu pourrais... s'il y a une différence... expliquer ?
'''Gérard''' : Ben, c'est pareil. C'est de l'eau. Quand t'as la chiasse, tu fais de l'eau, et quand t'as la diarrhée, tu fais de l'eau. C'est-à-dire, quand t'as la diarrhée, tu chies de l'eau, donc c'est pareil.
'''stp''' : Tu peux la récupérer pour la boire, alors ?
'''Gérard''' : Non, non, je pense pas, parce que c'est dégueulasse.
'''Phildar''' : Pourquoi, c'est sans bulles ?
'''Viagra''' : Elle recycle tout, l'écologiste !
'''Gérard''' : Euh, c'est plus le thème sur la politique, Viagra. Euh, cirrhose... du foie ?
'''Cirrhose''' : Alors, tu peux avoir la diarrhée à tout moment et à toute saison.
'''Gérard''' : Voilà, ça c'est... C'est une bonne question, ce que je voulais dire. Mais c'est bien, on me retire les paroles de... on me retire les vers du nez. Javal ?
'''Viagra''' : Les vers du cul, c'est la diarrhée !
'''Gérard''' : Ta gueule, toi ! Javal ?
'''Javal''' : Ouais, ben écoute, plutôt... plutôt en hiver, parce que moi, la fois que j'ai eu la diarrhée, j'avais chopé une hépatite G et en plein hiver, et j'avais une chiasse... mais l'enfer, quoi !
'''Pot de chambre''' : Ouais, ben moi, je pense que c'est en automne, puisque je l'ai eue il y a deux jours.
'''Gérard''' : Non, tu l'as eue il y a deux jours ? Ah ben d'accord. Donc, euh... Tu pourrais préciser ?
'''Viagra''' : Prouve-le ! Prouve-le, pète un coup !
'''Gérard''' : Oh, ça y est ! Vous vous calmez, là-derrière, s'il vous plaît. Merci. Moi, je peux vous dire que c'est rare quand j'ai la diarrhée, et ça m'arrive pratiquement jamais.
'''Phildar''' : Heureusement, parce que ça serait un sacré bordel chez toi !
'''Gérard''', ''[alors que Phildar rit aux éclats]'' : Alors, euh... Phildar, tu redis encore un mot de travers, je me lève et je te mets ma main dans ta gueule. Ok. Alors, doit-on... Troisième question : Doit-on trouver un vaccin contre le Viagra ? On va demander ça à... Pot de chambre ? ''[Phildar ne cesse pas de rire, micro allumé]''.
'''Mot de chambre''' : Ouais, je pense, ouais.
'''Oui-bonsoir''' : Oh, là, là, là, là, là !
'''Gérard''', ''[se tournant vers Phildar, tapant sur la table, se lève et fonce vers Phildar, menaçant]'' : T'arrêtes de te marrer ou je t'en colle une, toi ?
'''Reego''', ''[paternaliste]'' : Gérard, ton débat... Assieds-toi, fais ton débat.
'''Gérard''' : Alors, euh... Pot de chambre ?
'''Pot de chambre''' : Ouais, j'ai dit ouais.
'''Phildar''' : Dans quel sens ?
'''Pot de chambre''' : Ben, je dis oui, que je suis d'accord, quoi.
'''Gérard''', ''[se tournant vers Phildar, fou de rage, éteignant son micro en restant assis]'' : Mais putain ! Mais tu vas laisser ton micro éteint ! Tu vas faire ton boulot comme il faut au standard ? Ou tu te casses là ? ''[bruits de pet par la bouche, gloussements par Oui-bonsoir]''. Regarde les connards, là, qui font le bordel.
'''Manu''' : tu gères rien, Phildar, c'est une honte !
'''Gérard''', ''[emporté dans une impulsion, les bruits continuent, freppa Phildar sur le bras, sans effet]'' : Putain, mais... TU FAIS CHIER PHILDAR !
'''Phildar''' : Mais quoi ?
'''Viagra''' : Mets-lui une droite.
'''Manu''' : Ouais, ça y est, ça y est. La droite, elle est partie, ça y est.
'''Pot de chambre''' : un coup de tête !
'''Gérard''' : Putain, Phildar, tu vas bosser un peu, là... Parce que ça devient rengaine avec toi, hein.
'''Reego''' : Bon, Gérard, en attendant, on a une question sur l'IRC que je trouve intéressante, de Blue Falcon : « Comment attrape-t-on le Viagra ? »
'''Phildar''' : Par corresponda ce. ''[Max rentre dans le studio, réprouvant cette réponse par un cri réprobateur]''.
'''Manu''' : Moi, je pensais qu'on l'attrapait au lasso mais...
'''Viagra''' : Moi, je peux témoigner, c'est Viagra. Donc, moi, ce que j'ai fait, j'ai un peu déconné, quoi, parce que le Viagra est venu en France, c'est que j'ai pris dix pilules d'un coup. Donc, maintenant, à chaque instant, je bande.
'''Gérard''' : Non, mais ça... Ça, de toute manière, normalement, la pilule... La pilule contre le Viagra... La pilule... Le truc du Viagra, normalement, c'est prescrit par les médecins, et c'est bien précisé combien qu'il faut en prendre.
'''Viagra''' : C'est pas un médecin agréé, donc il m'a prescrit...
'''stp''' : N'importe quoi !
'''Gérard''' : Attends, celle qui dit n'importe quoi, tu commences à me casser les couilles, toi.
'''Viagra''' : Non, mais c'est vrai, on m'a fait un vaccin, une picouse dans la b... et maintenant, c'est encore pire, parce que c'était de l'adrénalyne.
'''Gérard''' : Bon, ça y est, toi, t'auras fait le tour de la question.
'''Oui-bonsoir''' : Gérard, c'est quoi, le Viagra ?
'''Gérard''' : Le Viagra, c'est une pilule pour ceux qui sont impuissants.
'''stp''' : Bah, c'est quoi, impuissants ?
'''Oui-bonsoir''' : C'est pas une maladie ?
'''Pot de chambre''' : Impuissants ? c'est quelqu'un comme Gérard.
'''Gérard''' : Ouais, mais attends ! Moi, je t'emmerde, toi, connard !
'''Cirrhose''' : Hé, Gérard ? Est-ce que tu prends du Viagra, toi ?
'''Gérard''' : Non !
'''Phildar et Javal''' : Non, il a déjà du gras à la maison. ''[explosion de rire générale. Gérard se lève vers Phildar et donne des coups sur la table juste à côté de lui.]''.
'''Gérard''' : Toi, fais gaffe à ta gueule, toi ! Je ne vais pas te louper, tout à l'heure. Si tu veux saccager le boulot, tu le saccages, mais tu dégages !
'''Oui-bonsoir''' : Ça va chier pour toi, Phildar.
'''Gérard''' : Alors, on va demander à... ''[voix d'Elie Semun dans ses petites annonces : Salut, ça va ? Gérard regarde tout le studio, l'air menaçant, fusillant Phildar du regard]''.
'''Phildar''' : Oui ? Allô ? ''[Gérard se jette sur lui, et le roue de coups, inefficaces car Phildar se défend et le maîtrise sans peine]''.
'''Manu''', ''[entre rire et légère surprise]'' : Gérard, Gérard, Gérard, mais arrêtes ! ''[Phildar est au sol, détroné de sa chaise, mais pas de danger]''.
'''Gérard''', ''[frappant désormais avec des cartons, hurlant]'' : tu vas gérer les auditeurs toi, merde !
'''Manu''' : Oh, la vache ! Phildar, il est par terre ! Il vient de se prendre un coup de feuille, un coup de savate !
'''Gérard''', ''[hurle, dominant Phildar de son corps]'' : Tu vas bosser ou quoi ? Espèce de fainéant !
'''Javal''' : Les gladiateurs !
'''Gérard''', ''[revient à sa place, s'asseoit, parle posément, suscitant le rire de tout le studio]''. : Bon, on va reprendre le thème. ''[Il hurle vers Phildar]'' : Tu vas l'éteindre ton micro ? ''[il se jette vers lui, débranche son micro, l'éteitn, le jette au sol]''.
'''Reego''' : Gérard, assieds-toi, vas-y. Laisse-le.
'''Manu''' : Il tape Phildar avec des bouts de cadeaux, vous ne pourriez plus rien gagner dans la journée. Gérard !
'''Max''' : Faut arrêter maintenant, arrête, Philippe.
'''Gérard''' : Mais tout à l'heure, je vais l'éclater pour de bon. Je vais laisser le débat terminé... Je vais laisser Rousseau maintenant. Je crois qu'on avait prévenu... Toi, je t'avais prévenu avant. De faire un boulot comme il faut. Alors, tu vas me chercher le connard, mais vite fait ! ''[la voix d'Elie Semun : Salut, ça va ?]''. Alors, troisième question, on va demander à Pot-de-chambre.
'''Max''' : Arrête de te marrer, fais le boulot, putain !
'''Gérard''' : Doit-on trouver un vaccin contre le Viagra ?
'''Mot-de-chambre''' : Mais je t'ai dit oui tout à l'heure, tu m'as posé la question en premier.
'''Javal''' : Déjà, moi, je voulais te dire que le Viagra, ça m'intéresse, parce que je suis atteint de mini-zobisme. Et je voudrais savoir... parce qu'apparemment, Viagra, là, il est dans le business, et je voulais savoir s'il pouvait justement me businesser, me dealer 2-3 Viagra, là, parce que je suis en galère.
'''Viagra''' : Bah écoute, y'a pas de problème, j'ai acheté une cartouche de vingt.
'''Gérard''' : Non, non, non, mais... Javal et Viagra, là. Vous verrez ça pendant la pause publicitaire.
'''Javal''' : Moi, j'aimerais bien me faire mettre une cartouche, en parlant de ça. ''[bruits de pets avec la bouche, Gérard fusille encore Phildar]''.
'''Gérard''' : : tu vas bosser ? Tu va sgérer les auditeurs ou je t'éclate ? Tu commences à faire chier là ! ''[la voix d'Elie Semoun]''. ''[A Manu]'' : Bon, envoie un disque.
'''Manu''' : Non, non, on peut pas, on peut pas tout de suite. On va reprendre dans le calme.
'''Reego''' : Sur l'IRC, y'a au moins 200 personnes qui sont parties suite au débordement de Phildar.
'''Gérard''' : Merci, Phildar.
'''Manu''' : Et on est plus que 2 sur Minitel aussi.
'''Gérard''', ''[applaudissant avec une ironie rageuse]'' : Voilà, merci Phildar ! Bravo conard ! ABruti va ! Combien c'est ? ''[Phildar est hilare]''.
'''Manu''' : Plus que 2 !
'''Gérard''', ''[alors que Javal imite le bruit de la tonalité de téléphone une fois la communication coupée]'' : Eh ben c'est bien... Cirrhose... Donc, toi, pour toi ?
'''Manu''' : tu gères un peu, Phil.
'''Cirrhose''' : Je pense qu'on peut pas trouver de vaccin contre le Viagra, parce que le Viagra, c'est un médicament. Le Viagra, c'est un médicament, tu le prends si t'es impuissant. Je vois pas quel est le rapport avec la question d'avoir un vaccin.
'''viagra''' : Contre l'obésité, y'a un truc ou pas ?
'''stp''' : Contre la connerie ?
'''Gérard''' : Je sens que tout à l'heure, y'en a qui vont se prendre des claques, ça va leur faire tout drôle. Et là, t'arrêtes aussi, Manu. T'arrêtes avec l'appareil, parce que ça me gonfle, c'est toi. C'est toi, je viens de te voir appuyer sur les touches.
'''Manu''' : J'ai fait ça, regarde, j'ai appuyé là. Ça fait quoi ? Y'a pas de son.
'''Gérard''' : Donc, s'il te plaît... ''[à Phildar]'' : ne te marre pas, toi, parce que tout à l'heure, ça va te faire tout drôle, toi. S'il te plaît
'''stp''' : Oui, je réponds. Moi, je dis que le Viagra, c'est bien, mais il faut pas en abuser.
'''Gérard''' : D'accord. Et oui ?
'''Oui-bonsoir''' : Bah, écoute, Phildar vient juste de me remettre à l'antenne à l'instant, donc j'ai pas entendu la question.
'''Gérard''' : Bon, alors, Phildar...
'''Phildar''' : C'est pas vrai, je te jure, j'ai pas touché aux touches !
'''Gérard''' : Phildar, tu vas dégager pour de bon, toi !
'''Phildar''' : Mais non, mais oui, réponds, c'est faux !
'''Gérard''' : T'es plus dans l'équipe. Tu vires, tu peux rester chez toi. Oui, donc, toi ? Doit-on trouver un vaccin contre le Viagra ?
'''Oui-bonsoir''' : Euh, non, je pense pas, non, parce qu'au contraire, je pense que le Viagra ne peut qu'améliorer les cas désespérés, quoi.
'''Gérard''' : D'accord. Donc, Viagra, t'avais répondu, toi ? Non, mais répondez pas... D'accord. Alors, quatrième question. De tte manière, je pense qu'on va arrêter avant 3h à cause de Phildar.
'''Phildar''' : Non, c'est vachement intéressant, tu vas pas arrêter à cause de moi.
'''Gérard''' : Non, non, à cause de la merde que t'as foutue, tu vois. Maintenant, sur IRC, on était 1400, maintenant, il n'y a plus personne. Bravo, Phildar, de tes conneries !
'''Reego''' : On est quand même plus de 1000, ce qui est déjà très bien, Gérard.
'''Gérard''' : Non, mais tout à l'heure, on était à 1400. S'il n'avait pas déconné, on aurait été à plus de 1600.
'''Manu''' : Là, Gérard, sur le 3615 Fun Radio, ça remonte, vu qu'on est quand même à 47.
'''Reego''' : Et Gérard, pour reparler de l'IRC, je lis vite fait. Alors, il y a Turpentine qui te demande : « GG, est-ce que tu es dérangé par tes bourrelets de vieux gras ? »
'''Gérard''' : Non, bah, ça, c'est... je ne vois pas du tout le rapport avec le vaccin contre le Viagra. Donc, avoir la gangrène est-elle une maladie ?
'''Cirrhose''' : C'est quoi, la gangrène ?
'''Gérard''' : Alors, j'explique tout de suite le truc : C'est un ongle qui est incarné.
'''Manu''' : Gérard, excuse-moi, je croyais que la réincarnation, c'était dans le bouddhisme.
'''Gérard''' : Non, non, la gangrène, c'est une maladie qui peut être très grave, et malheureusement, il y en a beaucoup qui ne sont pas soignés à temps contre ça, et ils risquent de perdre un membre de leur...
'''Phildar''' : De leur famille ?
'''Gérard''' : Non, non, un membre sur eux. Si tu as un ongle incarné et que tu ne te fais pas soigner, ça va continuer de s'infecter et tout. Donc, à un moment donné, ça va venir sur la main, ça va monter dans le bras, et ils seront obligés de te couper le bras. Et là, j'ai une personne que j'ai connue... Elle n'a pas voulu se faire soigner... Elle n'a pas voulu se faire soigner à temps et elle a perdu carrément une jambe.
'''Phildar''' : Mais bon, ça, c'est une maladie grave, on ne va pas en parler.
'''Gérard''' : Je suis désolé. La question, elle est faite comme ça, je la pose et c'est tout. Donc, vous allez y réfléchir et on va s'écouter Guy Brouty avec des mots fléchés sur Télé 7 jours. Et on se retrouve tout de suite après. ''[Musique. Au retour, Olivier a remplacé Phildar au standard]''.
'''Gérard''' : 2h32, donc vous pouvez toujours nous appeler au 0803 08... 5000 et 0800 70 5000. Toujours le 3615, code Fun Radio, rubrique direct, et toujours l'IRC qui doit revenir normalement.
'''Reego''' : Oui, on remonte d'ailleurs. On a redépassé quand ils ont entendu que tu virais Phildar du standard. Ils sont revenus et il y a 1685 personnes, virgule 4. ''[Phildar rentre dans le studio, criant de joie sur la remontée de l'IRC. Larsen dans le casque, Olivier le générant avec son casque]''.
'''Gérard''' : Phildar, je t'ai dit dehors ! Attends, attends ! Tu me retires le casque, je ne t'ai pas demandé de le remplacer pour foutre ta merde non plus ! Alors, on récupère Pot-dechambe. Javal, rebonsoir. Cirrhose. S'il te plaît. Oui. ''[silence]''. OUI !
'''Oui-bonsoir''' : Je suis là, mais Manu vient de me rebalancer maintenant.
'''Gérard''' : Non, c'est pas Manu.
'''Manu''' : Excusez-moi, je suis à la réa.
'''Gérard''' : Manu, il m'a mis tout le monde... Là, ça doit être Olivier qui doit s'amuser.
'''Oui-bonsoir''' : Ah bah, c'est Olivier, alors c'est un des deux.
'''Gérard''' : Viagra, donc, qui est toujours parmi nous ?
'''Viagra''' : Putain, j'ai la gaule !
'''Gérard''' : Bon bah, tu restes poli, s'il te plaît. Donc, alors, la question... La question, vous l'avez comprise ?
'''Mot-de-chambre''' : Ouais, tranquille, ouais. Mais faudrait que tu la répètes, en fait, ouais.
'''Gérard''' : Alors, avoir la gangrène est-elle une maladie ? Donc, on va demander ça, bah, à Viagra.
'''Viagra''' : Bah, oui. Bah, si tu le dis que c'est une maladie, je pense que c'est une maladie, mais moi, je... je comprends pas.
'''Gérard''' : Bah, si t'arrives pas à comprendre, c'est pas la peine de continuer le débat comme ça, toi.
'''Viagra''' : C'est dur, avec une b... dans l'oreille, quand même...
'''Gérard''' : Allez, hop, s'il vous plaît, là. Vous me virez Viagra, parce que j'aime pas ça.
'''Reego''' : Gérard ? Sur IRC, il y a Davy One... Qui me dit, alors : « Est-ce qu'il y a un bébé qui naît quand le monsieur met la petite gangrène dans la madame ? »
'''Gérard''' : Bah, en principe, oui, hein.
'''Reego''' : Et il me demande aussi combien ça fait en euros.
'''Gérard''' : Ah, ça, je sais pas. Voilà. Donc, on va demander à Oui.
'''Oui-bonsoir''' : C'est pas une maladie, en fait.
'''Gérard''' : Non ? C'est quoi, alors ?
'''Oui-bonsoir''' : Bah, c'est toi qui la provoques. Une grippe, ça s'attrape dans la rue, tu vois, tu la sens pas venir, tandis que la gangrène, c'est... c'est quand tu te soignes pas que tu l'attrapes.
'''Gérard''' : C'est ce que j'ai dit ! C'est ce que j'ai précisé bien avant le disque !
'''Oui-bonsoir''' : Eh ben, c'est pour ça que je t'ai dit que c'est pas une maladie.
'''Gérard''' : Bah si, ça peut être une maladie, quand même.
'''OUi-bonsoir''' : C'est pas une maladie, quand même, ça s'attrape pas.
'''Gérard''' : D'accord. Non, mais j'ai pas dit que ça... j'ai pas dit que ça s'attrapait, nuance ! J'ai demandé : est-ce qu'avoir la gangrène est-elle une maladie ? J'ai pas dit si ça s'attrapait !
'''Oui-bonsoir''' : Eh ben, moi, je te dis non, parce qu'une maladie, ça s'attrape, et la gangrène, ça s'attrape pas.
'''Gérard''' : D'accord. Ok. Alors, s'il te plaît ?
'''stp''' : Oui. C'est une maladie, oui.
'''Gérard''' : Ah ben, c'est tout ce que tu me réponds ?
'''stp''' : Bah oui, c'est une maladie. ''[coupure du son]''.
'''Gérard''' : Bon, alors, Olivier, tu retournes... Allez, retourne d'où que tu viens !
'''Olivier''' : Non, mais je me suis trompé. Non, je voulais juste te dire, parce qu'en fait, à la place de Viagra, on accueille Syphilis, voilà. ''[voix d'Elie Semoun : Bonjour. Je suis Jean-Louis Connard.]''.
'''Javal et Pot-de-chambre''' : Salut, Connard.
'''Gérard''' : Donc, on va préciser Jean-Louis, parce que...
'''Phildar''' : Ouais, non, mais non, t'as pas compris. Non, Jean-Louis Syphilis, mais c'est Syphilis son prénom.
'''Gérard''' : Alors, si... Ben, tiens, Jean-Louis ? Jean-Louis, la gangrène est une maladie ?
'''Jean-Louis''' : Oui, la gangrène est une maladie.
'''Gérard''' : Ok, Non, mais tu peux préciser ?
'''Jean-Louis''' : Jean-Louis, Jean-Louis...
'''Gérard''', ''[agacé]'' : Oh, tu précises !?
'''Jean-Louis''' : Oui, c'est Jean-Louis.
'''Javal''' : Salut, Connard.
'''Gérard''' : Bon, allez, oh, tous les deux, là, vous me gérez, là, parce qu'il comprend rien, là.
'''Olivier''' : Je comprends rien. C'est Jean-Louis ou Syphilis ?
'''Jean-Louis''' : Non, c'est Jean-Louis Syphilis, c'est mon prénom et mon nom.
'''Javal''' : Mais tu peux l'appeler Connard.
'''Phildar''' : Non, c'est Syphilis. Il t'a dit que oui, c'était une maladie, donc c'est bon, il t'a répondu.
'''Cirrhose''' : Oui, ben moi, je suis pas d'accord avec celui qui disait que la gangrène, c'est pas une maladie. Moi, je pense que c'est une maladie, parce que si tu peux l'attraper, la gangrène...
'''stp''' : N'importe quoi !
'''Gérard''' : Bon, elle, elle est celle qui dit n'importe quoi, tu vas commencer par te la fermer !
'''CIrrhose''' : Mais par contre, si tu attrapes la gangrène, est-ce qu'on peut te couper tous les membres ?
'''stp''' : N'importe quoi !
'''Cirrhose''' : J'ai le droit de répondre aussi, j'ai le droit de m'exprimer.
'''Reego''' : Sur l'IRC, on me demande : « Quelle est la personne pas intelligente qui essaye de s'exprimer ? »
'''Pot-de-chambre''' : C'est peut-être une bouffonne, je sais pas.
'''Jean-Louis''' : Une invitée X.
'''Gérard''' : Bon, alors, tu me gères...
'''Olivier''' : Attends, attends, je vire la bouffonne.
'''Gérard''' : Non, non, tu la laisses, la bouffonne, elle t'emmerde !
'''Olivier''' : Non, mais j'ai viré la bouffonne.
'''Gérard''' : Cirrhose, donc, toi, t'as répondu ?
'''Cirrhose''' : Oui, je t'ai répondu, c'est une maladie, la gangrène.
'''Oui-bonsoir''' : Mais tais-toi !
'''Cirrhose''' : J'ai le droit de répondre, hein.
'''Phildar''' : Non, Gérard, passe aux autres auditeurs, c'est bon.
'''Gérard''' : Je crois que tu vas me prendre un peu sur les nanas, là, parce que ça commence à me prendre la tête, là. Javal ?
'''Javal''' : Ouais, mais on parlait de petites graines. Moi, je suis donneur, et quand tu veux...
'''Gérard''' : De la gangrène, abruti !
'''Javal''' : Ben quand tu veux, les petites graines dans ta turbine à chocolat.
'''Gérard''' : Bon, alors, Javal, tu dégages. Bonne nuit ! Allez, hop, celui-là, on l'envoie se coucher, il aura tout compris. Pot de chambre ?
'''Pot-de-chambre''' : Ouais, je t'appellerai, c'est le lit, tout ça, je connais... Donc, ouais, non, elle me saoule, cette question.
'''Gérard''' : Non, alors, elle te saoule ? Tu veux continuer le débat, ou pas ?
'''Phildar''' : Ouais, c'est pour ça, il vaut mieux qu'on passe à une autre question, c'est mieux.
'''Gérard''' : Non, mais attends, je fais ce que je veux !
'''Olivier''' : Non, elle est nulle, la question.
'''Gérard''' : Bon, Olivier, si t'es pas content, tu retournes de l'autre côté.
'''Olivier''' : Non, mais non, je suis pas content, mais elle est nulle.
'''Gérard''' : Moi, je fais ce que je veux, d'accord ?
'''stp''' : Il a raison, Olivier.
'''Pot de chambre''', ''[imitant Gérard tel un petit enfant]'' : Moi, je fais ce que je veux ! gna gna gna !
'''Gérard''' : Bon, alors, Pot de chambre, tu dégages. Bonne nuit pour toi. Allez, hop.
'''Olivier''' : Il n'y a plus personne.
'''Gérard''' : Non, non, mais vous allez me récupérer d'autres personnes, vite fait. Alors, les piqûres d'insectes rendent-ils malades ? On va demander ça à Jean-Louis.
'''Jean-Louis''' : Les piqûres d'insectes ? Bah oui, bah oui, tout à fait. Moi, j'ai eu... Enfin, il y a un moustique qui m'a piqué et cet enculé, il avait le sida. Donc, je l'ai attrapé aussi.
'''Gérard''' : D'accord, Jean-Louis. Pour l'instant, j'ai pas envie de parler de sida ce soir.
'''Jean-Louis''' : Ah ouais ? Tu parles de la gangrène, mais tu parles pas du sida.
'''Gérard''' : Non, mais je parle pas... J'ai pas envie d'en parler, c'est tout, parce que c'est un truc qui est trop long à gérer. Euh, oui, pour toi ?
'''Oui-bonsoir''' : Euh, ouais, moi, une fois, je me suis fait piquer sur le clito. Depuis ce temps-là, ça n'a pas dégonflé, donc ça craint un peu, quoi.
'''Gérard''' : Ouais, mais dans ces cas-là, t'as qu'à aller voir un médecin.
'''Oui-bonsoir''' : Bah ouais, mais tu sais, le médecin, tu sais ce qu'il m'a dit...... En fait, non, je vais t'expliquer, Gérard : une fois, je me suis fait bronzer, donc j'étais à poil, et, si tu veux, il y a une abeille qui est rentrée à l'intérieur. Donc j'ai été voir le gynéco, le gynéco m'a dit : « Bah écoute, il n'y a qu'une solution. Vous savez, mademoiselle, il n'y a qu'une solution. » Donc en fait, au bout de son gant, il a mis du miel et puis il est passé à l'intérieur, tu vois, il me l'a rentré. Comme ça, il s'est dit : l'abeille va sortir, va s'accrocher sur le miel. Et puis en fait, donc il se retire, et puis l'abeille n'était pas là. Et puis en fait, il continue, et puis il fait des va-et-vient, tu vois, et puis alors là, vraiment carrément, quoi ! Donc je lui dis : « Mais qu'est-ce que vous faites ? »...
'''Gérard''' : Ouais, mais ça y est, ça y est, on a compris, on a compris.
'''Oui-bonsoir''' : Non, c'est pas fini !
'''Gérard''' : Ouais, mais maintenant, dépêche-toi, parce qu'il y a d'autres personnes. Et puis il y a une question IRC.
'''Oui-bonsoir''' : Donc à la fin, il me dit : « Bah, en fait, vu qu'elle ne veut pas venir, vu qu'elle ne veut pas se coller, maintenant, il faut la noyer. »
'''Gérard''' : Bon, ça y est ?
'''Reego''' : Donc sur IRC, il y a Snul qui te demande : « Est-ce que quand on est malade et qu'un insecte nous pique, l'insecte peut-il tomber malade ? »
'''Gérard''' : Euh, ça, je pense pas, mais...
'''Oui-bonsoir''' : S'il pique Sandy, oui.
'''Gérard''' : Alors toi, je t'emmerde, toi, Oui, d'accord ? Voilà. Comme on sait que c'est elle qui s'amuse depuis tout à l'heure.
'''Olivier''' : Et la question, alors, tu penses quoi ?
'''Gérard''' : Donc, bah, attends, tout le monde n'a pas répondu.
'''Olivier''' : Non, mais pour l'insecte malade, là, parce que t'as répondu...
'''Gérard''' : Non, non, mais je pense pas qu'il peut être malade en même temps. Ça, j'ai jamais vu un insecte malade comme ça.
'''Olivier ''' : On accueille Cuvette à la place de Pot de Chambre.
'''Phildar''' : On accueille Supo à la place de Javal.
'''Gérard''' : Ok. Alors, s'il te plaît ? Donc, pour toi, la question : Les piqûres d'insectes rendent-elles malades ?
'''stp''' : Bah, moi, ça m'a rendu pas mal malade. Il y a une fourmi qui m'a piquée entre les deux seins, et maintenant, j'en ai trois.
'''Gérard''' : Non, mais attends, c'est des fourmis rouges.
'''stp''' : Ouais, je suis allée en Amazonie intérieure et... je me suis fait piquer par une fourmi rouge. Bah, maintenant, j'ai du mal à trouver des soutif, quoi !
'''Gérard''' : Non, mais t'as pas... tu t'es pas fait vacciner pour aller là-bas ?
'''stp''' : Pas contre les fourmis rouges, j'ai pas pensé.
'''Gérard''' : Il y a quand même des vaccins... il faut quand même se faire vacciner avant de partir dans certains pays.
'''Manu''' : lesquels, Gérard ?
'''Gérard''' : Non, mais... il y a plusieurs pays comme...
'''Supo et Oui-bonsoir''' : Suresnes.
'''Gérard''' : Ouais, bah, c'est ça. Alors, fermez vos gueules ! Le prochain que j'entends dire Suresnes, il va dégager. Je vais pas chercher qui c'est, maintenant.
'''Jean-Louis''' : Non, mais la personne qui a trois seins, comment elle s'appelle ?
'''Gérard''' : Elle s'appelle... ''[bruit de larsen]'', S'il te plaît, merci pour le larsen...
'''Cuvette''' : Parce que même avec trois ou quatre seins, moi, je m'en fiche.
'''Gérard''' : Bon, ok, bah, c'est bon. Alors, vous allez vous calmer, s'il vous plaît, merci.
'''stp''' : Y'en a pas un qui a deux b... là ?
'''Gérard''' : Bon, bah, vous vous calmez, merci. Cirrhose ?
'''Cirrhose''' : Oui, je pense que les insectes, ils peuvent...
'''Jean-Louis''' : Elle est encore là, elle ? ''[Quequ'un souffle, les garçons commentent bruyamment, Oui-bonsoir hurle qu'elle ne doit pas parler]''.
'''Gérard''', ''[explose]'' : Hé, elle vous emmerde elle, ok ?
'''Cirrhose''' : Non, mais j'ai le droit de m'exprimer, quand même.
'''Oui-bonsoir''' : Non, t'as pas le droit !
'''Gérard''' : Tu me vires tous les autres et tu gardes Cirrhose, et tu me prends d'autres personnes. je continue pas le débat comme ça.
'''Olivier''' : C'est bon, c'est bon, j'ai viré Cirrhose et j'ai gardé tous les autres. C'est bon, c'est bon, c'est bon, je vire Cirrhose.
'''Phildar''' : Non, c'est l'inverse !
'''Olivier''' : Ah, merde !
'''Cirrhose''' : Gérard ?
'''Gérard''' : Alors, tu vires tous les autres ou je continue pas !
'''Cirrhose''' : Pourquoi tu connais pas la mouche tsé-tsé qui donne la maladie du sommeil ?
'''Gérard''' : Non, mais attends ! Mais moi, je te parle : Les piqûres d'insectes rendent-elles malades ? C'est ça, la question, c'est pas...
'''Cirrhose''' : Justement, il y a la mouche tsé-tsé qui donne la maladie du sommeil.
'''Gérard''', ''[moqueur]'' : Ah, d'accord. Parce que t'as déjà testé une mouche, toi, qui rendait malade ?
'''Cirrhose''' : Bah, oui, j'ai... ''[coupure]''. ...une épidémie sur une ville
que je dirais...
'''Gérard''', ''[menaçant envers Phildar]'' : Attention à ce que tu fais, toi.
'''Manu''' : Attends, parce que là, Gérard, il t'écoute plus. Gérard, écoute au moins les auditeurs !
'''Gérard''' : Si si, mais j'ai entendu ce qu'elle disait, donc c'est bon. Donc, alors, maintenant, on va... on va attendre un petit peu que Phildar me retrouve des auditeurs potables, et qu'ils arrêtent de...
'''Olivier''' : Il n'y a plus d'appels ! Il n'y a plus un seul appel !
'''Reego''' : Moi, j'ai plein de questions, IRC. ''[La voix de Semoun : c'est Jean-Louis Conard]''.
'''Gérard''' : Celui qui s'amuse à ça va se calmer, Manu, d'accord ? Sinon, tu vas faire le standard. Oui Reego, en attendant ?
'''Reego''' : alors, il y a Turpentine qui te demande si un lépreux peut attraper la gangrène.
'''Gérard''' : Un lépreux ? Bah, de toute manière, c'est un peu... ça vient de chez eux. Ils sont déjà souvent atteints de la gangrène, aussi, là-bas, chez eux, hein.
'''Max''' : Excuse-moi, quand tu dis « chez eux », c'est le pays, ou c'est le...
'''Gérard''' : Ouais, ouais, ouais, dans leur pays.
'''Manu''' : Non, parce que là-bas, il y a la gangrène et la hougraine, aussi. T'as oublié d'en parler tout à l'heure.
'''Gérard''' : Toi... Occupe-toi de ta réa tranquille. fais du bon boulot et tu resteras dans l'équipe, sinon, tu retournes au standard avant la fin de l'émission.
'''Reego''' : Alors, il y a Serval qui me dit : « La mouche de la cirrhose, elle donne la maladie de Parkinson »... Non, je comprends rien. « Est-ce que quand on perd ses doigts, on peut les remplacer ? » c'est Davy One qui me dit : « Est-ce que quand on perd ses doigts, on peut les remplacer par des Twix ? »
'''Gérard''' : Euh, non. Non, parce que quand tu perds tes doigts, tu peux pas les remplacer, en principe. Ça, c'est pas mal.
'''Reego''' : Et on me demande aussi si Cirrhose pique quand elle se rase pas.
'''Gérard''' : Non, c'est pas les femmes qui piquent, c'est les hommes qui piquent quand ils se rasent pas comme moi. Voilà. Donc, alors...
'''Phildar''' : Alors, à la place de Cuvette, on accueille Cuvette numéro 2.
'''Gérard''' : Ouais, bien sûr.
'''Phildar''' : On accueille Suppo 2,
'''Gérard''' : bien sûr. Et tu reprends toujours les mêmes espèce de connard !
'''Phildar''' : Syphilis 2.
'''Manu''' : Vous vous êtes pas pris la tête !
'''Phildar''' : Soutif et Pâté de foiee.
'''Olivier''' : Alors, par contre, il y a Cirrhose qui s'en va.
'''Gérard''' : Non, Cirrhose, elle reste là.
'''Supo''' : Ah, enfin une bonne nouvelle !
'''Gérard''' : Alors, hé, je vous préviens, vous vous êtes pas fait chier, vous avez viré tous les autres et vous les avez repris sous d'autres noms !
'''Syphilis''' : Non, mais Cirrhose, remplace-la par Boulimie.
'''Cuvette''' : Quand je t'appellerai Pot de chambre, tu sortiras de sous le...
'''Gérard''' : Toi, tu fermes ta gueule !
'''Phildar''' : Maintenant qu'on a des nouveaux auditeurs, on va reprendre le débat et on se calme.
'''Gérard''' : Donc, alors, il y a un sondage, déjà, je vais le faire. À la question : « Être malade peut provoquer des maladies ? » Alors, ça, c'est même pas la peine que j'y réponde... ''[il fait une boule de papier avec la feuille et la jette, devant les cris mécontents de l'équipe]''. Non, non, ça, c'est des conneries. Les oreillons vous rendent-ils malades ? On va demander à Cuvette 2.
'''Cuvette''' : Ouais, alors, les oreillons, non, ça rend pas malade, ça fait juste mal aux oreilles, en fait.
'''Gérard''' : Ouais, mais ça peut rendre malade.
'''Cuvette''' : Oh, non, non.
'''Gérard''' : D'accord. Suppo ?
'''Supo''' : Ouais, bah, écoute, j'ai eu les oreillons et ça m'a filé une transpirationite aiguë et je pense que tu connais le problème.
'''Gérard''' : Non, je vois pas du tout ce que tu veux dire. Cirrhose ?
'''Cirrhose''' : Oui, les oreillons peuvent être une maladie, mais ça, c'est surtout pour les garçons, c'est pas pour les filles.
'''Soutif''' : Oui, il paraît que ça fait gonfler les couilles.
'''Gérard''' : Non, mais attends, vous allez... Je vous préviens, vous allez arrêter de dire des conneries comme ça, parce que sinon, la sixième question, ça va être la dernière, on va faire conclusion et je rentre chez moi, ça va être clair et net !
'''Phildar''' : Ça, ça serait bien.
'''Gérard''' : Alors là, faudrait peut-être vous calmer un peu. Parce que là...
'''Phildar''' : Non, mais ce qu'il faudrait, c'est que tu leur expliques.
'''Gérard''' : Non, non, mais attends, au standard, vous vous êtes pas fait chier !
'''Manu''' : Moi, perso, ils m'ont dit qu'ils s'emmerdaient grave, ce soir.
'''Olivier''' : C'est nul, ton truc, là.
'''Gérard''' : Ils sont nuls ? Toi, tu dégages. Dégage, maintenant ! Syphilis ?
'''Syphilis''' : Oui. Les oreillons, je les ai eus quand j'étais petit. Et ça m'a laissé des séquelles.
'''Gérard''' : Ouais, bah, je pense pas. Soutif ?
'''Soutif''' : Oui. Les oreillons, oui, c'est une maladie, et il y en a qui ont eu la gangrène des oreilles et elles sont tombées.
'''Gérard''' : Non, mais attends, les oreillons, ça donne pas la gangrène, hein.
'''Soutif''' : Ah si, je te jure, hein ! Je travaille dans le milieu hospitalier, je peux te dire que ça arrive.
'''Gérard''' : D'accord. Une question...
'''Reego''' : Oui, il y a Serval qui te demande si on attrape les oreillons en écoutant trop fort son Walkman.
'''Gérard''' : Euh, non, pas spécialement. Pâté de foie ?
'''Pâté''' : Oui, bah, tout d'abord, bonsoir, Gérard. Donc, je viens d'arriver. Donc, bah, ouais, il paraît, il paraît, ouais. C'est une maladie sexuellement transmissible, en plus.
'''Syphilis''' : C'est quoi, ta maladie, à toi ?
'''Pâté''' : Bah, moi, j'ai attrapé l'oreillon d'une seule oreille suite à un rapport sexuel, un dérapage de coton-tige.
'''Syphilis''' : Mais t'es toujours baisable ?
'''Pâté''' : Euh, ouais, je suis toujours baisable.
'''Gérard''' : Alors, Syphilis, tu vas te calmer ! Et celui qui vient de dire, en parlant des cotons-tiges, toi ça va être la dernière fois, parce que tu vas dégager... ''[au standard, où les deux parlent entre eux]'', Hé, ça va, tous les deux, là ? Ça va, là, je vous emmerde pas trop ?
'''Manu''' : Gérard, Gérard ! Sur Minitel, on nous demande si t'as eu la gangrène du cerveau tellement t'es con.
'''Gérard''' : Non, c'est plutôt lui qui a eu la gangrène. C'est qui, qui dit ça ?
'''Manu''' : C'est Bibitte.
'''Gérard''' : Bibitte, il a quel âge ?
'''Manu''' : Il a 112 ans.
'''Olivier''' : Je crois que ça s'attrape dans les toilettes, surtout.
'''Gérard''' : Bon, toi, tu fermes ta gueule !
'''Pâté''' : À la Loco.
'''Gérard''' : Bon, alors, encore une fois, de toute manière, c'est la dernière question, parce que vous me cassez les couilles... à cause des deux du standard, à cause des deux du standard, c'est tout ! Ils sont même pas capables de faire un boulot comme il faut, ces deux connards.
'''Syphilis''' : Après, c'est qui qui paye ? C'est les auditeurs.
'''Gérard''' : C'est pas de ma faute, dans ces cas, vous n'avez qu'à vous en prendre après Olivier et Phildar.
'''Syphilis''' : C'est pas de notre faute si t'as une équipe de merde.
'''Gérard''' : Pour l'instant, il y en a deux qui font du bon boulot, c'est Manu et Phildar... et Reego. Les deux autres, c'est deux cons ! Alors, les tics... Les tics sont-ils des maladies qu'on peut avoir en automne ?
'''Supo''' : Un coup de savon ça suffit.
'''Gérard''' : Qui c'est qui qui répond comme ça ? Non, mais donnez pas vos noms, s'il vous plaît !
'''Supo''' : C'est Pedro.
'''Gérard''' : Putain, allez, c'est la dernière question, vous me cassez les couilles, là. Là, au standard, vous me cassez... vous faites du boulot dégueulasse, vous m'avez fait du boulot dégueulasse. Le deuxième débat, vous me cassez...
'''Phildar''' : Non mais deu secondes. Les audituers : j'aimerais bien que vous
réfléchissiez un peu aux questions de Gérard et que vous fassiez un débat un peu plus potable parce qu'après, c'est nous qui prenons, et l'émission est pourrie. J'aimerais bien que quand on vous sélectionne, que vous fassiez quand même un minimum d'effort pour comprendre. C'est quand même pas compliqué, ces questions !
'''Syphilis''' : Il faut qu'il nous cite chacun notre tour.
'''Gérard''' : Celui qui a voulu répondre répond maintenant. Tu donnes ton nom et tu réponds.
'''Phildar''' : Gérard, il se casse le cul une semaine pour faire un débat.
'''Gérard''' : Putain, mais c'est quoi cet auditeur qui a voulu répondre et qui ne veut plus répondre maintenant ?
'''Cuvette''' : C'est Syphilis !
'''Syphilis''' : Moi, je vais répondre.
'''Gérard''' : Bon Syphilis, dégage ! Terminé pour toi. Celui qui se marre va dégager aussi. Parce que là, je crois que ça commence à bien faire.
'''Phildar''' : Je leur ai dit ce qu'il fallait qu'ils fassent.
'''Gérard''' : Non, non, mais attends. Le premier débat, il est potable, le deuxième, c'est de la merde à cause de vous deux. Pour l'instant, il y a que Reego qui bosse et Manu. Attendez, après le débat, on va discuter la semaine prochaine, je veux plus de vous.
'''Olivier''' : Oh, j'ai rien fait, Gérard !
'''Gérard''' : Non, non, je veux pas le savoir, vous faites du boulot de merde. Alors, Pâté de foie, pour toi ?
'''Pâté de foie''' : Tu peux répéter la question, s'il te plaît ?
'''Gérard''' : Les tiques... sont-ils des maladies qu'on peut avoir en automne ?
'''Pâté''' : Non, c'est des petites bêtes que les chiens attrapent.
'''Gérard''' : Voilà, d'accord. C'est ce que je voulais t'entendre dire. Soutif ? ''[silence. Gérard se précipite sur le standard en lançant le casque, le pied de micro, le carton. Olivier hurle pour le calmer, Gérard hurle de frustration]''. Putain mais merde !
'''Manu''' : arrête de taper sur tout le monde, Gérard.
'''Soutif''' : Non, c'est ma faute, c'est ma faute, c'est ma faute, excuse-moi.
'''Gérard''' : Non, non,, tu dégages. Olivier tu dégages !
'''Reego''' : Gérard, pour revenir au débat...
'''Manu''' : Attendez, les auditeurs, attendez.
'''Phildar''', ''[pendant qu'Olivier sort]'' : Enfin, on va faire un vrai débat.
'''Gérard''' : Là, c'est de la merde, là ! Et toi, t'as intérêt de bosser comme il faut, sinon, t'en prends autant, d'accord ?
'''Reego''' : Bon, ben voilà. Ben non, je l'ai raté. Merci, merci, Phildar !
'''Gérard''' : L'auditeur qui a voulu poser la question, sur IRC, s'il te plaît, tu peux revenir, je te remercie.
'''Reego''' : C'était Oxyd. Oxyd, tu peux répéter ? Ah voilà, c'est bon, je l'ai, je l'ai ! Alors, la politique des maladies gêne-t-elle les camionneurs qui jouent du synthé ?
'''Gérard''' : Ça, je vois pas du tout le rapport avec les maladies, c'est pas grave. Donc, à la place de Syphilis, tu me prends quelqu'un d'autre.
'''Phildar''' : Ben, si, Jean-Pierre, alors.
'''Gérard''' : Fais gaffe, Phildar, parce que tu vas t'en prendre autant qu'Olivier. Cirrhose ?
'''Cirrhose''' : Oui, ben, comme elle disait, Pâté de foiee, les tiques, ça s'attrape... c'est dans les animaux, quoi, c'est dans leurs poils, quoi.
'''Gérard''' : D'accord. Suppo 2...
'''Reego''' : Mais non ! Un tic, c'est genre quand tu clignes de l'œil, c'est ça un tic.
'''Cuvette''' : Non, mon tic, c'est le prout.
'''Gérard''' : Oh, ta gueule, toi ! Bon, alors, Suppo, tu dégages.
'''Reego et Manu''' : C'est pas grave, réponds, vas-y, vas-y, vas-y.
'''Reego''' : Réponds, parce que moi, ça m'intéresse, ça.
'''Gérard''' : Non, parce que les tics, il y a certaines personnes qui ont des tics, qui n'arrêtent pas de bouger les épaules...
'''Reego''' : ou de se gratter la moustache.
'''Gérard''' : Ouais, comme moi. Moi, c'est un tic de me gratter la moustache. Voilà, c'est ça que je voulais dire. Donc c'est pas du tout dans les bêtes, Pâté de foiee.
'''Pâté''' : Ah, ouais, non, mais enfin, moi, tu me parles de tics, moi, tout de suite, je...
'''Gérard''' : Non, mais des tics, t'as certaines personnes qui ont des tics sans arrêt. Oui, mais, ouais, bien sûr. Ça peut aussi aller dans les animaux, je suis d'accord avec Cirrhose. Donc, Suppo, t'as répondu.
'''Supo''' : Non j'ai pas répondu ! Les tics en automne, ouais, les tac en hiver, les tics en été et les tocs au printemps.
'''Reego''' : Gérard, on me demande si les tics sont polis ? Politique...
'''Gérard''' : Non, non, je vois pas, je vois pas du tout le truc.
'''Phildar''' : Excuse-moi, Gérard. J'ai trouvé mais j'ai galéré. Donc c'est un prénom composé : Marc-Serge-Thierry, mais tu peux l'appeler MST.
'''Cuvette''' : C'est Cuvette, j'ai pas répondu à la question. Je pense que c'est des petites bêtes qui mangent les caniches.
'''Gérard''' : Mais je viens de te dire que ça servait...
'''Cuvette''' : c'est aussi sur les humains, mais je suis sûr que les chiens aussi, quand même.
'''Gérard''' : D'accord. Donc, MST ?
'''MST''' : Oui, alors, les tics, ben oui, comme disait la jeune demoiselle, qui est toujours baisable. J'ai bien repéré son nom. Celle qui a trois seins.
'''Gérard''' : Elle est plus là, je te signale.
'''MST''' : Dommage, dommage. Elle est morte ? Elle avait quoi comme maladie ?
'''Gérard''' : Non, mais je vais te dire, depuis tout à l'heure, c'est d'autres auditeurs qu'on a.
'''MST''' : Donc moi, les tics, ouais, c'est comme disait la personne, c'est pour les chiens, c'est une maladie des chiens.
'''Gérard''' : Non, mais, on vient de dire tout... MST, t'as pas encore...
'''Pâté''' : C'est la maladie des bulldogs.
'''Gérard''' : Euh, Pâté de foiee, tu te calmes, s'il te plaît.
'''MST''' : Non, mais, les tics, c'est une espèce de morpion canin qu'il y a sur les tresses.
'''Soutif''' : C'est des poux en fait.
'''MST''' : Ah, mais je te jure !
'''Gérard''' : Bon, de toute manière, il est 53. De toute manière, je pense qu'on n'ira pas jusqu'aux 10.
'''Soutif''' : Moi, j'ai des tics, mais la décence m'interdit de le dire au téléphone.
'''MST''' : Toi, t'as une voix qui m'excite pas du tout, je tenais à te le dire.
'''Gérard''' : S'il vous plaît, ça va, de faire votre popote...
'''Manu et phildar''' : On va peut-être revenir dans le débat.
'''Gérard''' : De toute manière, c'est la dernière question. Alors, avoir des coups de soleil vous rendent-ils malades ? On va demander à Cuvette.
'''Cuvette''' : Ouais, ouais, moi, ça me rend vraiment malade.
'''Gérard''' : Bah, t'en as déjà eu ?
'''Cuvette''' : Euh, non.
'''Gérard''' : Non, bah, alors, comment tu peux...
'''Cuvette''' : Bah, parce que je dois pas me mettre au soleil, mais on m'a dit que ça me rendait malade, donc je prends pas le risque, en fait.
'''Phildar''' : C'est pas con, ça, hein !
'''Cuvette''' : Je suis courageux, mais pas téméraire.
'''Supo''' : Ouais, non, les coups de soleil, moi, ça me dérange pas, les coups de butoir non plus.
'''Gérard''' : Non, mais attends, tu réponds correctement à la question, pas à côté, s'il te plaît.
'''Supo''' : Les coups de soleil, ça me dérange pas, et les coups de buttoir non plus.
'''Gérard''' : D'accord, mais non, mais je crois que, toi, tu comprends... Non, mais je crois que t'es un peu bouché des oreilles.
'''Manu''' : c'est une maladie aussi.
'''Gérard''' : Parce que depuis, depuis le temps que tu dois écouter Fun et que je fais des débats, tu dois comprendre les questions. Alors, si tu comprends pas la question que je viens de poser, ça servait à rien de faire le débat, d'accord ?
'''Cuvette''' : Il a qu'à s'acheter un sonotone.
'''Cirrhose''' : Non, moi, les coups de soleil ne me font pas attraper de maladie, c'est que...
'''Supo''' : T'en as déjà.
'''Cirrhose''' : Non, non, c'est pas ça, mais c'est que moi, je bronze facilement, j'ai une peau...
'''Soutif''' : Elle est black ?
'''Cuvette''' : Non, non, elle a une jolie peau, elle est belle, tout ça.
'''Cirrhose''' : Même si on attrape des coups de soleil, je pense qu'il faut quand même mettre de la crème et se protéger en mettant un chapeau, tout ça.
'''Manu''' : Gérard ? On nous dit sur Minitel que contre les coups de soleil, le meilleur remède, c'est de superposer plein de couches de fond de teint.<ref name="context1"></ref> Ils nous disent que c'est un super remède.
'''Gérard''' : Non, pas du tout. MST ?
'''MST''' : Bah oui, c'est comme l'invitée mystère, moi, c'est... je mets de la crème, mais pas sur le chapeau, je suis pas débile.
'''Cirrhose''' : Mais non, je mets de la crème sur le corps.
'''PST''', ''[écœuré]'' : Oh, encore pire ! Tu veux me faire vomir, ou quoi ?
'''Manu''' : Ça doit te coûter cher en tubes, parce que...
'''Gérard''' : Oh, je vous signale qu'il y a des crèmes solaires pour... pour le corps, hein, au cas où vous le saurez pas !
'''PST''' : On appelle ça de la vaseline.
'''Gérard''' : Ouais, c'est ça, et ta connerie, on appelle ça de la merde ! Ok, alors Soutif. Donc, pour toi ?
'''Soutif''' : Bah moi, quand j'ai des coups de soleil, ça me fout la diarrhée.
'''Gérard''' : Ah bon, d'accord, carrément, toi ?
'''Cuvette''' : Toi c'est cash, toi.
'''Soutif''' : Bah carrément, j'évite de me faire bronzer le derrière, puisque à chaque fois, ça le fait, alors...
'''Gérard''' : Attends, Soutif, je te coupe 5 minutes. Celui qui s'amuse encore à redire à la personne qui parle de dégager, je vais pas chercher entre MST, Suppo et Cuvette, je vais en virer un des trois au hasard. Alors, Soutif ? Donc, si tu me disais...
'''Soutif''' : Bah, ça me fout la diarrhée, donc j'évite de partir au soleil en vacances, je me fais des vacances d'été en Normandie, en Norvège, des choses comme ça.
'''Gérard''' : Ouais, mais en Normandie, je pense qu'il y a quand même pas mal de soleil.
'''Soutif''' : Je suis allée un an en Normandie, il y a eu 15 jours de pluie, et les 15 autres jours, il a plu.
'''Gérard''' : Attends, je comprends pas, t'as eu 15 jours de pluie et les 15 autres jours de... Eh non, mais attends, ça veut dire que t'es... que t'es partie un mois, et pendant un mois, t'as eu de la pluie.
'''Soutif''' : Oh, bah, t'as tout compris. Mais j'ai pas bronzé, donc j'ai pas eu la diarrhée.
'''Reego''' : — Il y a Le Chiant sur l'IRC qui te demande si les coups de lune sont-ils aussi dangereux que les coups de soleil.
'''Phildar''' : Non, dans la lune !
'''Gérard''' : Non, mais, alors là, je vais te dire une chose, Chiant, c'est même pas la peine que je réponde à ta question. Le Chiant, t'as même pas compris la question.
'''Reego''' : Non, mais ça existe, les coups de lune.
'''Gérard''' : Euh, Pâté de foiee ?
'''Pâté''' : En fait, avec les coups de soleil, on peut attraper les maladies de la peau. Donc, moi, pour me protéger, au lieu de mettre de la crème solaire, bah, je mets de l'huile à bronzer, comme ça, au moins, je suis sûre de pas attraper de coups de soleil.
'''Gérard''' : Donc, tu reviens à ce que je te disais, qu'il y avait des crèmes solaires pour éviter d'attraper des coups de soleil.
'''Pâté''' : Ah, c'est l'huile solaire. Avec un indice zéro. Au moins, tu bronzes pas.
'''Gérard''' : Alors, moi, je peux vous dire une chose, que les coups de soleil, il y a certaines crèmes solaires qui servent pour éviter qu'on les attrape.
'''Pâté''' : Parce que les écran total, ça fait bronzer, hein, Gérard. Les écrans totaux, ça fait attraper des coups de soleil. Ce qu'il faut, c'est de l'huile.
'''Gérard''' : Ouais, mais t'as certains trucs, comment qu'on appelle ?
'''Pâté''' : Non, non, c'est des conneries, l'écran total, c'est des conneries, c'est de l'huile qu'il faut mettre pour pas attraper des coups de soleil.
'''Gérard''' : Non, mais il y a aussi les... Manu, si tu pouvais m'aider, là, tu sais ? Ah, sur les sonos...
'''Phildar''' : Ah, je peux t'aider, Gérard ?
'''Gérard''' : Non, mais toi, tu t'écrases, tu m'as fait du mauvais boulot !
'''Manu''' : Les trucs où tu te mets dans une machine, là, et ça te...
'''Gérard''' : — C'est des sonas, ou sinon, il y a... — Il y a aussi... Il y a des néons aussi, je sais plus comment qu'on...
'''Phildar''' : Les UV.
'''Gérard''' : Ah, ouais, les UV !
'''Phildar''' : C'est moi qui t'ai aidé !
'''Gérard''' : Non, mais toi, tu fermes... Toi, je t'ai dit de la fermer, je veux plus t'entendre ! Tu m'as fait du boulot de merde. T'éteins ton micro, c'est tout.
'''Reego''' : Gérard, c'est pas le thème du débat. Alors, sur IRC, il y a Dimitri qui te demande si on peut attraper des coups de soleil sous l'eau, par exemple, dans sa baignoire.
'''Gérard''' : Euh, non.
'''Reego''' : Et pendant une éclipse de lune, demande Turpentine.
'''Phildar''', ''[proteste]'' : Putain, mais c'est bidon, l'Internet ! C'est pas les maladies, ça !
'''Reego''' : Bah si, on parle des coups de soleil dans cette question.
'''Gérard''' : Mais attends, ils sont moins cons que toi.
'''Phildar''' : J'aimerais bien faire un débat un peu potab.
'''Gérard''' : Ouais, mais attends, toi, écrase. T'as déjà foutu ta merde, alors ça suffit comme ça !
'''Manu''' : Franchement, t'as fait des trucs trop inconcevables ce soir.
'''Max''' : Ouais, mais il a été excécrab.
'''Cuvette''' : Il est inconvenab.
'''Max''' : Oh là là !
'''Supo''' : C'est horrib.
'''Soutif''' : C'est lamentab.
'''Gérard''' : Je sens que Phildar, tu vas t'en prendre une, hein.
'''MST''' : Mais c'est un débat constructib ! ''{Manu éclate de rire]''.
'''Gérard''' : Alors, l'acné, euh... Tu te calmes, toi, parce que avant que tu gerbes... Je sens que tout à l'heure, on va finir à trois que six... À trois auditeurs au lieu de six ! Attention, parce que je vais pas chercher tout à l'heure, je vais virer au hasard. Alors, l'acné est-elle une maladie qui s'a...
'''Soutif''' : La quoi ? La clé ?
'''Gérard''' : La quenée !
'''Phildar''' : La quenelle ?
'''Gérard''', ''[épelle dans le brouaha avant de hurler]'' : Bon tu me dégages MST? aller hop !
'''Phildar''' : J'ai pas le vaccin.
'''Reego''' : Non, la queue au bout du nez, on dit.
'''Gérard''' : Euh... C'est toi qui viens de dire ça, là-bas ?
'''Manu''' : Non, j'ai rien dit, moi, par contre.
'''Gérard''' : Alors, donc, on va demander à Cuvette.
'''Cuvette''' : Ouais, bah moi, je pense que c'est pas... Je sais pas ce que c'est comme maladie, en fait.
'''Gérard''' : Bah, tu sais pas... T'as jamais eu de l'acné ?
'''Cuvette''' : Bah, si, peut-être, mais je connaissais pas, en fait. Je savais pas que ça existait.
'''Gérard''' : Bah, si, ça existe, hein. Ça existe.
'''Cuvette''' : Et c'est quoi, comme truc ?
'''Gérard''' : Bah, je te le dirai tout à l'heure. Suppo ?
'''Supo''' : Ouais, bah, moi, quand j'étais petit, à l'école, on m'appelait coccinelle parce que c'était bouton rouge, point noir, bouton rouge, point noir, bouton rouge, point noir.
'''Gérard''' : D'accord. Et t'as pas... Et à part bouton rouge, point noir, bouton rouge, point noir, t'avais pas autre chose qu'on te disait ?
'''Gérard''' : Ouais, toi, on devait t'appeler le trou noir, à l'école, avec ton petit truc foncé.
'''Gérard''' : Et toi, on t'a jamais appelé tête de con ?
'''Supo''' : On met une quéquette dedans, elle disparaît, aller, hop !
'''Gérard''' : Allez, hop, Supo, bonne nuit pour lui.
'''MST''' : Je voulais dire que j'avais fait de l'acné, mais ce qui me dérangeait, c'était les méduses.
'''Gérard''' : C'est qui qui vient de répondre ? Qui c'est qui vient de répondre, là ?
'''Cuvette''' : MST, t'as un nom de maladie !
'''Gérard''' : MST, je te l'avais dit de le dégager, Phildar ! Alors, il dégage.
'''Reego''' : Gérard, il y a TomJPSG qui me demande si l'acné sur le sexe existe. — Attends, il rajoute : « surtout suite à la sodomie dans les chiottes de la Loco. ». Ah, excuse-moi.
'''Gérard''' : Ouais, d'accord, lui, il peut garder ses réflexions. Cirrhose ?
'''Cirrhose''' : Oui, l'acné, c'est quoi ? C'est... l'acné, ça ne peut être qu'une maladie.
'''Cuvette''' : Elle écoute même pas la question !
'''Gérard''' : Oh, tu t'écrases, Cuvette, s'il te plaît, merci !
'''Cirrhose''' : Si vous arrêtiez de parler tous en même temps, je pourrais répondre. Donc, l'acné est une maladie, puisque tu peux avoir des boutons partout sur le corps. Donc, ça peut être une maladie très contagieuse.
'''Soutif''' : Ben, moi, je travaille dans le milieu hospitalier et il nous arrive d'avoir des petits jeunes qui ont de l'acné, effectivement. C'est une maladie que l'on soigne très bien, effectivement. Greffes de peau, des choses comme ça.
'''Gérard''' : Ouais, mais je pense qu'il y a certaines personnes qui vont voir des médecins, qui disent qu'ils veulent se faire soigner contre l'acné, puis qu'en fin de compte, on leur prescrit des médicaments et ils n'en ont rien à foutre.
'''Soutif''' : Bon, alors, on a un petit secret qu'on ne dit pas, en fait, parce que, bon, on n'a pas envie de perdre notre business, mais la masturbation enlève les boutons.
'''Gérard''' : Ah, d'accord. Ben, ça, c'est la première fois que j'entends ça.
'''Manu''' : Gérard, sur Minitel, on nous demande si toi, plus jeune, tu as eu de l'acné, justement.
'''Gérard''' : Attends, laisse-moi finir avec Pâté de foiee.
'''Reego''' : Sur IRC, on me demande combien de temps t'arrives à tenir en acnée.
'''Gérard''' : Bon, ben ça, je ne répondrai même pas à cette question.
'''Phildar''' : Excuse-moi, Gérard, à la place de MST, on accueille Petit Kyste.
'''Gérard''' : Non, mais, hé, ce n'est pas la peine !
'''Petit Kyste''' : Je suis dans le cou.<ref name="context2"></ref>, ''[tout le studio est hilare]''.
'''Gérard''', ''[très en colère]'' : Non, mais, t'es vraiment une pute pas finie ! Je t'ai dit que ce n'était plus la peine de prendre d'auditeurs, j'arrêtais.
'''Phildar''' : Pour faire la conclusion. Et à la place de Suppo 2, on a Suppo 3.
'''Gérard''' : Non, non, non, c'est pas la peine. Non, non, mais c'est terminé, là, le débat. Non, non, non, vous avez été trop cons, grâce à Phildar, on a perdu près de 200 personnes sur l'IRC, merci, Phildar.
'''Reego''' : Ils sont revenus, on est presque 2000.
'''Gérard''' : Grâce à lui, on avait perdu quand même 200 personnes.
'''Reego''' : Oui, mais ils sont revenus et on est presque 2000, Gérard ! Donc, si tu pouvais continuer le débat calmement, pour faire plaisir à ces gens-là.
'''Gérard''' : Pâté de foiee pour la dernière question.
'''Pâté''' : Ouais, bah, moi, tout ce que je sais, c'est que l'acné, maintenant, on peut la résoudre à l'aide de la chirurgie esthétique.
'''Supo''' : N'importe quoi !
'''Gérard''' : Bon, allez, tu me dégages ces trois caves ! Allez hop !
'''Phildar''' : Mais qui ?
'''Gérard''' : Tu me vires Suppo 2 et le dernier arrivé. Terminé, terminé, terminé ! Terminé, terminé, terminé ! J'en ai ras-le-bol. À chaque fois que les nanas parlent, on leur coupe la parole ! Alors, maintenant, c'est terminé, tu me les vires. Hop, basta ! Ça va aller plus vite, on termine le débat avec trois... Ça sera mieux.
'''Phildar''' : Il y a Petit Kyste, quand même.
'''Gérard''' : Non, non, pareil.
'''Phildar''' : Non, Petit Kyste, il a rien dit, tu vois, c'est bon, quoi.
'''Gérard''' : — Alors, Cuvette, j'en veux plus.
'''Phildar''' : Ouais, c'est bon, Cuvette, il est viré. Et, euh, voilà.
'''Gérard''' : Alors, donc, Pâté de foiee pour toi. Donc, tu me disais... Pâté de foiee, s'il te plaît.
'''Pâté''' : Je suis d'accord avec la fille qui parlait juste avant, parce que la chirurgie esthétique, maintenant, on l'emploie pour, justement, enlever l'acné. — Alors, l'acné au visage, l'acné sur les bras, l'acné sur le bout des seins...
'''Soutif''' : Dans le dos. ...dans le dos, c'est dégueulasse.
'''Pâté''' : Ouais, dans le dos, aussi, ouais.
'''Gérard''' : Donc, Reego, comme je vois qu'il y a des questions, je pense ?
'''Reego''' : Bah, ouais, il y a Davy1 qui te demande où t'as mis la clé de chez lui parce qu'il est dehors et il peut pas rentrer.
'''Gérard''' : Non, non, mais on sait même pas... Donc, Manu, tout à l'heure, tu m'avais posé une question, toi, sur l'acné.
'''Manu''' : Oui, on demandait sur Minitel, je sais plus trop qui demandait si, toi, quand t'étais jeune, t'as eu de l'acné, et si oui, comment tu t'es soigné et pourquoi, dans quel sens.
'''Gérard''' : Alors, ça, de l'acné, de toute manière, ça s'attrape facilement. Souvent, il y en a qui disent que c'est en mangeant trop de charcuterie. Ça, c'est des dermatologues qui l'ont dit.
'''Manu''' : T'as dû bouffer du saucisson, quand même !
'''Gérard''' : Non, non, mais ça, attends, laisse-moi finir.
'''Petit Kyste''' : Ou en baiant avec une truie.
'''Gérard''' : Oh, ta gueule, toi, Petit Kyste ! Donc, il y a certains dermatologues qui m'ont dit qu'à force de manger trop de charcuterie, on pouvait attraper de l'acné. Maintenant, comment que ça se soigne ? Ça se soigne avec des produits style... merde, comment on...
'''Manu''' : Pas de marque !
'''Gérard''' : Non, mais il y a des savons spécial puis des trucs comme du Pousse-Mousse. Des genres de pousse-pousse, là, pour se laver les mains, c'est un produit spécial. Donc... Alors, dernière question pour finir le débat. En remerciant au passage Phildar du bordel qu'il a fait jusqu'à maintenant. Alors... C'est qui qui parle, là ? Alors, Petit Kyste, ça, ouais, tiens, je... je l'avais pas vu, lui. Tiens, réponds, toi.
'''Petit kyste''' : Ah, bah, je suis là, regarde. Ouais, bah, oui, l'acné, moi, j'en ai jamais eu, mais j'espère que j'en aurai jamais.
'''Gérard''' : Non, mais... t'en as jamais eu, d'accord. Mais si un jour, t'en attrapes, tu te demanderas pourquoi.
'''Petit kyste''' : Je te le refile !
'''Gérard''' : Ouais, non, mais je te demande si c'est une maladie.
'''Petit kyste''' : Bah, ouais, c'est une maladie, hein. Mais il y a des personnes aussi, c'est tout concentré dans une partie du corps, mais si je dis le cou, ça va te vexer, donc je le dis pas.
'''Gérard''' : Moi, de toute manière, je le sais, mais moi, c'est pas de l'acné que j'ai dans le cou, tu vois.
'''Manu''' : Oh, pourtant, il y a du pus dedans, c'est pareil !
'''Reego''' : D'ailleurs, Gérard, il y a Seigneur qui demande si on peut se nourrir du pus de l'acné.
'''Gérard''' : Ah, non, là, je vais te dire une chose, le mec, voilà, c'est une question... Alors, pour terminer la dernière question, donc, tout le monde a répondu, comme il ne reste plus que Cirrhose, Petit Kiste, Soutif et Pâté de foiee, donc, dernière question... Non, Suppo, j'ai dit que c'était terminé pour toi !
'''Phildar''' : Non, mais deux, on a trois, il est là.
'''Gérard''' : Non, mais attends, parce que... faudrait peut-être que vous fassiez votre boulot correctement au standard. au premier débat, Manu l'a fait, Manu l'a fait super bien. Toi, c'est de la merde !
'''Phildar''' : Écoute, Gérard, on a réussi à envoyer deux supos, on peut en envoyer un troisième, quand même.
'''Gérard''' : Non, mais c'est de la merde, parce que t'as repris la même personne, tu lui as dit : « Je te fais passer pour Suppo 3. ». D'accord ? Manu, quand j'ai dit qu'il vire quelqu'un, il a fait son boulot correctement. Toi, à part chercher une voiture caca, c'est tout ce que tu sais faire. Conduire ta merde ! Ok, dernière question. Il est 3h10, donc le débat... Le dépistage peut-il vous rendre malade ?
'''Cuvette''' : Ouais, je pense que ouais.
'''Gérard''' : Ouais, alors vas-y.
'''Cuvette''' : Je pense que ça peut te rendre malade, ça s'arrête là.
'''Gérard''' : Non mais attends, dans quel sens que ça peut te rendre malade ? Allô ?
'''Cuvette''' : Non, mais Gérard, j'ai été coupé par Phildar encore, à tous les coups. Non, je disais donc que ça peut rendre malade, dans le sens où ça peut rendre malade.
'''Gérard''' : D'accord, c'est bien.
'''Petit Kyste''' : Petit Kyste, tu vois bien que le dépistage, ça rend malade. Je sais pas si t'as vu, quand Schumacher il a fait une queue de poisson à Jacques Villeneuve, il a eu la chiasse, Schumacher.
'''Gérard''' : Et ta connerie, elle a eu la chiasse ?
'''Petit kyste''' : Non mais tu parles de ça, du dépistage, moi je te réponds : il a dépisté, voilà.
'''Gérard''' : Non mais attends, le dépistage, tu sais ce que c'est ?
'''Petit kyste''' : Bah oui, c'est quand il sort de la piste, voilà.
'''Gérard''' : N'importe quoi ! Enfin bref.
'''Phildar''' : C'est quoi, le dépistage, Gérard ?
'''Gérard''' : — Non mais je vais laisser tout le monde parler, après je...
'''Phildar''' : Non mais comme ça, tu diras pas, bien sûr.
'''Gérard''' : Attends, toi tu m'éteins le micro et tu t'écrases maintenant. Je veux plus t'entendre jusqu'à la fin, ok ?
'''Reego''' : Sur IRC, on me dit : le dépistage, c'est quand tu... quand tu coupes tes pistaches en dés.
'''Gérard''' : Non plus. Alors, Cirrhose ? Bah, le dépistage peut-il vous rendre mal...
'''Pâté''' : Eh, qu'est-ce qu'elle est conne !
'''Gérard''' : Elle t'emmerde, toi, pétasse ! T'as compris ?
'''Cirrhose''' : Ah, mais pourquoi ils sont méchants avec moi ? Je comprends pas.
'''Gérard''' : Non mais attends, celle-là, je vais la calmer, parce qu'elle va répondre tout de suite. Soutif ou Pâté de foiee, maintenant vous répondez toutes les deux.
'''Soutif''' : Euh, le dépistage... Ouais, ouais. Regarde Richard Virenque !
'''Reego''' : Pas de marque, pas de marque !
'''Soutif''' : On l'a dopé à l'insu de son plein gré, maintenant il est malade, donc on le soigne en lui faisant des piqûres.
'''Gérard''' : Mais je vois pas du tout le rapport !
'''Soutif''' : Je te dis qu'il est malade, donc il a été dépisté gravement même.
'''Gérard ''' : N'importe quoi ! Toi, tu comprends... Je crois que t'as été... Je me demande si t'es vraiment une infirmière.
'''Manu''' : Gérard, c'est moi. Ouais, sur Minitel, on... on nous demande si chez toi aussi, ta pisse elle tache.
'''Gérard''' : Alors, qui c'est qui pose cette question con ? Bah, question con, bah c'est un con. Voilà, c'est tout. Ce serait pareil sur l'IRC. Pâté de foiee, pour finir ?
'''Pâté''' : Euh, non, non, le dépistage, au contraire, c'est fait justement pour éviter les maladies, et voilà, quoi, point barre.
'''Reego''' : Gérard, il y a Yankee qui te conseille d'aller faire un dépistage de trisomie.
'''Gérard''' : Bon, bah, lui, il ferait mieux de faire... de se taire un petit peu pour dire des conneries. Cirrhose, pour finir ?
'''Cirrhose''' : Bah, non, le dépistage peut pas être une maladie. ''[les audituers l'interrompent, et Manu aussi. D'abord en lançant le début d'une musique intitulée Fête la fête, qui dit « Debout la grosse, debout espèce de fénéasse ». Ensuite, Petit Kyste reprend ces mots]''.
'''Gérard''' : Non, non, mais vous laissez Cirrhose finir, s'il vous plaît, merci.
'''Petit kyste''' : Allez, la grosse, là, debout ! Espèce de fainéante !
'''Gérard''' : Alors, Petit Kiste, tu dégages. Allez, hop !
'''Reego''' : Tu viens dans le cou, hein.
'''Cuvette''' : Allez, hop, dans le cou !
'''Supo''' : Un coup de scalpel !
'''Cuvette''' : Pas dans le cul, parce que je suis poli.
'''Supo''' : Et on accueille Chaude-pisse.
'''Gérard''' : Et vous êtes vraiment des FDP, hein ? ''[cris de stupeur]''. Vous êtes vraiment des FDP de faire chier les gens comme ça.
'''Pâté de foie''' : Oh, là, là ! Moi, je suis outrée, là.
'''Supo''' : Ouais, salut, c'est Blennorragie.
'''Cirrhose''' : Je peux répondre, Gégé ? Je voulais dire que le dépistage, ça peut pas être une maladie, vu que le dépistage, c'est fait pour, justement, déceler les maladies.
'''Gérard''' : Voilà, et donc, je peux vous dire une chose, que le dépistage sert vraiment à quelque chose, surtout chez les femmes et pour nous, les hommes, si on veut pas avoir certaines maladies. Surtout, il y a les cancers du sein que je voulais pas aborder, parce que sinon, le débat aurait duré au moins jusqu'à 4 heures. Ça, c'est une question dont j'ai pas parlé. J'ai pas voulu parler non plus du sida, parce que c'était un problème tros important. Et ça, je ferai un débat dessus avec le cancer du sein, je ne sais pas quand. Je vais voir ça avec le chef, mais sans Phildar au standard !
'''Max''', ''[hilare]'' : Faut vraiment qu'on le travaille, ce débat. Si tu le permets. Parce que là... Là, ça peut être joli. Ça peut être notre dernière. On le fait, on l'enregistre, on l'envoie à la CLT, à la CIA, on l'envoie au CSA, à tout le monde. Ils valident.
'''Gérard''' : Donc, conclusion, Cuvette ?
'''Gérard''' : Ouais, bah, ton débat, il y a mieux, parce que, enfin bon, c'était un peu trop compliqué pour moi, je pense.
'''Gérard''' : Non, bah, t'avais qu'à comprendre un peu.
'''Cuvette''' : T'avais qu'à comprendre, t'avais qu'à mieux t'exprimer surtout, en fait.
'''Gérard''' : Ouais, non, mais vous avez qu'à vous adresser à Phildar.
'''Cuvette''' : Non, non, non, c'est tout, tu fais mal ton boulot.
'''Gérard''' : Non, non, mais c'est Phildar qui a foutu sa merde. C'est Phildar qui a foutu sa merde, Cuvette, d'accord ? Alors, tu le remercieras en lui disant au revoir. Suppo ?
'''Supo''' : Ouais, bah, je voulais dire que j'entends que Max est revenu, on l'appelle le Star System. Toi, Gérard, je pense que t'es le Star Cystite, c'est-à-dire le roi des infections urinaires.
'''Gérard''' : Alors, toi, mon pote, c'est la dernière fois que tu passeras dans mes débats, d'accord ? Petit Kiste ?
'''Petit kyste''' : Oui, bah, alors là, t'as fait fort, Gérard. Moi, je me suis bien marré, donc il faudrait que tu continues comme ça, sans t'en prendre à ton équipe, quand même.
'''Gérard''' : Bah, si, parce que c'est grâce à Phildar si ça a merdé.
'''Phildar''' : C'est à cause,
'''Gérard''' : La cause, c'est Phildar. Parce que, maintenant, Reego, avant que tu termines, on va essayer d'avoir... on demandera le chiffre après.
'''Petit kyste''' : Ouais, faut pas que tu t'en prennes à tout le monde, il faut pas que tu passes ton temps à virer des gens, aussi. Tu comprends ?
'''Gérard''' : Bah, ouais, mais dans ces cas-là, quand je vous pose des questions, si vous voulez pas répondre, dans ces cas-là, ça sert à rien qu'on vous sélectionne pour faire les débats. Si vous ne voulez pas répondre...
'''Petit kyste''' : On veut répondre, mais bon, des fois on répond à côté de la plaque, mais c'est pas pour autant qu'il faut virer des gens.
'''Gérard''' : Mais ouais, mais si vous répondez à côté des questions, ça sert à rien non plus de vous sélectionner pour faire les débats, c'est tout.
'''Petit kyste''' : Bon, d'accord, je suis d'accord avec toi. Je te souhaite une bonne soirée.
'''Gérard''' : Ok, bah, moi aussi. Soutif ?
'''Soutif''' : Moi, je suis déçue parce que, bon, je suis quand même dans le milieu hospitalier, donc j'aurais aimé participer à tout le débat parce que j'avais des choses intéressantes à dire. Néanmoins, bah, c'était nul, et vive Phildar.
'''Gérard''' : Ouais, bah, c'est bien. Tu peux retourner le voir, alors. Voilà. Donc, Pâté de foiee pour toi.
'''Pâté''' : Ouais, bah, comme d'habitude, tes débats, c'était vraiment de la débilité grave, quoi. Et néanmoins, faut pas t'en prendre à Phildar si tu sais pas gérer toi-même ton équipe.
'''Gérard''' : Ouais, bah, dans ce cas-là, Phildar, il avait qu'à pas faire le con, parce que c'est grâce à lui si, à un moment donné, sur l'IRC, on avait des petits problèmes.
'''Pâté''' : Ouais, mais enfin, c'est quand même grâce à lui que t'as des auditeurs, quoi.
'''Gérard''' : Ouais, non, mais c'est grâce... Quand je lui demande de virer certains auditeurs, c'est pas la peine qu'il essaye de les reprendre après, pour leur dire : « Vous passez sous un autre nom. »
'''Pâté''' : Ouais, enfin, Gérard, si t'es pas capable de gérer, c'est ton problème.
'''Gérard''' : De toute manière, dans l'équipe, y en a que deux qui font bien leur boulot et c'est tout, les autres...
'''Pâté''' : Ouais, bah, ouais, t'as encore raison. De toute façon, ton débat,
ça a encore été de la merde, et puis, voilà, quoi.
'''Gérard''' : Eh bah, si t'es pas content, tu vas bouffer ton Pâté de foiee. Ok, salut. Cirrhose, pour finir ? ''[silence, tonalité d'un appel raccroché. Gérard se jette vers Phildar]''. — T'es vraiment une pute, toi !
'''Phildar''' : Mais c'est pas moi !
'''Manu''' : Je crois que, voilà. Tu peux arrêter la sonnerie, Phil. Voilà.
'''Gérard''' : Attends, toi, je te jure, c'est la dernière fois...
'''Reego''', ''[avec autorité]'' : Donc, conclusion... Donc, sur l'IRC, on était presque 2000, on est arrivé jusqu'à 1995, jusqu'au moment où tu as insulté un auditeur, tu l'as traité deux fois de FDP et y a au moins 500 personnes qui sont parties. Et y a beaucoup de gens qui ont été outrés par ton langage. Et je te lis quelques conclusions : « Encore une fois, un débat sans queue ni tête, comme Gérard. » « Le Viagra est au sexe ce que la connerie est à Gérard. » « Le Viagra fait partie de l'acné et le dépistage permet d'éviter les coups de soleil. »
'''Max''' : Non, mais pas du tout, pas du tout. Mais bon, y a quand même combien de connectés ?
'''Reego''' : on a fait 1995.
'''Max''' : Ah bah ! Bravo Gérard, c'est l'exploit ! C'est le record. ''[tout le studio applaudit, dont Phildar]''.
'''Reego''' : Je crois que c'est un record mondial, même.
'''Gérard''' : Non, non, mais toi, toi, tu m'en as fait virer quand même 200, il a eu du mal à les récupérer.
'''Reego''' : Ouais, beaucoup de mal,
'''Phildar''' : mais il avait perdu les numéros, aussi.
'''Gérard''' : en plus, ya une personne qui n'a pas fait sa conclusion, tu lui as carrément raccroché au nez.
'''Phildar''' : Non, c'est elle qui a coupé !
'''Gérard''' : Non, non, non. Non, parce que je vais l'appeler, je vais lui demander.
'''Max''' : Ah, tu la connais ?
'''Gérard''' : Bien sûr.
'''Manu''' : C'est qui ?
'''Max''' : Ah, c'est Sandy ! Ouais, bah bravo.
'''Phildar''' : Personne n'a reconnue !
'''Reego''' : Mais qui ? C'était quoi son nom ?
'''Gérard''' : Cirrhose.
'''Max''' : Oh ! Tain, elle déguise bien sa voix,.
'''Gérard''' : Bah, conclusion. C'est dommage que Phildar il ait foutu sa merde. Ouais, bah, de toute manière, j'espère que la semaine prochaine tu seras pas dans l'équipe, parce que je veux pas de toi, c'est simple.
'''Max''' : À moins qu'il travaille !
'''Phildar''' : Je vais essayer de rattraper des points, je vais faire un stage.
'''Gérard''' : J'ai entendu ce soirqu'il attendait 11h30 pour trouver des auditeurs. Bah, si c'est Manu qui doit trouver des auditeurs, autant le mettre tout seul avec une nana et lui, on peut le virer.
'''Max''' : Bah, on va le mettre avec Bébé Rose, ouais.
'''Gérard''' : Voilà. Donc, moi, je peux... Moi, je peux dire quand même merci à Manu des deux débats, parce que...
'''Manu''' : C'est la première fois en je sais pas combien de temps que tu me remercies, Gérard.
'''Gérard''' : Donc, et puis, surtout, merci Reego d'avoir fait ton boulot correctement. Phildar, je te remercie pas, parce que tu m'as fait de la merde. Donc, voilà. Donc, on s'écoute...
'''Manu''' : Ah, je sais pas, le disque.
'''Phildar''' : Bah, moi, je sais plus, je sais pas.
'''Manu''' : Allez, Phil, le titre ?
'''Phildar''' : Je fais plus partie de l'équipe !
'''Manu''' : Mais moi, je te réintègre ! Allez, vas-y.
'''Gérard''' : Non, non, c'est pas lui qui commande dans les débats, le jeudi, c'est moi.
'''Manu''' : Je crois que c'est Technolab avec Fusion.
'''Gérard''' : Voilà.
'''Max''' : Manu, roi de l'impro, pas de problème.
'''Gérard''' : Là, vous allez retrouver Reego pour la nuit sans pub.
'''Reego''', ''[dans l'hilarité générale]'' : Ouais, je vais faire la nuit sans pub, ouais !
'''Gérard''' : Vous allez retrouver Rousseau pour la nuit sans pub. Et dès demain matin, 6h, Barth, avec des scooters à gagner. Et bien sûr, demain soir, dès 22h, le star system. Et moi, je vous retrouverai dans le courant de la semaine, s'il y a des petites réactions par le... par le guet des auditeurs.
'''Manu''' : Par le gay... Il y en aura plein, t'inquiète pas.
'''Gérard''' : Bonne nuit à tous et à la semaine prochaine ! ''[Musique]''.
== Le débat sur l'armée ==
=== Contexte ===
5 novembre 1998. L'émission a donc trouvé un rouage, qu'il s'agit désormais de renouveler. L'avant-débat ne déroge pas à la coutume, Gérard y fait tous les sketchs habituels liés à la réception de courrier sur son personnage, disques et créations d'auditeurs de plus en plus imaginatifs. Max en joue allègrement, flattant l'animateur par des chiffres d'audience fantasques (15 millions d'auditeurs revendiqués pour le débat sur les maladies).
Bien que le service militaire soit aboli depuis 1995, le sujet est frais pour toute une génération. L'armée est un sujet encore sérieux, mais gérard y donnera toute sa dimension surréaliste, appuyé par l'équipe qui connaît désormais bien la manière de générer du comique, d'éviter les dérapages, de faire osciller l'animateur dans les registres nécessaires à une émission culte.
Il paraît important de noter ici l'homophobie de Gérard, rejetant les personnes travesties, LGBTQ, etc. Mais il faut aussi mentionner d'abord que ce rejet est parfaitement instinctif, presque reptilien, sans théorie ni explications d'aucune sorte. Ensuite, il faut se souvenir qu'à cette époque, la cause de cette communauté n'avait pas autant fait valoir ses droits qu'aujourd'hui. Les homosexuels avaient une meilleure audience, puisque 1998 voit la loi sur le pacte civil de solidarité s'approcher, mais les autres genres et orientations étaient très méconnus, sous-représentés, sous-médiatisés. Sans INternet, leur lucarne de diffusion était faible et la société loin d'accepter ces différences. Les débats sur le PACS en seront, d'ailleurs, l'illustration, même si le sujet reste toujours aussi clivant 30 ans plus tar.
=== Les personnages ===
* Gérard Cousin : Gérard
* Phildar et Manu
* Laura : Andouille (précisons que Laura va devenir la femme de Manu le dimanche suivant), Petit fion
* Mégane : Croupion
* Tagada, Jmenfous, Face de pet
* Tony Morestin : Tony, Général Moncu
* Axel : Prothèse
* Canif : passée la semaine d'avant sur la politique, notamment
=== Transcription ===
'''Gérard''' : Voilà, bonsoir à tous. C'est les débats du jeudi, vous pouvez nous appeler au 0803 08 5000 ou 0900 80 6000 et 3615 code Funradio, rubrique Direct et l'IRC funradio ww où que Reego vous attend.
'''Reego''' : Et on est déjà 1664 !
'''Gérard''' : Ah bah d'accord, on commence déjà fort ! On commence déjà fort, il est 0h19, on accueille Canif... Caniche...
'''Phildar''' : On fait quel débat là Gérard ?
'''Gérard''' : Sur l'armée !
'''Phildar''' : Voilà, donc on accueille les auditeurs.
'''Gérard''' : Canif ! On peut écouter Fun Radio sur 94.5. Bonsoir, Tagada 21 ans, Paris 101.9.
'''Tagada''', ''[voix efféminée et maniérée]'' : Salut !
'''Gérard''' : Andouille, 20 ans de Chinon, on peut écouter Fun Radio sur 100.2. Croupion, 22 ans, Verdun, 93.9, Fun Radio. Bonsoir, Tony !
'''Tony''' : Bonsoir Gérard, bonsoir toute l'équipe !
'''Gérard''' : Paris, Fun Radio 101.9. Et... Prothèse, 21 ans, Royan, 99 FM. Donc, première... Comment ?
'''Prothèse''' : Big up !
'''Gérard''' : Merci pour Reego, donc... Merci pour Reego, c'est pas mal. Alors, bon, on commence. Celui qui a un téléphone portable ou pourri, là, qu'il dise tout de suite, parce que ça commence déjà mal.
'''Phildar''' : De toute façon, Darty c'est fermé àtte heure-là, Gérard.
'''Gérard''' : Non, mais dans ces cas-là, s'il a un téléphone pourri, dans ces cas-là, il va voir Manu au standard, ça ira plus vite tout de suite.
'''Manu''' : Je vais le trouver.
'''Gérard ''' : Donc, alors, première question, avez-vous fait déjà l'armée ? Si oui, dans quelle arme ? On va demander à... Andouille !
'''ANdouille''' : Bah, écoute, moi, je suis désolée, mais j'ai jamais fait l'armée.
'''Canif''' : Bah, moi, écoute, Gérard, en tant que fille, j'ai jamais fait l'armée, mais j'aurais aimé, franchement.
'''Gérard''' : D'accord. De toute manière, ça, c'est des questions qu'on va aborder lors du sujet aussi, hein. Donc, Tagada ?
'''Tagada''' : Moi, oui.
'''Gérard''' : Dans quelle arme ?
'''Tagada''' : L'armée de terre.
'''Gérard''' : À 21 ans, t'as déjà fait l'armée, donc t'as devancé l'appel, alors ?
'''Tagada''' : Bah, non, ils sont venus me chercher.
'''Gérard''' : Non, non, non, non, non, attends. Commence pas à dire des conneries, toi, parce que... Je te dis tout de suite que...Ouais, ouais, non, non, mais Tagada... Oh, oh, Tagada, Tagada, Tagada. On se calme, ok ? Donc, à mon avis, t'as devancé l'appel parce qu'à 21 ans, ils viennent pas te chercher comme ça, hein. Alors, me prends pas pour un con. Me prends pas pour un con, s'il te plaît.
'''Phildar''' : Ça dépend s'il voulait s'engager. Tu voulais t'engager, Tagada, ou pas ?
'''Tagada''' : Bah, oui.
'''Phildar''' : Non, mais attends, ça, les trucs sur l'engagement, c'est moi qui les pose, les questions, c'est pas toi, d'accord ?
'''Phildar''' : Non, mais tu dis que c'est pas possible.
'''Gérard''' : Non, mais tu vas pas commencer déjà le premier débat comme ça.
'''Phildar''', ''[penaud]'' : D'accord, je voulais poser une question, je suis désolé.
'''Croupion''' : Ouais, alors moi, je suis totalement anti-militariste, donc il est hors de question que je mette les pieds dans une caserne avec des cons, quoi.
'''Gérard''' : Ouais, mais ça... Oh là, merci pour le Larsen. De toute manière, ça, je vais te dire une chose, que maintenant, ça va être bientôt obligatoire, alors donc, t'auras pas le choix. Euh... Tony ?
'''Tony''' : Moi, je suis pro-militariste, mais je me suis fait réformer.
'''Gérard''' : D'accord. À 20 ans, t'en es sûr de ce que tu me dis, là ?
'''Tony''' : Ah, sûr et certain, ouais.
'''Gérard''' : Ouais. Je pense pas à mon avis.
'''Tony''' : Et je te jure, et puis je te raconterai même l'histoire, si tu veux.
'''Gérard''' : Ouais, non, non, mais j'ai pas besoin de savoir toute l'histoire complète. Prothèse ?
'''Prothèse''' : Ouais, bah moi, je voulais m'engager, mais je me suis fait réformer parce que j'étais pas assez con pour faire l'armée, quoi.
'''Gérard''' : De toute manière, y a pas besoin d'être con pour faire l'armée, d'accord ? Parce que si tu... Non, mais attends, si tu veux dire ça pour moi, tu vois, je vais te dire une chose... Non, non, mais y a pas besoin d'être con pour faire l'armée, de toute manière, l'armée, c'est obligatoire et c'est tout.
'''Tony''' : Tout à fait, les cons de toute façon, ils sont chefs.
'''Gérard''' : Ouais, bah, de toute manière, avec un con comme moi, on s'amuse, avec un con comme toi, on se fait chier, d'accord ?
'''Reego''' : Sur IRC, y a Zioui qui te demande si tu aimes ramer.
'''Gérard''' : Je vois pas du tout le rapport avec le débat, hein. Donc, moi, je peux vous dire que j'ai fait l'armée, dans quelle arme... Eh, au fait, personne m'a dit dans quelle arme...
'''Tony''' : Ouais, dans quelle arme, Gérard, au fait ?
'''Prothèse''' : Au fait, Gérard, dans quelle arme ?
'''Gérard''' : Prothèse, ouais, pour l'instant, c'est moi qui pose les questions.
'''Tony''' : Ouais, mais dans quelle arme, au fait, Gérard ?
'''Gérard''' : C'est moi qui pose les questions, c'est pas vous.
'''tagada''' : Oui, mais dans quelle arme ?
'''Gérard''' : C'est pas... C'est moi qui pose les questions, toi, Prothèse. Dans quelle arme, toi ?
'''Prothèse''' : Bah, j'ai été réformé, je t'ai dit. Je voulais m'engager dans les RIMA, Régiment d'Infanterie, Marine.
'''Tony''' : Bah, je te dis, je me suis fait réformer, mais moi, je voulais n'importe quoi, de la cuisine, de n'importe quoi, moi, j'aurais fait.
'''Croupion ''' : Oui, tout sauf la Légion.
'''Andouille''' : Moi, je serais plutôt partie dans l'arme blanche.
'''Gérard''' : C'est-à-dire, chasseur alpin ?
'''ANdouille''' : Tu m'as ôté les mots de la bouche.
'''Gérard''' : Bah, c'est chasseur alpin, hein, les blanches, ouais.
'''Prothèses''' : Les samouraïs.
'''Canif''' : Bah, j'ai rien fait, mais ouais, dans l'armée de terre, j'aurais aimé.
'''Tagada''' : Tu verras, il y a des mâles dans l'armée de terre.
'''Gérard''' : Ouais, bah, oh, tu te calmes, toi, parce que tout à l'heure, tu vas faire comme la semaine dernière, Tony.
'''Reego''' : Attends, Gérard, toi, tu l'as fait dans quelle armée, alors ?
'''Gérard''' : C'est... Moi, c'est... J'étais dans l'inventerie, dans le 110e R.I. en Allemagne.
'''Phildar''' : Et t'inventais quoi ?
'''Gérard''' : Non, mais c'est le 110e Régiment d'Infanterie, abruti. Et toi, dans quelle arme ? Tu ne l'as pas fait, tu ne l'as pas fait, parce que toi, t'es trop con, alors. Déjà, lui, il est trop con, déjà, pour faire son standard, il attend 11h et demi.
'''Manu''' : Il y a un petit sondage qui nous a été communiqué, donc, à la question, pour ou contre l'armée...
'''Phildar et Reego''' : Non, mais c'est important de savoir, Gérard.
'''Gérard''' : Ouais, mais ça, on n'en a rien à foutre des pour ou contre, parce que c'est pas...
'''Reego''' : C'est un débat, on en parle, vas-y, Manu.
'''Manu''' : Donc, 20% des gens sont pour Alain Prost, 30% des gens n'ont pas de permis et 50% n'ont jamais été alarmés en un seul mot.
'''Gérard''' : Bon, alors, déjà, les deux premières questions, je ne vois pas ce que ça vient tout là-dedans.
'''Phildar''' : Les gens ont répondu ça, ils sont...
'''Gérard''' : Ouais, mais ceux qui répondent ça, c'est des cons, ce n'est pas de ma faute. Donc, deuxième question, à quoi l'armée sert-elle de nos jours aujourd'hui ? On va demander ça à, ben, Tony... Non, on va demander à Tagada.
'''Tagada''' : À se faire des mecs ?
'''Gérard''' : Putain, mais, hé, hé, hé, non, mais t'es vraiment con, toi !
'''Tagada''' : Il y a eu le sergent Dumair, après, il y a eu l'infirmier, je m'en rappelle...
'''Gérard''' : À quoi sert l'armée de nos jours, aujourd'hui, Tagada ? Tu réponds correctement, ou sinon, tu gerbes.
'''Tagada''' : Bon. Euh... À former des hommes, des vrais, des mâles, hein.
'''Gérard''' : Bon Manu, tu me prends Tagada, tu lui expliques comment que ça se passe, un débat.
'''Manu''' : Ouais, mais peut-être que pour lui, justement, l'armée...
'''Tagada''' : C'est mon point de vue, hein.
'''Gérard''' : Ouais, non, mais... Non, mais explique-lui quand même comment que ça se passe, un débat, parce que...
'''Phildar''' : Toi, tu poses une question, eux ils doivent répondre.
'''Gérard''' : Ouais, ben, pour l'instant, s'il répond à côté de la plaque, c'est pas la peine de...
'''Phildar''' : Non, il répond ce qu'il veut.
'''Gérard''' : Reego, il y a une question, non ?
'''Reego''' : Euh, ça va très vite, vu qu'on est en train de dépasser les 1800 connectés. Alors, l'armée sert à se mettre des cotons-tiges dans le cul... Je sais pas, ça va trop vite, j'ai pas trop le temps.
'''Gérard''' : C'est qui qui s'amuse à dire ça ?
'''Reego''' : Ben, c'était un certain Gérard C...
'''Gérard''' : Ah bon, d'accord, ouais, ok. Euh, Andouille ?
'''Andouille''' : Ouais, ben, l'armée, ça sert à se battre.
'''Gérard''' : Ah bon, pour toi, l'armée, on se bat ?
'''ANdouille''' : Ouais, ouais, c'est une école de bagarre. C'est excellent pour foutre le dawa dans les rues.
'''Gérard''' : Ah ouais, d'accord. Alors, tu crois que c'est l'armée qui fout le bordel dans les rues ?
'''Andouille''' : Non, non, non, mais je pense que là-bas, c'est une bonne école pour apprendre à se battre. Ça fait qu'après, quand tu rentres chez toi, tu peux te battre tranquille, quoi.
'''Gérard''' : Ah bon, c'est nouveau, ça ?
'''ANdouille''' : Ouais, vive la guerre.
'''Gérard''' : Ah ouais, ouais, c'est nouveau, ça, ça vient de sortir. Tiens, il faudrait que je réfléchisse à cette question. Euh, Canif ?
'''Canif''' : Ben, écoute, moi, Gérard, pour moi, je sais vraiment pas à quoi ça sert, parce que vu le peu de gens qui veulent y aller, ça doit pas servir à grand-chose.
'''Gérard''' : Ben, disons, ça sert pas à grand-chose dans l'ensemble. En fin de compte, tu perds carrément facilement un an de... Si t'es en stage ou au boulot, tu perds facilement une année pour rien. Croupion ?
'''Croupion''' : L'armée, ça sert à faire chier les gens, à faire chier les Parisiens tous les 14 juillets pour voir défiler 5 000 connards
''' Gérard'' : Ouais, ben, ça... Oh, là, merci pour le Larsen. Euh, Tony ?
'''Tony''' : À se faire sodom.
'''Gérard''' : Ah, ouais, d'accord. Alors, Tony, tu me redis encore une connerie comme ça, je te préviens, tu fais comme la semaine dernière, je te gerbe au premier débat, OK ?
'''Tony''' : Tu me poses une question, je te réponds.
'''Gérard''' : Non, non, mais je te demande, sois un peu moins con, hein, que tu l'es. Tu réponds correctement aux questions, sinon tu gerbes. Je te le dis tout de suite, parce que j'ai pas l'intention de me faire chier ce soir.
'''Reego''' : Gérard, sur IRC, il y a Le Chiant qui te demande s'il faut savoir faire du wind surf pour faire l'armée de l'air.
'''Gérard''' : Oh, là, c'est quoi, ça ? C'est quoi, du windsurf ? Si quelqu'un pouvait me le dire...
'''Manu''' : C'est quand tu sautes en parachute avec ton tank.
'''Tagada''' : Non, non, non, tu sautes, alors tu vois, t'as un petit string rose. T'as un petit string rose avec des petites dentelles sur le côté. Ensuite, t'as une jartière, voilà. T'es sur un surf et tu prends un gros gode.
'''Gérard''' : Non, non, c'est bon, Tagada, ça y est, ça y est, ça y est, c'est bon, on a compris. Prothèse pour finir le thème de...
'''Prothèse''' : Ouais, bah, l'armée, je dirais que ça sert à apprécier le kaki et les corvées de chiotte.
'''Gérard''' : Bon, bah, ça, donc, moi, je... Donc, l'armée, à l'heure actuelle, sert à quoi ? Bon, bah, en fin de compte, comme j'ai dit tout à l'heure sur Andouille ou Croupion qui m'avaient parlé de ça, bon, bah, j'avais vaguement dit, donc, normalement, l'armée, c'est, en fin de compte, vous perdez un an de salaire, parce qu'en fin de compte, vous n'êtes pas sûr, quand vous ressortez de l'armée, de récupérer votre emploi. Normalement, si, vis-à-vis de la loi et selon les conventions collectives de la société, normalement, ils sont obligés de vous reprendre, quand vous avez terminé l'armée, ils sont obligés de vous reprendre facilement, normalement, si je ne me trompe pas, et je pense que Manu ou Phildar ou Reego pourront me confirmer, je crois que, normalement, c'est un mois, un mois, normalement.
'''Manu''' : Par contre, Gérard, c'est Manu, là. L'armée, ça sert pas... tu peux pas passer ton permis gratuitement, tout ça, des trucs comme ça ?
'''Gérard''' : Mais, justement, mais attends...
'''Phildar''', ''[zélé]'' : Mais, c'est pas les bonnes questions, Manu, que tu poses.
'''Manu''' : Je savais pas, je savais pas.
'''Gérard''' : Justement, celle-là, celle-là, on va la poser, mais c'est la toute dernière. Vu qu'on a commencé plus tôt...
'''Phildar''' : Et, Gérard, je vais te demander, ceux qui vont à l'armée et qui, avant, n'avaient pas de travail, est-ce qu'ils le récupèrent, après ?
'''Gérard''' : Ben, ça, s'ils en ont pas, ils pourront pas en retrouver derrière.
'''Manu''' : Donc, c'est l'arnaque.
'''Gérard''' : S'ils en avaient pas au départ, ils en auront pas à la sortie.
'''Tony''' : Ouais, mais ça, c'est regrettab.
'''Gérard''' : Non, non, sauf parce que, maintenant, il faut dire une chose. À quoi sert l'armée ? C'est qu'on peut très bien, aussi, trouver... Un job. Faire un job à l'armée et, à la sortie, si vous avez été compétent pendant les 12 mois qu'on...
'''Phildar''' : Est-ce que tu peux avoir un diplôme ?
'''Gérard''' : Non, non, non. Déjà, c'est tout juste s'il y en a qui arrivent à récupérer leur permis de conduire, à la fin.
'''Tony''' : Mais si on passe son permis à l'armée, est-ce que c'est envisageab d'avoir dans le civil ?
'''Gérard''' : C'est qui, ça, qui me pose ça ? Oui, mais attends, Tony, c'est la 11e question. Donc, si vous voulez commencer par la 11e, on va le faire tout de suite, et... Non, mais si, on va... Ben si, comme t'en parles.
'''Phildar''' : Bon, ben allez, on fait la 11e, ça va.
'''Tony''' : Après, je veux la 8 et la 6, si c'est possible.
'''Gérard''' : Donc, alors, avez-vous eu l'occasion de passer votre permis de conduire, donc, à l'armée ? Donc, on va demander à Prothèse ?
'''Prothèse''' : Non. Je voulais, mais c'est justement pour ça que je voulais m'engager. C'est pour passer tous mes permis, puis après, me tirer. Mais j'ai pas pu.
'''Gérard''' : Oh, non, mais attends, parce que de toute manière... Mais attends, si tu t'engages, faut bien préciser... Je vais préciser une chose, que si tu veux passer ton permis, de toute manière, même en t'engageant, t'es obligé de faire ton engagement jusqu'au bout.
'''Prothèse''' : Ah ouais, justement.
'''Gérard''' : Et si tu t'engages, normalement, c'est pour 2 ou 3 ans, ça dépend du temps que tu veux faire.
'''Phildar''' : Ça dépend de l'armée aussi.
'''Tony''' : Moi, on m'a dit que les épreuves de conduite, elles étaient, à l'armée, elles étaient redoutab.
'''Gérard''' : Ouais, non, mais ça, je vais te dire... ''[Reego s'agite]''. Attends, Tony, je te prends tout de suite, oui ?
'''Manu''' : Oui, tu me rends compte que t'en as de la chance.
'''Reego''' : Ya Thomas, sur IRC, qui te demande si t'as été maître chien à l'armée, est-ce que c'est de là que vient ton histoire d'amour récente ?
'''Gérard''' : Euh, non, maître chien, je pense pas que...
'''Tony''' : Et pourquoi t'as tué le chien aussi ?
'''Gérard''' : Euh, Tony ? Je t'ai dit, tu arrêtes tes conneries, sinon tu vas dégager avant 1h du matin, toi.
'''Tony''' : Mais ça, c'est pas envisageab.
'''Gérard''' : Ouais, c'est envisageab, alors fais bien gaffe.
'''Prothèse''' : C'est inadmissib.
'''Gérard''' : Ouais, alors donc, tu disais, toi, tout à l'heure, comme t'avais une question à me poser, donc tu peux peut-être finir ta pensée.
'''Prothèse''' : Hein ?
'''Gérard''' : Bon, d'accord, Tony, je crois que...
'''Tony''' : Ah, non, non, non, c'est pas moi qui ai parlé, là.
'''Phildar''' : T'avais une question tout à l'heure, Tony, à poser, vas-y.
'''Tony''' : Ça se finissait par B, c'est ça ?
'''Gérard''' : Bon, d'accord. Tony, ça commence à bien faire pour toi. Croupion, dont toi ?
'''Croupion''' : Ouais, bah, moi, de toute façon, j'ai pas fait l'armée, hein. Mais il est hors de question que je passe mon permis à l'armée. De toute façon, les instructeurs, ils savent pas lire, ils savent pas écrire. Mais ouais, non, mais c'est la condition sine qua non, si tu veux rentrer.
'''Gérard''' : Oh, là, là ! Hé, Croupion ! Attendez, s'il vous plaît, Croupion ! T'as pas un téléphone pourri ?
'''Croupion''' : Non, non. Parce que ça fait drôle, hein. ''[à Manu]'' : j'ai l'impression que c'est elle, hein.
'''Manu''' : Je vais voir, je vais voir.
'''Phildar''' : Un portable, ça, hein.
'''Andouille''' : Bah, moi, comme je t'ai dit, donc, j'ai pas fait l'armée. Mais, euh... Non, mais, de toute façon, moi, ça m'intéresse pas de passer mon permis. Je préfère profiter des gens, tu vois, profiter de leur voiture. Comme ça, je paye rien.
'''Gérard''' : Ouais, mais ça, c'est un peu dégueulasse, n'empêche.
'''Andouille''' : Ouais, mais enfin, chacun vit sa vie comme il veut.
'''Phildar''' : Est-ce que tu le payes, le permis à l'armée, ou pas ?
'''Gérard''' : Non, mais attends, justement, je vais répondre après à la question. Euh, Tagada. ''[il dit une phrase incompréhensible, la bouche pleine]''. Oh, Tagada, tu réponds correctement, parce que tout à l'heure, ça va... Déjà, quand je te parle, t'évites de manger, t'évites de faire comme Phildar.
'''Reego''' : Deux secondes, je voulais juste dire, quand même, remercier les gens de l'IRC, parce qu'on est déjà plus de 2000, on est 2011. ''[applaudissements et cris d'admiration dans le studio]''. Et je voulais saluer Yannick, qui nous écoute en direct du Canada. Ils sont beaucoup à nous écouter, on t'écoute à travers le monde.
'''Gérard''', ''[fier mais modeste]'' : Ouais, bah, c'est bien. C'est pas mal, ouais.
'''Reego''' : Et beaucoup de militaires, aussi.
'''Gérard''' : Je crois qu'on va battre les records, encore. Canif ?
'''Reego''' : Ah, c'est déjà fait.
'''Canif''' : Ouais, bah, non, écoute, Gérard. Moi, j'ai pas passé mon permis à l'armée, non.
'''Gérard''' : D'accord. ''[regardant Phildar]'' Donc, alors, tu voulais me poser une question ?
'''Phildar''' : Ouais, tu t'en rappelles plus ?
'''Gérard''' : Non. Bah, maintenant, tu vas la répéter.
'''Phildar''' : Est-ce qu'on paye le permis de conduire à l'armée ?
'''Gérard''' : Non.
'''Phildar''' : Pourquoi ?
'''Gérard''' : Ça, c'est... Tu le payes pas, parce que c'est toi qui demandes à passer ton permis, donc c'est gratuit.
'''Croupion''' : Et combien ça coûte ?
'''Gérard''' : 0 francs, de toute manière. Ça dépend du contingent, dans quel contingent tu te situes pour passer ton permis.
'''Phildar''' : C'est quoi, un contingent, Gérard ?
'''Manu''' : C'est comme un compte en banque ?
'''Gérard''' : Non, non, non, c'est pas du tout pareil. Contingent, c'est par exemple du...
'''tagada''' : C'est des dates de naissance.
'''Gérard''' : Non, plus ! Arrête de dire des conneries, toi, quand je parle. Merci. Contingent, c'est par exemple... C'est tous les deux mois. Donc, tous les deux mois, t'as un contingent. Comme là, le mois prochain, ça sera la 98-12. C'est ça qu'on appelle des contingents.
'''Phildar''' : Ouais, c'est l'année plus le mois.
'''Tony''' : 98-12, c'est quelle ville, ça ?
'''Gérard''' : Oh, ta gueule, toi. Donc, voilà, comme ça, t'es servi.
'''Phildar''' : Et tu peux passer tous les permis ? Bateau, tout ça ?
'''Gérard''' : Non, non, non, tu passes uniquement que le permis B ou le gros, là, le 40 tonnes. Mais par contre, il faut bien dire une chose, que celui qui passe son permis à l'armée, ils ont un certain nombre de kilomètres à faire pendant leur armée pour qu'ils soient validés après dans le civil. Mais par contre, il y a un permis qui n'est pas validé et c'est dommage.
'''Phildar''' : Il est valab ou pas ?
'''Gérard''' : Disons non, il ne sert à rien dans le civil, en fin de compte, ce permis-là, c'est le permis VAB véhicule d'avant-blindé. C'est les fameux trucs, là, tu vois, les 6-roues, comme les gendarmes mobiles qu'ils ont, là, en ce moment.
'''Phildar''' : Ah, comme dans la 7e compagnie ?
'''Gérard''' : Ouais, voilà, grosso modo. Non, mais ça, c'est avec des chenilles, c'est pas pareil.
'''Manu''' : Gérard ? Il y a un autre petit sondage. À la question, êtes-vous déjà allé voir une armée ? 25% des gens, ils sont allés avec leur femme. 35%, y sont allés avec leurs enfants. Et 40% ont demandé « l'art, mais quel art ? » Qu'est-ce que t'en penses ?
'''Gérard''' : Non, mais attends, parce que là, il y a un truc. Avez-vous déjà été voir l'armée ? Je ne vois pas du tout le rapport.
'''Manu''' : On peut visiter, non ? Ça ne se visite pas ?
'''Phildar''' : C'est pas un parc ?
'''Manu''' : C'est pas comme la tour Eiffel ?
'''Gérard''' : Non, non, non. Il n'y a pas de... Sauf... Je crois que c'est la garde républicaine, si je me souviens bien, qui s'amuse à faire des trucs porte ouverte pour... Pour simplement voir des chevaux. C'est tout.
'''Reego''' : Gérard, il y a Vomi de porc sur l'IRC qui te demande si tu as fait la Deuxième Guerre mondiale.
'''Gérard''' : Non.
'''Reego''' : Il te demande pourquoi.
'''Tagada''' : Et la Troisième ?
'''Gérard''' : Il n'y en a pas trois. Il y en a eu deux, donc je n'ai jamais fait ça.
'''Phildar''' : La Guerre du Golfe ?
'''Gérard''' : Non, mais ça, ça n'a rien à voir. Ça, c'est des questions...
'''Reego''' : Il te demande pourquoi tu ne l'as pas faite.
'''Phildar''' : Il n'était pas engagé, il n'a pas gagné.
'''Reego''' : Tu étais réformé ?
'''Gérard''' : Non, non, j'ai fait mon armée normalement comme tout le monde. Donc, j'ai fait douze mois.
'''Andouille''' : Ils t'ont accepté, toi, là-bas ?
'''Gérard''' : Ben oui. Pourquoi ?
'''Prothèse''' : Je voulais savoir, est-ce que tu avais participé au défilé du 14 juillet ?
'''Gérard''' : En Allemagne, oui. Mais pas sur Paris.
'''Andouille''' : Tu as défilé ?
'''Gérard''' : Ben, en Allemagne, oui, à moins 17 degrés.
'''Andouille''' : Et tu as défilé en quelle tenue ?
'''Gérard''' : En treillis.
'''Tagada''' : Il avait un petit string à dentelles roses.
'''Gérard''' : Bon, ta gueule, tu t'écrases parce que tout à l'heure, tu vas dégager, toi. OK ? Donc, troisième question. Peut-on faire carrière en faisant l'armée ? On va s'écouter un petit disque. Un petit disque, et puis on se retrouve tout de suite après. ''[Musique]''.
'''Gérard''' : Voilà donc c'est toujours les débats du jeudi, vous pouvez nous appeler au 0803 08 5000 ou 0900 80 6000 et 3615 code Funradio, rubrique Direct et l'IRC funradio ww où que Reego vous attend.
'''Reego''' : Ouais, on est en train d'atteindre les 2300, là. Ça va arriver bientôt.
'''Phildar''', ''[applaudissant avec Manu]'' : Gérard, ce soir, tu cartonnes.
'''Gérard''' : Mais ça, c'était prévu qu'il fallait qu'on cartonne ce soir, donc... ''[sketch des auditeurs qui disent allô, n'entendant pas Gérard. Manu et Phildar ont du mal à ramener la normale, mais Tony déclenche la fin du sketch après une minute]''.
'''Tony''' : On t'entend, impeccab.
'''Gérard''' : On récupère Canif. Tagada. Andouille. Croupion. Tony. Et Prothèse pour terminer. Et donc, vous avez pu réfléchir à la question, donc je la répète. Peut-on faire carrière en faisant l'armée ? On va demander à Tony.
'''Tony''' : Moi, je sais pas. Enfin, moi, si j'avais l'occasion de faire carrière en faisant l'armée, je la ferais. Mais ça me branche pas du tout, l'armée. Mais la Légion, il paraît qu'on peut faire arrière.
'''Gérard''' : De toute manière, quand tu fais l'armée dans la Légion, de toute manière, tu t'engages un peu.
'''Tony''' : Non, mais il y a des débouchés en tant que, je crois, on m'a dit, en tant que gardien de chèvres dans l'Atlas.
'''Gérard''' : Ouais, c'est ça. Alors, Tony. Tony, tu réponds correctement à la question, parce que sinon, ça va mal se terminer pour toi. Tu vas retourner chez toi.
'''Tony''', ''[montant le ton]'' : Écoute, c'est ce qu'on m'a dit. Je sais pas, moi. Depuis tout à l'heure, tu m'insultes, moi, je reste imperturbab.
'''Gérard''' : Ouais, ouais, tu restes imperturbable, mais tu réponds la moitié à côté des questions. Quand on te pose des questions, tu réponds les trois quarts à côté. OK ? Alors, si c'est pour répondre des conneries, c'est pas la peine qu'on t'appelle constamment pour faire les débats. OK ?
'''Tony''' : Je me drogue.
'''Gérard''' : OK, bah si tu te drogues, tout à l'heure, tu vas retourner écouter la radio tranquillement. Prothèse ?
'''Prothèse''' : Ouais, je pense que c'est possible, ouais.
'''Gérard''' : Ouais, mais dans quel sens... pour toi, ça peut être possible ? Toi, ça m'étonnerait, parce que vu que tu t'es fait réformer, donc...
'''Prothèse''' : Bah ouais, justement, je m'étais renseigné au début à la caserne de chez moi. On m'avait dit que je pouvais faire carrière dans Maître Chien.
'''Gérard''' : D'accord, on verra ça après. Reego, t'avais peut-être une question ?
'''Reego''' : Non, il y a juste Davy One. Attends, je lis vite fait. Il demande si lorsque t'as fini de faire l'amour avec Sandy, tu l'as remis le couvert.
'''Gérard''' : Non, mais ça, c'est pas du tout le thème du débat. Donc, si c'est pour dire des conneries comme ça, comment qu'il s'appelle ?
'''Reego''' : C'était Davy One, et on te demande aussi, c'est Oxyd qui te demande si quand t'as été parachuté... est-ce que ton débat est suite au fait que tu n'avais pas de parachute ?
'''Gérard''' : Ouais, ça, je vois pas du tout. Croupion ?
'''Croupion''' : Ouais. Bah, malheureusement, parce que malheureusement, on peut faire carrière. Donc, c'est chiant, il y a des gens qui font la guerre, ça, c'est chiant. Et heureusement pour certains quoi. Parce que tous ceux qui ont échoué au concours de maître chien, au concours de la police, bah, ils vont dans l'armée, quoi.
'''Gérard''' : De toute manière, dans l'armée, tu peux très bien faire ton service militaire dans la gendarmerie ou dans la police. Faut pas l'oublier.
'''Croupion''' : Ouais, non, mais en général, ceux qui font carrière, ils font pas carrière dans la police.
'''Gérard''' : Non, mais ceux qui veulent passer, ceux qui veulent être gendarmes ou policiers peuvent le faire en faisant leurs 12 mois.
'''Croupion''' : Ouais, c'est parce qu'ils ont raté leur concours.
'''Gérard''' : Non, parce que... À l'armée, à l'armée, ils te demandent ce que tu veux faire et tu peux préciser si tu veux être dans la gendarmerie ou dans la police, ou passer tes permis.
'''Phildar''' : Ou coiffeur.
'''Manu''' : Ou cuisinier.
'''Gérard''' : Ouais, t'as plusieurs trucs, t'as cuisinier, t'as infirmier, coiffeur, on va passer, on va pas s'éterniser sur tout ça. Andouille ?
'''Phildar''' : Parce que généralement, comme Tagada, les gens, si Tagada avait fait l'armée, il aurait fait coiffeur.
'''Gérard''' : Non, mais attends, on va demander à Andouille.
'''Andouille''', ''[ponctuée par des ouai affirmatifs]'' : Oui, bah, écoute, moi, je pense qu'effectivement, c'est possible, à partir du moment, déjà, où on le veut vraiment, parce qu'il y en a qui y vont uniquement, ça leur fait chier. Et puis, il y en a qui...
'''Gérard''' : Oh, on laisse parler les gens, s'il vous plaît, merci.
'''Andouille''' : Ouais, on me laisse parler, moi. Et d'autre part, il y en a qui aiment vraiment ça, donc ils finissent par s'engager. Et c'est particulièrement les gens qui aiment bien se faire bouffer le cul, quoi.
'''Gérard''', ''[ponctué par un sifflement d'auditeur]'' : Non, mais ça... Bon, ça, Andouille, je vais te dire une chose, que la personne qui veut s'engager... Euh, Phildar, s'il te plaît, merci.
'''Phildar''' : Y a rien, Gérard.
'''Gérard''' : Ceux qui veulent s'engager, c'est leur problème, hein. Oh, t'arrêtes de sillfer, toi, quand je parle, s'il te plaît, merci. Donc, je réponds à la question d'Andouille. Donc, y a certaines personnes qui peuvent s'engager au bout de 6-7 mois, hein. Voilà.
'''Phildar''' : S'engager à quoi ?
'''Gérard''' : Dans l'armée.
'''Phildar''' : Ah, d'accord. Et faire, en fait, leur métier de l'armée.
'''Gérard''' : Ouais, ils peuvent s'engager sur une... Sur une durée, je crois que c'est de 2 ou 3 ans, je sais plus exactement.
'''Phildar''' : Mais c'est quoi, le métier de l'armée ? Ça consiste en quoi, faire l'armée comme métier ?
'''Gérard''' : Ben, c'est obligatoire, hein. Maintenant, tu peux pas y échapper, hein. Sauf si t'es père de famille ou si t'es...
'''Phildar''' : Non, mais si, par exemple, toi, t'imagines, toi, tu t'es engagé à l'armée, à faire 3 ans d'armée. Qu'est-ce que tu fais à l'armée pendant 3 ans ?
'''Gérard''' : Ben, pendant 3 ans, tu peux monter de grade et tu peux commander ceux qui vont à l'heure actuelle.
'''Phildar''' : Mais faire quoi ? Les commander à faire quoi ? À faire leur lit au carré, à éplucher des patates ?
'''Gérard''' : Ben ouais, ça, éplucher des patates. Maintenant, à l'armée, faut dire une chose qu'ils ont...
'''Phildar''' : Non, non, il y a des mixeurs.
'''Gérard''' : Non, non, ils ont des trucs exprès. Tagada ?
'''Reego''' : Oui, il y a INT qui te demande si t'as appris à lire à l'armée.
'''Gérard''' : De toute manière, t'as pas besoin d'apprendre à lire à l'armée, tu...
'''Manu''' : Ça se saurait, sinon.
'''Reego''', ''[surpris]'' : T'as pas besoin de savoir lire pour faire l'armée ?
'''Phildar''' : Il suffit de savoir te torcher, c'est tout.
'''Gérard''' : Voilà. Tagada ?
'''Tagada''' : Alors, moi, je pense que... Franchement, non.
'''Gérard''' : Alors, tu peux préciser ?
'''Tagaa''' : Euh... Non.
'''Gérard''' : Non ? Alors, Tagada, je te conseille une chose. Soit que tu réponds correctement aux questions quand on te les pose, et quand on te demande de préciser, tu le fais, ou sinon, tu gerbes. C'est bien précis. C'est clair. Alors, je te préviens, c'est le dernier avertissement que je te donne depuis tout à l'heure. Au prochain, tu dégages. Hein ? Ou sinon, tu vas passer voir Manu, il va te mettre les points sur les I et barres sur les T, comme je dis souvent.
'''Tagada''' : C'est qui qui va mettre les barres ?
'''Gérard''' : Ouais, ouais, tu vas voir. Alors, Tagada, tu vas voir Manu, s'il te plaît. Allez, hop. Euh... Canif...
'''Canif''' : Moi, Gérard, si j'avais dû rentrer dans l'armée, ben, ouais, j'aurais bien voulu... J'aurais bien voulu, mais... Oui, on peut, je pense, ouais.
'''Phildar''' : Oh là là, elle est où, elle ? Elle est où, elle ?
'''Gérard''' : Si tu t'amuses à faire des conneries, tout à l'heure, je vais me lever, je vais te massacrer. Ok ? Tu vas pas commencer le premier débat...
'''Phildar''' : Tu vas me faire des tortures indiennes et tout ?
'''Gérard''' : Ah ouais, tu vas voir.
'''Prothèse''' : Fulgure au poing !
'''Gérard''' : Ouais, tu vas voir, fulgure au poing. Donc, Canif, pour terminer.
'''Canif''' : Ben, je pense que Gérard, moi, je pense qu'on peut... Oui, on peut s'engager dedans, ouais.
'''Gérard''' : Non, mais est-ce qu'on peut faire carrière ?
'''Canif''' : Ben oui, c'est ce que je te dis, on peut faire carrière dedans, ouais.
'''Prothèse''' : Gérard, c'es prothèse. Je voulais savoir, parce que comme toi, t'as fait ton service, t'es un peu renseigné sur le coup, quoi. Je voulais savoir si on pouvait faire animateur radio à l'armée ?
'''Gérard''' : Non, pas du tout, tu vois.
'''Prothèse''' : Tu peux inventer une radio, Radio Kaki, par exemple ?
'''Gérard''' : Non, parce qu'ils ont leur système de radio à eux, donc c'est pas...
'''Tony''' : C'est de la Cibi qu'ils font, c'est ça Gégé ?
'''Gérard''' : Non, non, non, non, non, non.
'''Reego''' : Il y a Cyber Titi sur l'IRC qui dit que la fanfare de la caserne de Suresnes joue tes remix pour motiver les troupes de corvée de chiottes, c'est vrai ça ? ''[son de clairon]''.
'''Gérard''' : N'importe quoi, lui. Bon, t'arrêtes, Phildar, avec ça. Donc, quatrième question, ça, ça va intéresser Canif, Andouille et Croupion.
'''Phildar''' : Ah, c'est une question pour des meufs.
'''Gérard''' : Faut-il supprimer l'armée aux femmes de nos jours ? Alors, on va demander à Canif, parce qu'apparemment, vous êtes vachement bien réveillés, ça fait peur.
'''Canif''' : Ben écoute, Gérard, on attend que tu nous cites, quand même.
'''Gérard''' : Mais non, mais, hé, au début, je vous pose la première question, je vous demande à tous de réagir. Maintenant, quand je demande, faut-il supprimer l'armée aux femmes, j'ai pas besoin de préciser, donc...
'''Andouille''', ''[virulente]'' : Bah, tu vas pas te plaindre !
'''Phildar et Manu''' : Oh, tu te calmes, toi ! Comment elle parle, là ?
'''Gérard''' : C'est laquelle, là, qui s'énerve, là ?
'''Reego''' : C'est quoi, c'est quoi, cette bouffonne ?
'''Gérard''' : C'est laquelle, là, qui s'énerve ? Andouille ?
'''Phildar''' : Oh, pisseuse, va !
'''Gérard''' : Eh Andouille ! Andouille ! Va voir Manu au standard si j'y suis ! ''[applaudissements]''. Allez ! Canif !
'''Tony''' : Moi, je veux son numéro, parce que j'adore les dominantes.
'''Canif''' : Non, non, non, c'est bon, c'est bon ! Oui, oui, bon, donc, ben non, je pense pas, parce que moi, j'aurais bien voulu, mais bon, la plupart des meufs, elles veulent pas la faire.
'''Gérard''' : Ouais, non, mais, je te demande, faut-il supprimer...
'''Canif''' : Je te dis, je te dis, pour moi, moi, pour moi, non, je pense pas, parce que moi, j'aurais bien voulu la faire, l'armée, mais... Il y en a beaucoup qui veulent pas le faire, donc, je pense que, vu la majorité, ouais, je pense qu'il faut le supprimer, ouais.
'''Gérard''' : Ouais, mais, de toute manière, toi, à 19 ans, je pense que c'est un peu... C'est un peu jeune, encore, hein ?
'''Canif''' : Ah, mais, de toute façon, j'ai laissé tomber, hein, donc...
'''Gérard''' : Ouais, non, non, mais, même, de toute manière, faut que tu te fasses recenser dès ta majorité, hein, donc...
'''Tagada''' : Ah, oui ! Alors, moi, tu vois, je me l'ai pas faite couper assez tôt, donc j'ai dû la faire. J'étais dégoûté. Bon, maintenant, ça va mieux. C'est propre, hein, tu me diras.
'''Gérard''' : Non, mais, Tagada, tu prends ta voix normale, tu prends pas la voix d'un travelo, d'accord ? Parce que, tout à l'heure, tu vas dégager, ça va être le dernier... Ça va être vite fait pour toi, parce qu'il y a d'autres personnes qui veulent participer au débat. Ok ? Alors, soit que tu réponds correctement, soit que tu dégages.
'''Tagada''' : Alors, je viens de répondre correctement, et t'as vraiment aucun respect pour la dignité humaine, hein, parce que c'est... depuis l'opération, c'est ma nouvelle voix, tu vois ? Ça me plaît pas ?
'''Gérard''' : Hop, c'est bon, Manu, tu me mets quelqu'un d'autre, parce que là, je crois que c'est pas... Je vais pas continuer avec lui comme ça.
'''Phildar''' : Gérard, je voulais te demander, est-ce que les femmes, elles font la même chose que les hommes à l'armée, ou pas ?
'''Gérard''' : Euh, oui.
'''Phildar''' : C'est-à-dire ?
'''Gérard''' : Ben, ils sont obligés de faire...
'''Phildar''' : Elles font pipi debout, tout ça ?
'''Gérard''' : Non, non, mais... Non, mais ça, c'est... Non, c'est pas pareil. Mais elles sont obligées de faire comme les hommes, c'est-à-dire les corvées...
'''Phildar''' : Les pompes, tout ça ? les chiottes ?
'''Gérard''' : Attendez, s'il vous plaît, merci.
'''Reego''' : Attendez, parce qu'il y a Sex sur l'IRC qui te demande si, quand tu étais à l'armée, tu te mettais la mitraillette dans le cul quand on te privait de coton-tige.
'''Gérard''' : Bon, ça, je vais même pas y répondre. Je réponds pas aux conneries comme ça sur l'IRC.
'''Tony''' : Est-ce que je peux répondre ?
'''Gérard''' : Euh, Andouille ?
'''Andouille''' : Donc, je tenais à préciser que Manu m'a repris hors antenne et qu'il m'a calmée.
'''Gérard''' : Ouais, bah, t'as intérêt de te calmer, sinon tu vas faire comme Ta gada, tu vas voir...
'''Phildar''' : Pisseuse.
'''Andouille''' : Bah, tu te calmes, hein.
'''Gérard''' : Ouais, bah, c'est toi qui vas te calmer, parce que tout à l'heure, je vais passer à croupion tout de suite. Alors, fais gaffe.
'''Croupion''' : Ouais, passe à moi.
'''Andouille''', ''[dominante]'' : C'est bon, je peux parler ?
'''Gérard''' : Vas-y, alors, dépêche-toi.
'''Tony''' : Toi, tu m'excites.
'''Gérard''' : Oh, Tony, tu t'écrases, s'il te plaît.
'''Croupion''' : T'aurais été sergent-chef, toi.
'''Andouille''' : Alors, bah, moi, non, moi, je suis contre. Parce qu'en fait, si les nanas, elles ont envie de s'engager, bah, elles ont bien raison. Et moi, personnellement, j'irai quand je ferai plus d'effet au mec. Mais pour l'instant, ça va, donc j'irai pas.
'''Gérard''' : Bah, de toute manière, tu serais obligé d'y aller, hein. Faut pas l'oublier.
'''Manu''' : Gérard, à la place... Pardon, à la place de Tagada, on accuille Jmenfous.
'''Gérard''' : Je m'en fous.
'''Tony''' : Moi, Gégé, je voudrais répondre à la question sur l'armée, là. Parce que tu parlais des filles. Moi, j'ai un copain qui fait l'armée, et il m'a dit que les filles...
'''Gérard''' : Ouais, bah, pour l'instant, je vais demander à Croupion, tu vois. Toi, t'es un peu trop pressé.
'''Tony''' : Toi, tu m'aimes pas, je sais pas pourquoi tu m'aimes pas.
'''Gérard''' : Ouais, bah, tu vas te calmer, s'il te plaît.
'''Andouille''' : Moi, je t'aime bien, Tony.
'''Tony''' : Ah, merci. En plus, toi, t'es une dominante. Tu m'excites.
'''Croupion''' : Bah, y a des femmes, oui, qui sont dans l'armée. Mais, en général, c'est des lesbiennes ou des mal baisées, donc... C'est pas gênant pour la société qu'elles soient là-dedans, quoi.
'''Gérard''' : Eh, Croupion ! Croupion, t'évites un peu trop les vulgarités, quand même. Il est 0h54, on va pas commencer à jouer sur des saloperies, hein.
'''Croupion''' : Mais non, je dis pas des saloperies.
'''Reego''' : Sur l'IRC, on me demande si, en fait, si c'est l'armée du salut que t'as fait.
'''Gérard''' : Non. Euh, Tony, maintenant ?
'''Tony''' : Donc, ouais, tu parlais des femmes. Moi, j'ai un copain qui fait l'armée. Et il m'a dit que les femmes, fallait pas croire que c'était, enfin,Demi Moore ou G.I. Jane, tout ça.
'''Croupion''' : T'as des copains, toi ?
'''Tony''' : Ouais, ouais, j'ai des copains et des copines, aussi.
'''Gérard''' : Oh, on se calme, là, derrière, quand y en a qui parlent. Parce que ça, tout à l'heure, ça va chauffer.
'''Tony''' : Un petit peu de respect, quand même, merde. Ouais, euh... Donc, ouais, c'est ce que je disais. Et, euh... Donc, ouais, les femmes, faut pas croire qu'elles ressemblent à... C'est des canons, quoi. Parce que, en fait, c'est des boudins. C'est la plupart. Et puis, ouais, elles sont souvent à l'infirmerie. Et puis, euh... Enfin, les bidasses, elles font tout pour pas se blesser, en fait.
'''Croupion''' : Elles ont toujours leurs règles. Enfin, bon, c'est chiant.
'''Gérard''' : Oh, mais ça, euh... Ça, c'est... Ça, c'est leur problème. Prothèse ?
'''Prothèse''' : Ouais, bah, moi, Gérard, je pense qu'il faudrait leur supprimer, parce que... Si les femmes se mettent à faire l'armée, après, il n'y aura plus personne pour faire la cuisine quand on regarde la télé, quoi.
'''Gérard''' : Non, mais attends, Prothèse, je vais te dire, maintenant, ça va devenir... Ça devient obligatoire, hein.
'''Prothèse''' : C'est inadmissib.
'''Gérard''' : Ouais, mais ça devient obligatoire, hein, maintenant. Euh, Reego ?
'''Reego''' : Ouais, c'est encore Cybertiti. Comme tu lui as dit que t'avais pas fait l'armée du salut, il te demande si t'as fait l'armée des douze singes.
'''Gérard''' : Mais lui, il a pas fait l'armée des cons, lui, ça vaudra mieux. Jmenfous, maintenant, pour finir.
'''Jmenfous''' : Euh, bah, moi, personnellement, les meufs, elles font ce qu'elles veulent, quoi.
'''Gérard''' : C'est tout ce que tu peux préciser ?
'''Jmenfous''' : Bah, je suis pas une meuf, alors je m'en fous, quoi.
'''Gérard''' : Bah, ouais, mais je te demande, est-ce qu'il faut supprimer l'armée aux femmes, maintenant, oui ou non ? Bah, tu peux essayer de préciser ta pensée, quand même.
'''Jmenfous''' : Bah, franchement, je sais pas.
'''Gérard''', ''[soupir de lassitude]'' : Hé, avant qu'on t'appelle, t'aurais pas fumé la moquette, toi ? Parce que, dis donc, apparemment, vous avez l'air de répondre la moitié des... à côté des questions, hein.
'''Jmenfous''' : Mais c'est toi qui mets pas le feu, Gérard. Franchement, hier, c'était plus... Enfin, je sais pas, ça pulsait, quoi. Là, c'est... C'est tout, tout je m'endors et tout. Non, je critique pas ton débat, GG1, je constate, simplement.
'''Gérard''' : Et alors ? Mais de toute manière, le premier débat, il se passe toujours... calme
'''Jmenfous''' : Ah, d'accord, excuse-moi, je vais attendre le deuxième.
'''Gérard''' : Non, non, mais de toute manière, au deuxième, c'est pas sûr qu'on reprenne les mêmes, hein, faut pas déconner, hein.
'''Manu''' : Pour reprendre un peu le thème du débat et parler de l'armée un peu...
'''Phildar''' : Fais-nous un petit sondage.
'''Manu''' : Voilà, c'est ce que je vais faire, un petit sondage. À la question, combien donneriez-vous à une armée ? 32% des gens ont dit qu'ils donneraient 2 euros. 28% donneraient leurs animaux domestiques. 40% donneraient leur approbation. Et 1% ont déjà donné leurs dents et n'ont pas voulu donner leur moustache. Qu'est-ce que t'en penses ?
'''Phildar''' : Oh làlà, ça va loin Manu !
'''Gérard ''' : N'importe quoi ! Reego, sur IRC ?
'''Reego''' : Sur IRC, il y a toujours du monde. Enfin, bon, je passe les questions, genre, GG est-il homo ? A-t-il eu des rapports tagibles avec une femme depuis son adolescence ? Ça sert à rien, quoi. Ah, on te demande si tu connais Rambo.
'''Gérard''' : Non. Bon, on va continuer, là, parce que... Il est quand même déjà, j'ai erreur, 57, donc il faudrait peut-être qu'on accélère. Il reste encore 1, 2, 3, 4, 5, 6 questions. Quels sont les inconvénients ou les avantages de l'armée ? On va demander ça, ben, je m'en fous.
'''Jmenfous''', ''[ponctué par un sifflement strident d'un auditeur]'' : Franchement, tu vois, les inconvénients... Ben, je sais pas, quoi. Je l'ai pas fait, moi, l'armée.
'''Manu''', ''[sérieux]'' : L'auditeur qui siffle, il faut qu'il arrête, hein.
'''Jmenfous''' : Ouais, GG, je te dis, moi, j'ai pas fait l'armée, donc je connais pas les inconvénients ni les avantages, donc je m'en fous, quoi.
'''Gérard''' : D'accord, tu t'en fous complètement. Prothèse ?
'''Prothèse''' : Ouais, je pense que les inconvénients, ça pourrait être qu'on peut pas se faire les meufs, comme on l'a précisé tout à l'heure. C'était des gros boudins. Et les avantages, je sais pas, j'en vois pas trop.
'''Gérard''' : Tony ?
'''Tony''' : Ouais, les inconvénients, c'est qu'on peut pas se baisser, et les avantages, c'est que... Enfin, y'en a pas, en fait.
'''Gérard''' : Alors, attends, tu peux préciser, là, parce que je vois pas du tout le...
'''Tony''' : Qu'est-ce que tu veux que je précise ?
'''Gérard''' : Non, mais tu précises la pensée que t'as.
'''Tony''' : C'est qu'on peut pas se baisser, mais je peux pas le dire, ça passe pas.
'''Gérard''' : Ouais, d'accord. Alors, Tony, ça commence à bien faire, hein, toi. Croupion ?
'''Croupion ''' : Les avantages, c'est que quand t'es illettré, bah, tu peux trouver du travail. Mais les inconvénients, bah, c'est que ça fait chier tout le monde, quoi.
'''Gérard''' : Tu peux préciser le...
'''Croupion''' : Les petits jeunes qui ont pas envie de le faire, et puis ils sont emmerdés pour donner dix mois de leur vie à ces connards, quoi.
'''Gérard''' : Non, mais attends, parce que... ''[Jmenfous émet un ouais bruyant]''. Oh, Tony, ça commence à bien faire, toi, là, maintenant.
'''Tony''' : C'est pas moi, là, là.
'''Gérard''' : Ouais, bah, tu vas te calmer, parce que tout à l'heure, ça va être...
'''Andouille''' : Arrête de t'en prendre toujours à Tony.
'''Gérard''' : Oh, Andouille, tu te la fermes ! Maintenant, tu vas répondre !
'''Tony''' : Toi, Andouille, je vais te parler à...
'''Gérard''' : Eh, eh, tu mets Tony et Andouille ensemble, là, qu'ils arrangent leur salade, quand ils auront terminé...
'''Tony''' : Nous, dimanche aussi, on va se marier.
'''Gérard''' : Ouais, ça suffit ! Tu mets Tony et Croupion, là hors antenne, ils vont faire leur petite popote ensemble, parce que c'est pas dans le débat qu'on fait leur popote. Euh, Canif ?
'''Canif''' : Bah, écoute... Écoute, tu peux me répéter la question, s'il te plaît, Gégé ?
'''Gérard''' : Alors, quels sont les inconvénients ou les avantages de l'armée ?
'''Canif''' : Bah, écoute, pour moi, les inconvénients, c'est l'uniforme. Et puis, l'avantage, bah, je sais pas, il y a plein de gars, quoi. T'as le choix, au moins, hein. Là, t'es sûre de pas être toute seule, hein.
'''Gérard''' : Ouais, mais, euh... Comment ça, euh...
'''Canif''' : Bah, je veux dire, si t'es infirmière, là-dedans, je veux dire... Bah, Tu peux y aller, hein.
'''Gérard''' : Ouais, mais ça, de toute manière, tu peux très bien faire ton armée en étant infirmier ou infirmière, hein. Ça, c'est strictement pareil, hein.
'''Canif''' : Ouais, non, mais pour moi, c'est ça, les avantages, hein.
'''Gérard''' : Ouais, mais ça revient à peut-on faire carrière en faisant l'armée, tu vois. C'est à peu près le même rapport que ce que tu me dis. C'est à peu près pareil que la troisième question qu'on avait posée, hein. Euh, Reego ?
'''Reego''' : Oui, il y a Davy1 sur IRC qui te demande si tu connais le... Enfin, si tu as connu le soldat inconnu.
'''Gérard''' : Non.
'''Manu''' : Et Ryan, non, tu ne connais pas Ryan ?
'''Reego''' : Bah, enfin, sur IRC, on m'a dit que Gérard, c'était le soldat Ryan qu'on n'a pas retrouvé.
'''Phildar''' : Est-ce qu'on va le sauver, au moins ?
'''Reego''' : Bah, il n'a pas été sauvé, ouais.
'''Gérard''' : Toi, fais gaffe, parce que tout à l'heure, je vais te sauver ma main sur ta gueule, toi. Alors, Andouille, maintenant.
'''Andouille''' : Ouais, alors, l'inconvénient, c'est qu'on a l'impression de perdre son temps là-bas. Et l'avantage, c'est que, justement, on ne perd pas son temps là-bas.
Alors, tu peux préciser le fond ?
BaGérard, oui, donc, l'inconvénient, c'est que tu perds ton temps quand tu es là-bas.''' ''' :
'''Andouille''' : Ouais. Et l'avantage, c'est que tu ne perds pas ton temps quand tu es là-bas.
'''Gérard''' : Ouais, d'accord, je vois à peu près. Non, mais de toute manière, je pense qu'il n'y a pas beaucoup d'inconvénients ni d'avantages là-dedans, parce qu'en fin de compte, les avantages que tu as, c'est que...
'''Canif''' : De toute façon, tu es obligé de la faire, donc...
'''Croupion''' : Et en plus, t'es payé.
'''Phildar''' : T'es payé combien, Gérard, à l'armée, justement ? C'est une bonne question.
'''Manu''' : Je crois que c'est 4 euros.
'''Gérard''' : Non, non, non, attends, normalement, si je me... Bon, ça y est, oui. Normalement, je pense que ça ne fait même pas la moitié de ton salaire. Tu dois toucher à peu près 1 500 balles...
'''Phildar''' : C'est le SMAC<ref name="hist11"></ref> ou pas, là-bas ?
'''Gérard''' : Non, même pas. T'as le droit à une cartouche de cigarette par mois et tout.
'''Prothèse''' : Ouais, c'est Prothèse. On n'en a pas parlé ce soir, je voulais savoir si t'avais fait le parcours du con en te battant.
'''Gérard''' : Alors, quand tu dis des trucs comme ça, tu vois, au lieu de dire con et puis battant, parce que toi, t'as l'air d'être con quand tu poses une question, donc pour toi, tu ne l'auras pas fait, le parcours du combattant, et ça, c'est un truc qui est assez dangereux à faire.
'''Jmenfous''' : Ouais, bravo, Gégé.
'''Gérard''' : C'est la sixième question... Vous allez réfléchir et on va s'écouter un petit morceau, à moins qu'il y ait une question IRC...
'''Reego''' : Non, il y avait juste Denis qui donne les avantages de l'armée. C'est le premier lieu où on a accepté Gégé sans faire d'histoire. Le désavantage, c'est qu'ils ne l'ont pas gardé.
'''Gérard''' : Bon, ça, je ne vois pas du tout le rapport.
'''Jmenfous''' : Gégé ? Je m'en fous, là. Tu peux me mettre hors antenne avec Andoï, là, il y a moyen de moyenner ?
'''Gérard''' : Ben, vous allez aller tous hors antenne, maintenant. Je vais vous poser la sixième question. Peut-on s'engager dans l'armée si on n'a pas de boulot ? Oui, on va s'écouter Thierry Big Hop avec Yo-Yo, Passe-moi la moutarde, pour mon all dog. On se retrouve tout de suite après. ''[musique]''.
'''Gérard''' : Voilà donc c'est toujours les débats du jeudi, vous pouvez nous appeler au 0803 08 5000 ou 0900 80 6000 et 3615 code Funradio, rubrique Direct et l'IRC funradio ww où que Reego vous attend.
'''Reego''' : Donc, un petit point sur l'IRC, on a dépassé les 2500, on en est à 2684, moins 3.
'''Gérard''' : Pourquoi moins 3 ?
'''Reego''' : Parce qu'il y en a 3 qui viennent de partir.
'''Gérard''' : Ah bon, alors donc, on récupère Canif. Andouille (j'espère que tu t'es calmée depuis tout à l'heure).
'''Andouille''' : Non, pas vraiment.
'''Gérard''' : Pas vraiment, mais tu vas te calmer. Croupion ? Tony ? Prothèse ? Et, Je m'en fous. Donc, t'as pu discuter avec Andouille ?
'''Jmenfous''' : Non, j'ai pas pu, personne me... Non, n'importe quoi, on m'a filé un disque, là. Elle est où, la femeu ?
'''Gérard''' : La femeu, ben, tu vas... Tu vas la récupérer tout à l'heure hors antenne vous allez gérer votre petite salade. Donc, alors, on va demander à Canif si elle a compris la question.
'''Canif''' : Ben, écoute, je m'en rappelle plus, Gérard.
'''Gérard''' : Ah, non, mais faudrait peut-être écouter quand je pose des questions.
'''Manu''' : Tu peux la répéter après le disque. Pense aux auditeurs qui viennent seulement de nous rejoindre.
'''Gérard''' : Alors, peut-on s'engager dans l'armée si on n'a pas de boulot ? Donc, Canif ?
'''Canif''' : Ben, ouais, je pense, ouais.
'''Gérard''' : Mais tu fais quoi ? Tu fais quoi, toi, au fait, comme boulot ?
'''Canif''' : Moi, je suis secrétaire. Secrétaire comptable.
'''Jmenfous''' : T'es en tailleur ?
'''Prothèse''' : Chaude comme la braise.
'''Canif''' : Et vos commentaires, moi, je vous emmerde.
'''Gérard''' : Voilà. Comme ça, c'est bien répondu, tout ça.
'''Jmenfous''' : Moi, j'aime les femmes qui ont du caractère.
'''Gérard''' : Oh, tu t'écrases, toi ! Parce que tout à l'heure, tu vas dégager, toi, maintenant. Je vous préviens que, là, à 1h10, je vais gerber, hein. Ça va gerber sec. ''[quelquu'un raccroche]''. Voilà, c'est pas mal. C'est qui ?
'''Manu''' : C'est, ouais, c'est Prothès, c'était une cabine, je vais le rappeler.
'''Andouille''' : Ouais, bah, moi, je pense qu'on peut s'engager, effectivement. Voilà. Et j'ai rien d'autre à rajouter, parce que sinon, tu vas encore me gerber, alors je préfère rien dire.
'''Gérard''' : Bon, alors, Andouille, c'est la dernière... c'est simple. Soit que tu réponds correctement, soit que tu gerbes tout de suite. Tu choisis.
'''Jmenfous''' : Non, non, non, passe-la moi, avant.
'''Croupion''' : Bah, ça sert justement, quand t'as pas de boulot, à t'engager, ouais.
'''Gérard''' : Ouais, mais ça, c'est... Je pense qu'il y a beaucoup de personnes qui vont me répondre ça.
'''Phildar''' : Et quand ils arrêtent l'école, aussi, les gamins, ils vont à l'armée, non ?
'''Gérard''' : Non, non, non, non, ça... Non, mais attends, parce que l'armée... Faut que tu te fasses recenser à 18 ans.
'''Phildar''' : C'est une poubelle, l'armée, on dirait.
'''Canif''' : Je peux ajouter quelque chose ? Moi, aussi, j'avais entendu parler que, quand on voulait s'engager dans l'armée, il fallait pas avoir plus de 25 ans, je crois.
'''Gérard''' : Euh, non, je pense pas, parce que ça, j'en ai pas entendu parler, à mon avis.
'''Reego''' : Il y a un Area qui te demande si tu as rencontré Sandy à l'armée.
'''Gérard''' : Non, pas du tout. Sandy, je l'ai déjà dit la semaine dernière, comment que je l'avais rencontrée sur un magazine.
'''Phildar''' : Non, mais Sandy, elle a fait l'armée, par contre.
'''Tony''' : Elle réparait les tanks.
'''Gérard''' : D'accord, Tony ? C'est toi qui viens de répondre les tanks ?
'''Tony''' : Pas du tout, pas du tout.
'''Manu''' : Non, c'est moi, c'est moi, j'ai dit.
'''Phildar''' : Non, elle bossait à la banque.
'''Tony''' : Ouais, bah, c'est sur l'engagement, c'est ça ? Peut-on s'engager dans l'armée si on n'a pas de boulot ?
'''Phildar''' : Bah oui, parce qu'on fout rien, on peut y aller.
'''Tony''' : Non, je dirais... Attends, attends, j'essaye de réfléchir, là.
'''Reego''' : Non, mais non, Gérard, ils te prennent pas à l'armée si t'as pas de boulot.
'''Gérard''' : Bah, de toute manière, tu peux t'engager si t'as pas de boulot, hein.
'''Andouille''' : Pourquoi tu t'engages pas, toi, Gérard ?
'''Gérard''' : Eh, qu'est-ce que ça... Pourquoi que... Je t'emmerde, toi.
'''Phildar''' : Par contre, moi, j'ai un exemple. J'ai une amie qui s'appelle Mélanie, et qui avait son bac. Et, euh... Donc, elle voulait s'engager à l'armée parce qu'elle s'est dit, « Ouais, j'ai un bac, maintenant, j'aimerais bien faire l'armée. » Et ils l'ont pas acceptée.
'''Gérard''' : Mais attends, t'as pas besoin d'avoir un bac pour aller à l'armée.
'''Manu''' : T'as pas le droit à l'armée d'avoir un bac.
'''Gérard''' : Faut complètement chtarbé. Euh, Tony ! Tu réponds ?
'''Tony''' : J'ai répondu, j'ai répondu.
'''Gérard''' : Attends, c'est bizarre, j'ai pas entendu ta réponse.
'''Tony''' : C'est pas grave.
'''Gérard''' : Ouais, bah, Tony, je pense que...
'''Tony''' : Non, mais non, mais vas-y, continue, continue. Y a pas que moi, allez, vas-y.
'''Tony''' : Non, non, mais tu réponds !
'''Tony''' : Ça y est, l'engagement, il faut se faire recenser.
'''Gérard''' : D'accord, voilà. Eh ben, enfin, dis-donc, t'es lourd à la détente, toi.
'''Reego''' : Gérard, par rapport à l'armée, y a Davy1 qui dit « Les fusils servent à fusiller, et les tanks, ils servent à t'enc. »
'''Gérard''' : Ouais, bah, ça, je l'emmerde, lui. Euh, Manu ?
'''Manu''' : Encore un petit sondage.
'''Gérard''' : Le dernier, j'espère.
'''Manu''' : L'avant-dernier. À la question « Qu'aimez-vous chez une armée ? » 50% des gens aiment bien, 25% des gens aiment beaucoup et 100% aiment le balcon avec les drapeaux fan radio, je comprends pas.
'''Gérard''' : Ça... Toi, toi, toi, toi, tu vois, Phildar, tes conneries, ça, c'est tes conneries, ça.
'''Phildar''' : Non, c'est pas mes conneries. C'est les sondages des auditeurs.
'''Gérard''' : On va demander la prothèse. ''[musique de Noël]'' : Phildar, tu m'éteins ça tout de suite ! ''[s'ajoute un bruit de clairon tel que celui du réveil matin à l'armée]''. Bon, t'arrêtes, Phildar, ou quoi, là ? ''[il prend une boîte de CD dans la main et la balance, sans la jeter, vers Phildar]''.
'''Phildar''' : Il a failli balancer le disque de Reego, donc...
'''Prothèse''' : Ouais, donc, je pense qu'il est préférable de s'engager quand on n'a pas de boulot, vu qu'on est payé à rien foutre et porter du kaki et j'aime bien les fruits.
'''Gérard''' : D'accord. Et je m'en fous, pour finir ?
'''Jmenfous''', ''[nonchalant]'' : Bah, franchement... Bah non, ouais, je sais pas.
'''Andouille''' : Oh là là, Doc Gynéco.
'''Tony''' : Toi, tu vas gerber, toi.
'''Jmenfous''' : Ah ouais ?
'''Gérard''' : Ils sont pas réveillés, les auditeurs.
'''Gérard''' : Je m'en fous, tu te réveilles, s'il te plaît, ou tu dégages !
'''Jmenfous''' : Bah, je sais pas, franchement, si j'ai pas de taf, ouais.
'''Canif''' : Mais il sait jamais rien, lui, pourquoi il vient !
'''Tony''' : Il fume trop, lui !
'''Gérard''', ''[excédé]'' : Bon e aller, eh, tu reprends, je m'en fous, au standard, là, ça va pas. Ça va pas, là. Enfin, bref. Donc, je peux vous dire une chose, que pour ceux qui ont envie de s'engager, ils peuvent le faire s'ils ont pas de boulot, mais comme l'histoire du bac, ça existe pas. Il n'y a pas besoin d'avoir un bac pour aller à l'armée. Ça, c'est des conneries.
'''Canif''' : Je crois que faut minimum le brevet.
'''Gérard''' : Même pas. Non, plus. Ok, alors voilà.
'''Phildar''' : Et toi, Gérard, alors, qu'est-ce que t'en penses de cette question ?
'''Gérard''' : Bah, moi, je viens d'y répondre.
'''Phildar''' : Mais je t'écoute pas.
'''Gérard''' : Bah, t'écoutes pas, t'as qu'à te déboucher les oreilles au lieu de faire des conneries. Alors, septième question. Faut-il parler de l'armée en cours ou à la télé ? On va demander à... Je m'en fous si ça va mieux pour lui.
'''Manu''' : Ça va mieux pour lui.
'''Jmenfous''', ''(nonchalant]'' : Bah, à la télé, ouais, on voit des émissions, quoi.
'''Gérard''' : Non, mais je pense qu'on t'a demandé de te réveiller, là. Apparemment...
'''Jmenfous''' : Je réponds à ta question, là. Je te dis, les pubs et tout, on les voit à la télé, à l'école, il y a des mecs qui passent et tout, ils te parlent de l'armée, ils sont engagés, c'est beau et tout, c'est un métier. Et voilà, quoi.
'''Prothèse''' : Ouais, ouais, je sais pas. Je pense qu'il faut pas trop en parler à l'école et à la télé parce que ça pourrait donner des idées aux gens, quoi.
'''Gérard''' : Mais non, mais de toute manière, c'est ce qu'ils font, là, à l'heure actuelle. En cours, je ne sais pas, parce qu'on n'a pas des... On n'a pas d'étudiants. On n'a pas d'étudiants, là, avec nous, c'est dommage. J'aurais bien voulu avoir un étudiant pour savoir...
'''Jmenfous''' : Eh, moi, je suis étudiant.
'''Gérard''' : Eh, t'appelles d'où, toi ?
'''Jmenfous''' : Moi ? De Nantes.
'''Gérard''' : De Nantes ? Et donc, à ton avis, ils en parlent, là ?
'''Phildar''' : Mais t'es étudiant en armée, toi.
'''Gérard''' : Est-ce qu'ils en parlent, là ?
'''Jmenfou''' : Bah ouais, il y a plein de pubs partout. Affichées sur les tableaux.
'''Gérard''' : D'accord. Je pense qu'à mon avis, je crois que t'es en train de me dire des conneries. Tony ?
'''Tony''' : Ya trop de pub. L'autre fois, j'entendais, même sur Fun Radio, j'entendais une pub... Ouais, l'armée de terre occulte un mec avec une clé de 13 pour réparer les tanks. Donc, je trouve ça inadmissible. C'est de la propagande.
'''Gérard''' : Tony, t'es sûr de ce que t'inventes, là ?
'''Tony''' : Non, mais je te jure que ça passait.
'''Phildar''' : Non, mais il y a une pub en ce moment qui veut... Parce qu'en fait, j'ai l'impression qu'il n'y a pas assez de gens à l'armée. Ils ne veulent plus y aller, donc ils font des pubs.
'''Prothèse''' : Le pire, c'est qu'ils te mettent ça entre deux tubes.
'''Gérard''' : Ah, d'accord, entre deux tubes, t'as raison. Croupion ?
'''Croupion''' : Ouais ? Moi, je dis que non, il ne faut surtout pas en parler. Ça pourrait inciter les gens à le faire.
'''Phildar''' : Tu lui dis quoi ?
'''Gérard''' : Non, mais ça va, là...
'''Phildar''' : Bon, Gérard, t'écoutes les auditeurs, non ? Je suis en train de régler un problème avec Manu, ça ne te dérange pas, non ?
'''Gérard''' : Bon, Croupion ?
'''Croupion''' : Oui, je te dis qu'il ne faut surtout pas en parler. Ça pourrait inciter les gens à le faire.
'''Gérard''' : De toute manière, pourquoi... S'ils en parlent, c'est pour inciter les jeunes à y aller, hein.
'''Andouille''' : Oui, ben justement.
'''Gérard''' : Ok. Andouille ?
'''Andouille''' : Ouais, ben je suis désolée, moi, Phildar vient de me prendre hors antenne, donc je n'ai pas entendu la question.
'''Gérard''' : Non, attends, Phildar vient de te prendre hors antenne... Non, mais attends, Phildar, il est à la réa.
'''Jmenfous''' : Attends, attends, attends, Gégé, deux secondes. Hé, Phildar, tu te calmes, là ?
'''Gérard''' : Non, mais attends, c'est qui qui parle, là ? Non, mais attends, pour l'instant, ce n'est pas Phildar qui commande, c'est moi, c'est mes débats.
'''Manu''' : Non, non, c'est pas toi. C'est Phildar qui commande.
'''Gérard''' : Non, non, c'est pas Phildar, non, mes débats, c'est moi. Alors, Andouille ?
'''Tony''' : Phildar, c'est un petit teigneux, mais je l'aime bien, quand même.
'''Jmenfous''' : Hé, Andouille, t'es blonde ou brune, concrètement, là ?
'''Tony''' : Andouille, elle est pour moi.
'''Phildar''' : Il fait un boulot de merde, Manu, ce soir, je suis d'accord avec toi.
'''Gérard''' : Non, non, non, c'est pas Manu. C'est Je m'en fous, qui arrête pas de faire chier son monde. Alors, Andouille, pour la dernière fois. S'il te plaît ?
'''Andouille''' : Oui ? Non, mais je te demande poliment si tu pourrais me répéter la question, s'il te plaît.
'''Gérard''' : Alors, faut-il parler de l'armée en cours ou à la télé ?
'''Andouille''' : Moi, je trouve qu'il faut pas en parler parce qu'on fait pas de politique à l'école.
'''Gérard''' : Non, mais attends, on parle de l'armée, on parle pas de la politique.
'''Tony''', ''[vendicatif]'' : Ouais, mais c'est la même question que la politique, faut pas nous prendre pour des cons, aussi. T'as changé armée par politique.
'''Gérard''' : Tony, si t'es pas content, tu dégages, OK ?
'''Tony''' : Non, non, mais je suis content. Non, mais bon, c'est pour le dire aux auditeurs que t'as 15 millions d'auditeurs, faut les respecter, quand même. Parce que depuis 10 ans, c'est les mêmes débats et tu ranges...
'''Gérard''' : Bon, alors, Tony, tu dégages, allez, hop, terminé ! Hop, au revoir, Tony !
'''Andouille''' : Tu parles pas comme ça à Tony !
'''Gérard''' : Toi, Andouille, c'est pareil, au revoir, Andouille ! Allez, dégage, Andouille, allez !
'''Jmenfous''' : Bah, si Andouille part, je pars.
'''Gérard''' : Ouais, ben, c'est bien, aussi, je m'en fous. Allez, dégage, je m'en fous. C'est bien, récupère...
'''Phildar''' : On est dans la merde, on n'a plus que trois auditeurs.
'''Gérard''' : Tu récupères 3 auditeurs, Manu, s'il te plaît.
'''Manu''' : J'y vais, j'y vais, je les récupère, je vais les chercher, là, devant l'avenue, là.
'''Gérard''' : Alors, Canip ?
'''Canif''' : Bah, écoute, Gérard, je crois que, de toute façon, notre avis compte pas vraiment là-dedans, parce que s'ils ont envie d'en parler, ils en parlent quand même, hein.
'''Gérard''' : Non, mais donc, je reviens à ce que Tony, soi-disant, qui disait, que c'était pareil qu'on... la politique, non. Parce que si on en parle à la télé, c'est que ça insiste pas les jeunes à vouloir faire de l'armée. Comme Andouille a voulu... Comme Andouille elle voulait dire. Mais, moi, je pense qu'ils ont tout à fait raison de nous parler de ce qui se passe à l'heure actuelle dans certains pays. Donc, ça va être...
'''Canif''' : Bah, ça va en intéresser certains, de toute façon.
'''Gérard''' : Ouais, mais ça, ça va être la dernière question qu'on va poser...
'''Prothèse''' : Je voulais savoir, si, quand tu te mettais au garde-à-vous devant le général, t'avais la gaule ?
'''Gérard''' : Pas obligatoirement, non. Pourquoi ? Parce que ça t'est déjà arrivé, toi ?
'''Prothèse''' : Bah, non, mais je te posais la question.
'''Gérard''' : Incroupion ! Si on te gêne, tu nous le dis, hein.
'''Croupion''' : Ah, non, mais je vous écoute.
'''Gérard''' : Non, mais tu peux quand même parler, hein, parce que, pour l'instant...
'''Croupion''' : Le problème, c'est que, quand je parle, tu me dis de me taire, donc...
'''Gérard''' : Non, non, non, attends, pour l'instant, je t'ai rien dit, donc je te demande de réagir. Parce que vous êtes plus que 3 sur 7... 6, hein. Donc, tout le monde a fait le tour de la question. Alors, là, il y a une question qui va être bien, parce que je pense que c'est Canif qui a voulu en parler, ou même toi, Incroupion.
'''Phildar''' : C'est laquelle question, Gérard ? C'est la numéro combien ?
'''Gérard''' : C'est la 8.
'''Phildar''', ''[impatient]'' : Encore ? 2, putain.
'''Gérard''' : Ouais, ouais. Non, mais, hé, si t'es pas content, tu vois, tu poses ton casque et tu dégages. OK ? Tu rentres chez toi. ''[Reego jette son casque et se lève]''. Hé, Reego, c'est pas à toi que je m'adresse. ''[Manu fait la même chose]''. Alors, pourquoi faut-il faire 10 mois au lieu de 12, maintenant ? Alors, on va demander à Canif.
'''Canif''' : Bah, là, là, j'en ai vraiment aucune idée, Gégé.
'''Gérard''' : Non, mais, avant, c'était 12 mois, maintenant, c'est passé à 10, donc, le pourquoi ?
'''Canif''' : Ah, mais, c'est ce que je te dis, je ne sais absolument pas.
'''Gérard''' : Hum, d'accord. Et toi, croupion ?
'''Croupion''' : Euh, c'est pour des questions de budget. Bah, ils gagnent 2 mois, ils gagnent du fric en faisant que 10 mois.
'''Canif''' : C'est parce que ça a trop gueulé, je pense.
'''Croupion''' : Non, mais, comme ça, ils ne payent pas les mecs pendant 2 mois, ils ne les payent plus, quoi.
'''Canif''' : Ah, ouais, c'est une bonne idée, ça, je crois.
'''Gérard''' : Bah, non, mais, même, de toute manière, ils sont... Oh, vous arrêtez, là, derrière, là ! Vous revenez bosser, là, correctement ! Bon, attendez, je reviens. ''[il se dirige vers la porte du studio, ouverte, le'équipe étant devant, passive et discutant. Gérard s'adresse à eux, sur le pas de la pporte du studio]'' : Oh Reego là, vous revenez bosser là ! ''[il regagne sa place]''. Alors, Prothèse, tu peux répondre, s'il te plaît ?
'''Prothèse''' : Ouais, ouais, donc, euh... Bah, tu peux me répéter, j'ai pas bien entendu.
'''Gérard''' : Donc, la question, euh... Pourquoi faut-il faire 10 mois au lieu de 12 ? Disons, avant, c'était de 12, et maintenant, c'est passé à 10. C'est moi qui me suis trompé dans ma question.
'''Prothèse''' : C'est des problèmes de calendrier avec les années bisextiles, non ?
'''Gérard''' : Non, non, non, non, non, parce qu'avant, c'était 12 mois, comme c'est... Et puis, maintenant, ça passe à 10 mois. Donc, on se demande pourquoi ils s'amusent à changer... ''[non seulement personne n'a bougé, mais en plus ils baissent la luminosité du studio, plongé das la pénombre]''. Oh, vous arrêtez avec la lumière et vous revenez bosser, là ! Parce que tout à l'heure, ça va chauffer pour vous 3, là, hein !
'''Prothèse''' : Tu fais des blancs, Gérard. Ouais, donc, je te disais, je pense que c'était un problème de calendrier, non ?
'''Gérard''' : Bah, non, parce qu'en fin de compte, non, il n'y a pas d'histoire de calendrier, là-dedans, hein. Parce que c'est... Au début, c'était passé de... C'était 12, maintenant, on est... Ils sont descendus à 10, on ne sait pas pourquoi.
'''Prothèse''' : Ils ont raison, finalement, on se fait moins chier à 10 mois que 12 mois.
'''Phildar''' : Ils vont descendre à une semaine, là, ça va être une semaine, après.
'''Manu''' : Ouais, alors, on accueille 3 nouveaux auditeurs, on accueille Face de Pet, Petit Fion et Général Moncu.
'''Phildar''' : On a un Général, ouais, qui vient de quel corps d'armée ?
'''Moncu''' : De l'armée de l'air.
'''Gérard''', ''[bougon]'' : Général mon cul, ouais... Apparemment, c'est ce que... Et l'autre ?
'''Moncu''' : J'ai avec moi le sergent Sussmon Boul, si vous voulez.
'''Gérard''' : Ouais, non, mais ça y est, bon, alors, maintenant, on va demander à Face de Pet...
'''Fae de pet''' : Alors, tu vois, moi, alors, je t'explique. Moi, je pense que, ouais, bah, 10 mois, franchement, c'est plus cool que 12, quoi, parce que les mecs, déjà, ils y vont, c'est pas marrant, quoi, t'sais, ça les galère.
'''Manu''' : Dis moi quoi ?
'''Face de pet''' : Bah, 10 mois de l'armée, quoi, c'est mieux que 12, quoi. Ouais, alors, moi, je disais que, voilà, quoi, quand tu fais 10 mois, c'est classe, parce que 12 mois, c'est relou. Non, franchement, concrètement, le mec qui part faire son service militaire... On est d'accord, c'est relou, 10 mois, 12 mois. Alors, il vaut mieux qu'il en fasse 10, t'as compris ?
'''Gérard''' : Non, mais de toute manière, maintenant, au début, c'était 12, maintenant, c'est passé à 10, on se demande pourquoi. Mais de toute manière, que tu partes 10 mois ou 12 mois, de toute manière, tu perds quand même ton temps en faisant l'armée.
'''Manu''' : Dans quel sens ?
'''Gérard''' : Manu, ça suffit, toi.
'''Manu''' : Je demande, parce que je comprends pas.
'''Gérard''' : La semaine dernière, t'as fait du bon boulot, si tu commences à foutre ta merde, ça va...
'''Phildar''' : De toute façon, vous parlez de 10 et 12 mois, mais c'est pas ça, l'armée, c'est une semaine, maintenant.
'''Gérard''' : Non, non, non, non, non, non, non. Toi, tu l'as même pas faite, alors tu t'écrases.
'''Reego''' : Si, si, Fildar, il a fait l'armée, mais pour revenir au débat, sur IRC, on te demande, on te dit en même temps, que maintenant, l'armée, elle est plus obligatoire. Pourquoi ?
'''Gérard''' : Si, l'armée est toujours obligatoire, encore.
'''Phildar''', ''[méprisant, soutenu par Manu]'' : Non, c'est pour devenir un métier.
'''Gérard''' : L'armée est obligatoire. L'armée est obligatoire. Non, c'est tout. Général Moncu ?
'''MOncu''' : En tant que général, je peux témoigner, quand même. Parce que, maintenant... Maintenant, on recrute, surtout dans le civil. C'est fini, tout ce recrutement administratif.
'''Petit fion''' : Alors, tout d'abord, bonsoir, Gérard.
'''Moncu''' : Ça te dirait de faire l'amour avec un gradé ?
'''Gérard''' : Oh ! Merci.
'''Petit fion''' : Bah, écoute, on se retrouve hors antenne, alors.
'''Moncu''' : Pas de problème.
'''Face de pet''' : Hé, attends, attends, attends, moi, je suis plus gradé que lui.
'''Gérard''' : Hé ! Oh ! On accouche, maintenant, là, sur la question. On va pas s'éterniser, là-dedans, hein.
'''Petit fion''' : Bah 10 mois... 12 mois, c'est trop long, quoi.
'''Gérard''' : Bah, 10 mois, c'est pareil, hein.
'''Petit fion''' : Bah, non, c'est 2 mois de moins.
'''Moncu''' : Bah, il y a 2 mois de différence.
'''Gérard''' : Bah, ouais, mais si tu fais le con pendant tes 10 mois, tu refais un mois de plus, donc ça fait 11 mois.
'''Petit fion''' : Si tu fais le con au bout de 12 mois, tu t'en retapes un de plus. tandis que si tu fais le con au bout de 10 mois, tu t'en retapes un de plus aussi, mais seulement, ça fait plus 13, mais ça fait 11.
'''Montcu''' : C'est cumulab.
'''Prothèse''' : Bah, Gérard, c'est Prothèse. Ouais, je crois que c'est clair. Tu fais 10 mois, tu pars la fleur au fusil, puis tu fais 12 mois, bon, tu pars la baïonnette dans le cul, alors...
'''Gérard''' : Ouais, bah, de toute manière, moi, j'ai fait 12 mois et je vais te dire une chose, que quand tu reviens, c'est chiant. Que ça soit 12 mois ou 10 mois, de toute manière, c'est vraiment des conneries, je sais pas pourquoi.
'''Phildar''' : Et t'avais des perm, ou pas ?
'''Gérard''' : Ouais, mais, je vais te dire, les perms, c'est 48 heures, et t'as une PLD, une... PLD, c'est une période de longue durée, c'est 10 jours.
'''Petit fion''' : Dis-moi, Gérard, je peux te poser une question ? Est-ce que ça t'a plu, l'armée ?
'''Gérard''' : Non, pas du tout, je me suis fait chier, je viens de le dire.
'''Petit fion''' : Pourquoi ?
'''Gérard''' : Bah, c'est la question. Est-ce qu'on s'amuse en faisant l'armée ?
'''Phildar''' : Ce sera la dernière question, après, on fera une petite conclusion rapide.
'''Gérard''' : Non, il reste encore...
'''Manu, Reego et Phildar''' : Non, non, non, on va abréger, on va abréger. On peut pas. On n'a pas le temps.
'''Gérard''' : Non, je te dis que...
'''Phildar''' : Non, Max, Max, il est venu, il a dit que tu gérais pas le débat, que c'était à chier, donc on va faire l'autre débat.
'''Gérard''' : C'est toi qui fous ta merde alors toi, tu vas commencer par la fermer.
'''Reego''', ''[sévère]'' : Non, Gérard, continue ton débat, c'est pas du tout la faute de Phil.
'''Gérard''' : Alors, est-ce qu'on s'amuse en faisant l'armée de nos jours ? On va demander ça à Canif.
'''Canif''' : Bah, écoute, ouais, je pense qu'il y en a qui s'amusent et d'autres qui s'emmerdent.
'''Gérard''' : Donc, c'est pour toi... de toute manière, même en faisant l'armée, on peut s'amuser avec ses copains, hein.
'''Phildar''' : Pendant la récré, ils font des jeux, non ?
'''Canif''' : J'ai des copains qui ont fait l'armée et puis ils m'ont dit que même si des fois, c'était un peu chiant, ils avaient quand même de bons souvenirs.
'''Gérard''' : Ouais, mais ça, de toute manière, tu gardes quand même à la fin, tu gardes quand même un bon souvenir aussi, hein.
'''Canif''' : Attends, faut quand même faire quelque chose, parce que si tu passes 12 mois à t'emmerder, faut quand même faire quelque chose.
'''Prothèse''' : Ouais, donc moi, je dis que dans l'armée, tu t'amuses pas beaucoup, parce que c'est clair qu'à part que si t'as des G.I. Joe ou des Small Soldiers, tu peux t'amuser.
'''Gérard''' : D'accord, je vois pas du tout le...
'''Canif''' : C'est hors sujet, hors sujet.
'''Croupion''' : Ouais, non, tu te fais chier à l'armée.
'''Gérard''' : Ah bah d'accord, toi, c'est carrément ta réponse.
'''Phildar''' : Bah oui, ça les passionne pas, les nanas l'armée. Faut abréger, magne-toi.
'''Gérard''' : Attends, toi, pour l'instant, tu vas la fermer ! Ok ? Tu vas fermer ta gueule, maintenant. Ça va être clair.
'''Prothèse''' : Je suis dans la hanche, moi.<ref name="context3"></ref> Gérard, c'est Prothèse, je suis dans la hanche.
'''Prothèse''' : Ouais, mais Prothèse, tu t'écrases, maintenant, s'il te plaît. Merci.
'''Prothèse''' : Gérard, assieds-toi bien, parce que là, j'ai un peu de mal.
'''Gérard''' : Bon, allez, Prothèse, tu me le dégages. Hop, terminé pour Prothèse, comme ça, il fera moins le con. Il fera le con chez lui, à Rouen. Face de pet ?
'''Phildar''' : Qu'on en termine.
'''Face de pet''' : Ouais, si, c'est cool, l'armée, tu fais le con, quoi.
'''Gérard''' : Ouais, bah, tu t'amuses ou pas ?
'''Face de pet''' : Bah ouais, parce que t'as pas envie de faire leurs conneries, alors que tu fais le con, donc tu t'éclates.
'''Phildar''' : Puis à l'armée, tu devais t'éclater, parce que tout le monde devait se foutre de ta gueule avec ta face de pet.
'''Gérard''' : Non, non, attends, attends, attends, oh ! Toi, Phildar, tu vas... Ouais, mais tu vas t'écraser un peu, toi.
'''Phildar''' : Magne-toi !
'''Gérard''' : Tu vas laisser finir les gens parler, OK ?
'''Manu''' : Trois minutes, trois minutes.
'''Gérard''' : Face de pet, vite fait, vite fait, là, on accouche, là.
'''Face de pet''' : Je peux finir, là ?
'''Prothèse''' : Gérard, je suis dans la hanche. ''[les trois garçons parlent en même temps, Gérard s'énerve en envoyant un CD vers Phildar et Manu]''.
'''Gérard''' : Prothèse, tu dégages ! Dégage-moi là Prothèse, là. Vous vous chalmez, là, ou je vous chale, moi, maintenant ? Oh ! Alors, face de pet, tu réponds correctement.
'''Face de pet''' : Ben, moi, ça y est, j'ai répondu.
'''Gérard''' : D'accord, général de mon cul, là.
'''Moncu''' : Ouais, répétez, première classe.
'''Gérard''' : On accouche.
'''Moncu''' : Répétez la question, s'il vous plaît.
'''Gérard''' : Bon, allez, vous me faites chier, je répète plus la question. Allez, conclusion. Hop, basta. Petit fion ?
'''Petit fion''' : Ben, écoute. J'ai écouté ton débat parce qu'en fait, je viens d'arriver sur l'antenne, donc j'ai eu le temps d'écouter très attentivement. Et ben, moi, je trouve que l'armée, c'est... En concluant vraiment très, très brièvement, parce que je sais que t'as pas trop le temps, mais il paraît que l'armée, c'est aussi excitant que de te rencontrer dans les chiottes de la loco.
'''Gérard''' : Alors, moi, je t'emmerde, petit fion, dégage, bonne nuit, au revoir. Général mon cul.
'''Moncu''' : Alors, c'était un très bon débat. Je voulais le dire. Et j'aimerais dire aussi un petit message pour... le dénommé Philippe qui...
'''Gérard''' : Non, non, il n'y a pas de message. Salut. Face de pet ?
'''Fae de pet''' : Ben, moi, est-ce que ce serait possible d'avoir Troufion, là, hors antenne ?
'''Croupion''' : Ben, pas de problème.
'''Phildar''' : C'est pas la conclusion, ça. Allez, Gérard, gère !
'''Gérard''' : Conclusion du débat, phase de pet, dernière fois.
'''Face de pet''' : L'armée, c'est de la merde.
'''Gérard''' : Bon, alors, ben, d'accord. Pour toi, c'est la conclusion. Croupion.
'''Croupion''' : Ouais ? Ben, débat pourri, et puis regardez la 6, il y a Maxou, quoi.
'''Gérard''' : Ah, ben, alors, c'est vrai. Alors, attends, Croupion. Moi, je vais te dire une chose. Si mon débat, c'est de la merde, et que tu regardes M6 à la place, dans ce cas-là, t'avais qj'à pas participer au débat. OK ?
'''Croupion''' : Je regarde le chef !<ref name="context4"></ref>
'''Gérard''' : Va bouffer tes croupions.
'''Prothèse''' : Mais arrête de bouger de la hanche.
'''Canif''' : Euh, ben, j'ai pas vraiment de conclusion. Mais enfin, si, quand même, c'était pas mal. Mais, euh, bon, voilà, c'était spécial, mais pas mal.
'''Gérard''' : Eh, quand je vous demande des conclusions, quand vous me dites, faites passer les autres, je voudrais bien que, quand tout le monde passe, que vous ayez quelque chose à dire. Parce que si c'est pour me dire, ah, ben, faut mieux écouter, regarder M6, il y a Max qui passe...
'''Canif''' : Eh, mais, Gérard, t'énerves pas sur moi, j'y suis pour rien.
'''Gérard''' : Non, mais, c'est pour Croupion que je m'adresse spécialement.
'''Canif''' : Ben, ouais, c'est pas moi qu'il faut engueuler, hein.
'''Gérard''' : Donc, on le sait, on l'a aussi dans les studios, Max. Alors, donc, voilà.
'''Reego''' : Gérard, j'ai une conclusion sur l'IRC. Alors, Davy One, qui donne sa conclusion, il dit, eh bien, si la plus petite unité de temps, c'est la milliseconde, la plus petite unité de longueur, c'est le millimètre, la plus petite unité de l'intelligence, c'est le militaire.
'''Gérard''' : Ah, ben, d'accord, c'est pas mal sa conclusion. Moi, conclusion, c'est dommage que, ben, qu'on a été forcés d'abréger sur la neuvième, parce que sinon, ça s'était bien passé dans...
'''Phildar''' : Moi, j'ai pas appris grand-chose, hein.
'''Gérard''' : Toi, t'as rien appris parce que t'es con, toi, c'est pas de ta faute. Donc, toi, de toute manière, tu resteras toujours cont toute ta vie, alors... T'attends onze heures et demie pour bosser au standard, donc ça sert à même pas... Donc, conclusion, c'est... Dans l'ensemble, ça s'était bien passé.
'''Phildar''', ''[soufflant et piafant d'impatience]'' : Magne-toi !
'''Gérard''' : Si t'es pas content, je t'emmerde. Tu prends une chose, tu prends tes clics et tes claques et tu te tasses chez toi. Comme ça, ça nous fera des vacances. Donc, conclusion, sinon, c'était pas mal dans l'ensemble. Je pense qu'on a atteint combien, là ?
'''Reego''' : On a perdu... On a perdu, suite à la fin du débat, où les gens, en partant, m'ont dit que c'était vraiment trop le bordel et trop con et trop nul. Donc là, apparemment, on est descendu sous la barre des 2000. On doit être 1000... Attends, je regarde... 1597.
'''Gérard''' : Ben, c'est dommage. C'est dommage que les trois derniers que tu m'as récupérés ont foutu la merde.
'''Reego''' : Ils me disent pas que c'est à cause des auditeurs. Ils me disent que c'est à cause de toi, Gérard.
'''Gérard''' : Non, c'est pas moi qui ai foutu la merde, c'est eux qui n'ont pas voulu répondre aux questions. Donc, voilà. Alors, le disque qu'on va s'écouter, c'est Gérard, du côté, avec la boule de travers. Et donc, vous pouvez nous appeler pour le deuxième débat qui va porter sur la prostitution.
'''Phildar''' : Ah, enfin, le débat.
'''Gérard''' : Attends, toi, tu vas rester à la réa, tu vas fermer ta gueule. Si, si, parce que je te veux pas en standard.
'''Manu''' : Ah si moi j'en ai marre, ça fait depuis 22 que je suis là, Gérard.
'''Phildar''' : Donc, on écoute le disque et vous pouvez appeler Manu, bien sûr, les numéros, Gérard, vas-y.
'''Gérard''' : C'est 0803 08 5000 et toujours le... www.funradio. Et on se retrouve tout de suite après.
'''Phildar''' : J'espère qu'il y aura des putes, quand même.
'''Gérard''' : Ben, toi, t'en fais partie. ''[musique]''
== Le débat sur la prostitution ==
=== Contexte ===
C'est donc un retour au calme qui marque ce soir-là l'émission. Ce deuxième débat ne dérogera pas à la règle. Nous sommes quand même dans un théâtre d'improvisation où chacun, qui ne le sait pas vraiment, débute. Cette émission peut donc être vue comme une période de rodage, avant une série beaucoup plus intense et inspirée. Le côté rodage ressort bien des conclusions, à la fois provocatrices et sincères, l'ennui gagnant les gens avec le profil inadapté de l'animateur. Ces conclusions semblent aussi poser les défis à venir, qui seront finalement très prégnants en ce dernier trimestre 1998.
=== Les personnages ===
* Franck Bargine : Max
* Gérard Cousin : Gérard
* Phildar et Manu
* Tony Morestin : Andouillette, Monsieur Claude, Fleur de lotus, Pulsor
* Goldo : Baracouda, Giclette
* Franck Bargine : queue de velours, Anus en sky, Max
* Arnet : Grosse Bertha, Kékéthos
* Laura : Sanizette, Bermuda, Laura Ingalls
* Mégane : Twingo
* Axel : Petit suisse, Pupute, Maquereau à la moutarde, Susson
* Pupute
=== Transcription ===
'''Gérard''' : Et voilà, 1h41, donc vous êtes toujours sur Fun Radio, donc c'est le deuxième débat et on salue les gens qui sont sur IRC. ''[Phildar, puis Manu, puis reego disent : Salut ! Salut !)''. On salue un peu tout le monde, on leur fait coucou, on les remercie d'être là.
'''Reego''' : On a redépassé les 2000, quand ils ont entendu qu'on changeait de débat, ils sont tous revenus et on est 2147 plus 3.
'''Gérard''' : Par contre, il y a un petit problème avec Andouillette, je suis désolé pour toi, mais je ne vais pas pouvoir te prendre pour le débat.
'''Phildar''' : Pourquoi ?
'''Gérard''' : Non, parce que 13 ans et demi, je ne veux pas, je ne veux pas. C'est tout. Non, non, non, il est hors de question.
'''Andouillette''', ''[voix de tête]'' : Non, mais moi je suis précoce, moi.
'''Gérard''' : Non, non, je ne veux pas savoir 13 ans et demi, je n'en veux pas dans le débat. J'ai dit non ! J'ai dit non !
'''Andouillette''' : Je fais des cunilingus moi !
'''Phildar''' : Bon, ok, je le jarte.
'''Andouillette''', ''[voix normale]'' : C'est pas croyab.
'''Gérard''' : Voilà. C'est tout, moi je ne prends pas des mineurs dans mes débats. Et donc le disque... Le disque qu'on venait d'écouter, c'est Gérard Ducoté avec la boule de travers et donc on va accueillir pour ça Barracuda, 21 ans, qui appelle de Lamotte Beuvron.
'''Baracouda''' : Ouais, mes respects du soir.
'''Gérard''' : On écoute Fun Radio sur 106.4.
'''Baracouda''' : Euh, et demi, et demi.
'''Gérard''' : 106.4, j'ai moi.
'''Baracouda''' : Ah bah et demi, ou alors je suis en avance.
'''Gérard''' : Ouais, bah c'est pas grave. Grosse Bertha, 22 ans, Bordeaux, 91.8. Sanizette, 19 ans, Bourricot. C'est la ville, ça ? On écoute Fun Radio 97.3. Eh oh, faut peut-être vous réveiller quand je vous parle et me dire si c'est bien les fréquences.
'''Sanizette''' : Bah je t'ai dit oui, hein. On se réveille.
'''Gérard''' : Bon, Sanizette, là. On se réveille.
'''Sanizette''' : Bah c'est moi je te dis réveille-toi, je t'ai déjà répondu.
'''Gérard''' : Ok. Alors Twingo, 21 ans, Paris, sur 101.9. Et Petit Suisse, 19 ans, Brest, 98.9. Donc le débat, ça porte sur...
'''Grosse Bertha''' : Les putes.
'''Gérard''' : Comment ? Sur la prostitution.
'''Grosse Bertha''' : Ouais, c'est pareil.
'''Phildar''' : Je tiens à rappeler, Gérard, quand même, qu'on a une prostituée avec nous.
'''Gérard''' : Ouais, je sais. J'ai vu. Donc tu cherches quelqu'un à la place d'Andouillette, s'il te plaît. Merci. Tu fais ton boulot. Vite fait, bien fait. Sinon, gare à ton matricule pour toi. Alors, la première question. Donc avez-vous déjà été voir une pute ? Si oui, pourquoi ? On va demander ça à Petit Suisse.
ar Petit suisseuais, ouais. J'y vais deux fois par semaine pour me vider les couilles. Et ouais, je prends un maximum de plaisir sur ça.
'''Twingo''' : Oui, alors moi, je suis prostituée de profession. Donc j'ai l'occasion d'en voir pas mal. Ouais, je vois mes copines qui sont prostituées aussi. Donc ouais, je vais les voir. Des fois, on se fait des bouffes. Donc je vois des putes. Voilà.
'''Sanizette''' : Ouais, bah moi, j'exerce occasionnellement pour arrondir mes fins de mois.
'''Grosse bertha''' : Bah non.
'''Gérard''' : Non, mais tu peux préciser ?
Bah non, parce que j'en suis une.
'''Gérard''' : Non, mais attends, t'es un mec. Alors, commence pas à dire des conneries.
'''Phildar''' : C'est un guignol.
'''Grosse bertha''' : Un peu, ouais.
'''Gérard''' : Ouais, bah, Phildar, quand je t'appellerai pot de chambre, tu le sortirais de sous le standard.
'''Phildar''' : Mais les prostituées, mec, ça s'appelle des guignols.
'''Gérard''' : Pour l'instant, tu vas éteindre ton micro et tu vas faire ton boulot comme je te le demande. Ok ? Alors, Barakouda ?
'''Baracouda''' : Ouais, bah moi, j'y vais comme tout le monde, pour l'hygiène, pour me vidanger, quoi.
'''Gérard''' : D'accord. Y'a pas d'autre solution que d'aller en voir... Tu peux me dire s'il y en a de ton côté, là-bas ?
'''Baracouda''' : Bah ouais, c'est quand même assez blindé au niveau putes, ouais, y'a tout ce qu'il faut, quoi, ouais.
'''Gérard''' : De quel côté, qu'il y en a ? Parce que je connais un peu...
'''Phildar''' : Rive gauche.
'''Baracouda''' : Tu connais les coins à putes ?
'''Gérard''' : Non, mais je connais la Motte Beuvron parce que j'y ai été, alors donc...
'''Baracouda''' : Ouais, mais je voudrais pas trop, trop citer parce que je voudrais pas qu'on me repère près du boulevard Jean Jaurès, quand même.
'''Gérard''' : D'accord, mais c'est pas mal, t'as bien précisé quand même le... T'as bien précisé quand même le nom de la rue.
'''Phildar''' : À la place d'Antouillette, on accueille M. Claude.
'''Claude''' : Bonsoir, je suis macro. Et je le revendique.
'''Gérard''' : Donc, pour toi, M. Claude ?
'''Claude''' : Ouais, bah écoute, moi, je mets des putes sur le marché. Et ce qui se passe, c'est que c'est sur le boulevard Ney.
'''Gérard''' : Alors, hé, encore une fois, je tiens à préciser que le prochain qui me donne un nom de boulevard gerbe, c'est clair, net, précis.
'''Claude''' : C'est pas valab.
'''Gérard''' : C'est pas valab ? Attends, toi, tu risques de gerber vite fait, toi. Je vais pas chercher qui c'est, hein.
'''Baracouda et Petit suisse''' : C'est horrib.
'''Grosse bertha''' : C'est susceptib.
'''Gérard''' : Oh ! On s'écrase.
'''Petit suisse''' : C'est inaudib.
'''Gérard''' : On s'écrase. Donc, M. Claude, pour continuer.
'''Claude''' : Ouais, donc, excuse-moi, j'étais un peu en débordement. Je voulais faire un peu de pub pour mon commerce. Je suis désolé. Donc, oui, tout à fait. Mais je respecte ces femmes à leur juste valeur de traînées.
'''Twingo''' : S'il vous plaît ! Je vous demande juste d'avoir un langage correct en parlant de nous. On n'est pas des...
'''Claude''' : Ouais, mais toi, t'es pas de série déposée, toi.
'''Gérard''' : Qui c'est qui s'amuse à dire des saloperies, là ? Allez, hein. Barakouda. Barakouda, bonne nuit.
'''Phildar''' : Non, c'est pas Barakouda, Gérard. Gère un peu, je vais essayer de voir qui c'est, mais fais quelque chose, quoi.
'''Gérard''' : Ouais, mais attends, toi, je t'ai dit d'éteindre ton micro, et c'est tout.
'''Manu''' : Gérard, pour répondre au débat, on a un petit sondage, allez. Donc, à la question pour ou contre la prostitution, 20% des gens...
'''Gérard''' : Attends, Manu. Ouais. Les pour ou contre, ça commence à me casser les...
'''Manu''' : Oui mais regarde, il est bien celui-là, on va avoir des réations. 20% des gens sont pour Alain Prost, 30% n'ont pas le permis, et 50% n'ont jamais été routiers, donc ne connaissent pas les prostituées.
'''Gérard''' : Alors, toi, Manu, ta réaction, là, ouais, ça, c'est de la connerie, donc c'est pas la peine d'intervenir pour me donner des réactions...
'''Manu''' : Je sais pas, ça aurait pu étayer ton...
'''Gérard''' : Alain Prost n'a rien à voir dans le débat de la prostitution, ok ? Alors, c'est pas la peine de dire des conneries, d'accord ?
'''Baracouda''' : Les routiers, ils ont quand même à voir, hein.
'''Gérard''' : Bon, toi, tu t'écrases pour l'instant, ok ?
'''Baracouda''' : Non mais attends, j'ai été routier et je me suis arrêté voir des putes dans les camionnettes, je sais de quoi je parle.
'''Gérard''' : Ouais ben de toute manière, il y en a un peu partout, hein.
'''Baracouda''' : Des camionnettes ou des routiers ?
'''Gérard''' : Ok, bon, qui c'est qui veut rajouter quelque chose ? Il y a une nana qui voulait parler, c'est qui ? Bon, c'est bien, quand je demande qui veut parler, il n'y a plus personne. C'est pas mal.
'''Claude''' : J'ai des bons de réduction sur les fellations, si ça intéresse quelqu'un. Les 10 premiers, plus un invité, j'ai une réduction sur les fellations. Prisca et Zoubira.
'''Gérard''' : D'accord. Ok, on a très bien compris le message. On se calme un peu, là, ou quoi ? Donc, alors, moi, je vais répondre quand même à la question. Je vais quand même répondre à la question, parce que avez-vous déjà été voir des putes, si oui, pourquoi ? Moi, je peux vous dire une chose, que je n'ai pas eu l'occasion d'y aller.
'''Manu''', ''[incrédule]'' : Oh, Gérard. Tu peux nous le dire, tu peux nous le dire. On est entre nous.
'''Gérard''' : Non, non, non. Non, mais ça y est, j'ai répondu.
'''Sanizette''' : Elles ne veulent pas de lui.
C'est vrai, ça t'es peut-être arrivé de te faire recaler par une pute, non ?
'''Gérard''' : Non, non, pas du tout. Deuxième... Non, mais... Quand vous voulez jacter, vous donnez vos noms, parce que j'en ai marre d'entendre...
'''Baracouda''', ''[voix efféminée]'' : Ouais, c'est Polo, t'es un menteur.
'''Gérard''' : Non, il n'y a pas de Polo dans le débat. Bon, attends, toi, tu vas commencer à t'écraser. Hein ? Ok ?
'''Baracouda''', ''[voix efféminée et accent espagnol]'' : Oui, c'est Pepito, je voudrais dire...
'''Gérard''' : Écrase ! Eh oh, Phildar. Putain, c'est pas possible de travailler avec un con comme lui, hein. Non, mais quand vous aurez fini vos conneries, on pourra peut-être... Eh, Phildar, tu gères un peu, là, ou tu veux faire le con ?
'''Phildar''' : Mais quoi, je gère, je dis rien.
'''Reego''' : Gérard, pour revenir au débat. Pour revenir au débat, il y a Aréa sur IRC qui te demande si tu connais personnellement une prostituée.
'''Gérard''' : Non, pas du tout.
'''Twingo''' : Et Sandy ?
'''Gérard''' : Euh, qui c'est qui vient de dire ça ?
''Phildar ''' : Ça, c'est une meuf, hein, je l'ai entendue.
'''Gérard''' : Euh, je te préviens, Phildar ! Troisième édition. Si ça recommence à parler de Sandu, tu me vires ou Sanizette Twingo, je cherche pas à qui savoir. Ok, alors, je te signale que tu as intérêt à te réveiller quand je te parle, parce que tout à l'heure, tu vas morfler. Que pensez-vous des tarifs selon ce que vous voulez faire ? On va demander à Barakouda.
'''Baracouda''' : Ouais, je te disais, moi, j'ai une carte d'abonnement. Donc, j'ai souscrit à la carte Tepu. J'ai droit à une fellation gratuite pour 3 sodomies achetées. Ça vaut relativement le coup. Ça marche aussi à Paris, dans tous les coins. C'est intéressant.
'''Grosse Bertha''' : Alors, moi, mes tarifs... ''[il explose de rire]''. Pardon.
'''Gérard''' : Bon, je sens que tout à l'heure, je vais m'énerver. Je vais en saquer déjà vite.
'''Grosse Bertha''' : Je pense que les tarifs varient entre 5 et 10 000 francs sur l'avenue Foch, de Paris.
'''Gérard''' : Alors, Grosse Bertha, au revoir ! Ça t'apprendra de préciser. J'avais bien précisé de ne plus donner de nom. Grosse Bertha, terminé.
'''Phildar''' : Il n'y a plus de pute avenue Foch. C'est terminé, ça, Gérard.
'''Sanizette''' : Oui, en fait, je te disais, je pratique à l'occasion pour arrondir mes fins de mois. Et en général, les tarifs, ça dépend des putes. Ça dépend de ce qu'elles font aussi. Et moi, en général, je demande pas mal. Alors, je t'explique pourquoi je demande pas mal. Honnêtement, en toute franchise, moi, j'aime la b... Donc, forcément, je me donne à fond. Et donc, forcément, on revient me voir très souvent. Et donc, forcément, je demande mes tarifs.
'''Reego''' : Gérard, il y a Yopi sur IRC qui te demande si tu connais la différence entre une pute et une pizza. La pizza, tu peux l'avoir sans champignon.
'''Twingo''' : Oui, oui, oui. Moi, je suis... Bon, je suis prostituée de profession. Mais je fais pas n'importe quoi non plus. Donc, la pipe à 100 balles, c'est même pas la peine d'y penser. Moi, mes tarifs commencent à 10 000. Et en fait, je fais 5-6 passes dans le mois.
'''Petit suisse''' : Ouais, moi, j'ai des tickets Sodo. Donc, j'ai des promotions sur les Sodo.
'''Twingo''' : Je rappelle que je ne prends pas les tickets...
'''Gérard''' : Non, mais attends, Twingo. Petit Suisse, je crois qu'il a pas tellement compris la question, lui.
'''Petit suisse''' : Si, si, j'ai des tickets Sodo pour avoir des réductions sur les tarifs.
'''Gérard''' : Non, mais que pensez-vous des tarifs selon ce que vous voulez faire, abruti ?
'''Petit suisse''' : Ah, ben, je pense que c'est clair.
'''Gérard''' : Non, mais je crois... Je crois que pour l'instant, vous avez... Je pense que vous déconnez à cette heure-ci. Non, presque pas.
'''Manu''' : C'est pas le genre de la maison.
'''Gérard''' : Non, pas du tout. C'est pas le genre de la maison. Non, presque pas. Oui, oui, c'est ça.
'''Phildar''' : Gérard, tais-toi, écoute-moi. On accueille à la place de... On accueille à la place de M. Claude qui est parti se coucher, queue de velours.
'''Gérard''' : Et à la place de...
'''Phildar''' : La grosse bertha ? je cherche encore. Attends, c'est pas évident à trouver.
'''Gérard''' : Alors, donc, queue de velours pour toi ?
'''queue''', ''[en pleine jouissance]'' : Excuse-moi, je me faisais une queue.
'''Gérard''' : Je pense que tout à l'heure, tu vas retourner d'où que tu viens.
'''Queue''' : Fais gaffe, que je te sperme pas dessus, quand même.
'''Gérard''' : Ouais, ben, moi, je te dis fais gaffe parce que tout à l'heure, tu vas retourner d'où que tu viens.
'''Sanizette''' : Il paraît que Sandy elle fait pareil.
'''Gérard''' : Alors, Sanisette, c'est terminé pour toi. Au revoir. Hop. Voilà. Bonne nuit pour elle. Terminé, ça y apprendra de parler de Sandy.
'''Phildar''' : Ok, je la remets.
'''Gérard''', ''[menaçant]'' : Je te dis de la gerber. Et tu fais ton boulot correctement avant que je t'éclate ! Ok ? Queue de velours pour toi ?
'''Queue''' : Les tarifs sont variés en fonction de Paris ou... la province. Moi, j'ai le souvenir d'une époque, je t'écoute depuis très longtemps, où apparemment, pour 1200 francs, on pouvait avoir une sodomie plus un breakfast. ''[rires des auditeurs]''.
'''Gérard''', ''[ironie rageuse]'' : Oui. Tu vois, ça fait rire les autres abrutis derrière, mais tu veux dire ça pour qui ?
'''Queue''' : Pour toi, je me souviens qu'à une époque, il y avait des tarifs, c'était 50 francs la pipe et 1200 francs pour un breakfast. C'est un peu cher, quand même.
'''Gérard''' : Non, mais à mon avis, t'es vachement au courant de cette publicité, donc je me demande si...
'''Queue''' : Parce que t'en avais parlé à l'antenne il y a deux ans, espèce de con.
'''Gérard''' : Espèce de con ? je t'emmerde, alors tu dégages queue de velours. Merci. Voilà.
'''Phildar''' : Bon, Gérard, on a des nouveaux, on a Kékéthos...
'''Gérard''', ''[repoussant la feuille vers Phildar]'' : Non, non, mais tu me reefais une fiche...
'''Phildar''' : À chaque fois tu me fais le coup, tu sais pas écrire ou quoi ?
'''Gérard''' : Non, non, mais tu te démerdes, tu me... ''[les auditeurs et Manu rient en saluant l'auditeur. Manu lance un son disant : il est où Michel]''. Je sens que Phildar, tout à l'heure, avant la troisième question, je vais te mettre une gaufre. Tu vas t'en souvenir, toi. Bon, une question IRC, non ?
'''Reego''' : Oui, si tu veux. Alors, est-ce que la carte Imaginaire peut servir pour les putes ?
'''Gérard''' : Non.
'''Grosse Bertha''' : Moi, j'ai une question pour le mec de l'Internet : Gringo, tu peux me trouver un site sur Jacques Vabre ?
'''Gérard''' : Alors, toi, je vais te dire une chose, que si t'as un truc à demander à Reego pour le site Internet, comme ça, tu fais le 01 40 521 521. Voilà. Comme ça, tu seras tout de suite renseigné. Merci, Gérard.
Et vous pouvez toujours, bien sûr, laisser des messages sur le répondeur. J'avais oublié de le préciser. Donc... Alors, croyez-vous qu'il faut laisser ouvert les maisons closes ? On va demander ça à Barracuda.
'''Phildar''' : Non, elles sont fermées.
'''Gérard''' : Phildar, tu cherches des gens et tu fermes ta gueule pour la deuxième fois.
'''Reego''' : Gérard, sur IRC, on me dit que si une maison est close, elle ne peut pas être ouverte.
'''Gérard''' : Ouais, mais il y en a qui sont ouvertes ou fermées. Mais je pense que les trois quarts, maintenant, sont fermées. On va demander à Barracuda. ''[ingle de Barracuda. Gérard prend un jouet en plastique et le jette vers Manu qui esquive]''.
'''Reego''' : Il a pris le Goldorak en platique et il a fait un Fulgur au poing sur Manu.
'''Phildar''' : Gérard, on fait de la radio, metc ! Et donc à la place de Sanizette, on accueille Bermuda. Et à la place de Queue de Velours, on accueille Anus en Sky.
'''Gérard''' : Alors, salut à tous ceux qui viennent de venir. Alors, Barracuda, pour toi ? ''[jingle]''.
'''Reego''' : Pour revenir au débat, il y a Turpentine qui te demande, Gérard, vu que tu parles de maisons closes, est-ce qu'il y a des immeubles clos ?
'''Gérard''' : Non, pas à ma connaissance.
'''Barracuda''' : Ouais, c'est Barracuda. Ouais. Je voudrais encore mon jingle, un coup, là.
'''Gérard''' : Non, tu réponds à la question, s'il te plaît.
'''Barracuda''' : Bon, d'accord. Ce que je te propose, c'est un compromis, en fait, les maisons closes, tu les laisses entr-ouvertes. ''[un auditeur lance des allô ponctuant toute cette phrase et la suite]''.
'''Gérard''' : Et quand vous aurez fini vos conneries, vous nous le direz. ''[le sketch des gens n'entendant pas Gérard se déclenche. Il dure une trentaine de secondes]''. Barracuda ! C'est la troisième fois... Barracuda, c'est la troisième fois que je te fais appeler.
'''Barracuda''' : Donc, c'est Barracuda de l'agence Tourisque. Ce que je voulais dire, c'est que je te propose un compromis. Donc, les maisons closes, au lieu de les ouvrir, tu les laisses juste entre-ouvertes. Ça suffira, quoi, je pense. Ils vont se faufiler.
'''Kékéthos''' : Moi, les maisons closes, je trouve ça abominable. Et je trouve qu'on devrait toutes les fermer.
'''Bermuda''' : Moi, je trouve qu'il faudrait les laisser ouvertes, c'est vachement excitant comme truc. Qu'est-ce que t'en penses, toi, Gérard ?
'''Gérard''' : Moi, personnellement, j'en ai rien à foutre. Qu'elles soient fermées ou ouvertes, j'en ai rien à foutre, c'est pas mon problème.
'''Reego''' : À ce propos, ya Yopi, sur IRC, qui demande s'il faut une clef pour rentrer dans les maisons closes.
'''Gérard''' : Non, c'est les personnes qui les ont avec eux.
'''Phildar''' : Il faut une passe.
'''Reego''' : On m'a dit que c'était plusieurs euros.
'''Bermuda''' : J'aurais voulu savoir : si je travaillais dans une maison clos, tu serais susceptible de passer ?
'''Gérard''' : Non.
'''Bermuda''' : Pourquoi ?
'''Gérard''' : Parce que j'ai déjà ce qu'il me faut, j'ai trouvé ma...
'''Baracuda''' : T'as déjà ta pute.
'''Gérard''', ''[épidermique]'' : Alors, qui c'est qui vient de...
'''Baracuda''', ''[voix légèrement déformée]'' : Non, c'était moi, c'était moi. C'est Zobie le lépreux, c'est moi. Je fonds dans la bouche.
'''Phildar''' : Je vais essayer de le trouver, Gérard. Continue.
'''Gérard''' : Je sens que vous commencez déjà à foutre la merde. Troisième question, je sens qu'on va changer les auditeurs.
'''Twingo''', ''[ponctuée à chaque phrase par des hmm affirmatifs de Petit suisse, allant jusqu'à intervenir par un Carrément, comme absorbé par la conversation]'' : Oui. Moi, j'ai commencé ma carrière dans ce genre d'établissement. Il y avait... c'était mignons, il y avait des nains de jardin dans la cour et tout. Mais voilà, elle a fermé et je me suis retrouvée à la rue, donc il a fallu que je me débrouille par mes propres moyens. Donc au début, c'était un peu dur parce que j'habitais dans une petite chambre de bonne. On avait juste un petit lavabo de merde. Et puis bon, là, je me suis fait mal. Et puis je me suis dit, attends, ma fille, tu prennes ta vie en main. Faut que t'assures, quoi.
'''Gérard''' : Attends, Twingo, Twingo. Twingo, cinq minutes. Celui qui s'amuse à jacter, alors que la personne parle, va virer, mais vite. Je vais pas chercher.
'''Reego''' : Gérard, pour revenir dans le thème du débat, il y a Davy One, encore lui. Il y a Davy One sur l'IRC qui te demande s'il faut payer un supplément à la prostituée si on veut qu'elle nous mette un coton-tige. ''[Gérard appuie sur le bouton du micro de Phildar pour l'éteindre et Manu déclenche une musique de fête]''.
'''Manu''' : Qu'est-ce que t'as touché, Gérard ? Qu'est-ce que t'as fait, là ? Oh là là, il a tout cassé.
'''Reego''' : T'as même pas entendu ma question.
'''Gérard''' : Non, parce que j'étais en train de regarder ce qu'il était en train de faire, Manu, à la réa, en train de faire des conneries.
'''Reego''' : Je répète. Il y a Davy One qui te demande le prix d'un supplément pour une prostituée quand tu veux qu'elle te mette un coton-tige.
'''Gérard''' : Non, j'y répondrai pas du tout. Comme ça, ça va aller clair et c'est vite répondu à sa question à celui-là. On va demander à Anus en Sky ?
'''Anus''' : Concernant les maisons closes, nous, on a eu des problèmes. Moi, j'ai travaillé pour une maison close qui a bien marché dans les années 70. Et le problème qu'on a eu, c'est qu'on a eu effectivement une prostituée qui s'est échappée.
'''Gérard''', ''[sur le qui-vive]'' : Oui, alors ?
'''Anus''', ''[ne pouvant s'empêcher de rire]'' : Non, mais on la recherche aujourd'hui et on croit qu'elle traîne du côté de Suresnes.
'''Gérard''' : Alors, Anus en Sky, terminé pour toi. Au revoir. Terminé pour toi. C'est fini.
'''Anus''' : Elle s'appelait Christine.
'''Gérard''' : Tu dégages. Allez, hop, tu me le vires. Terminé pour lui.
'''Reego''' : Il a pas dit qu'elle était grosse.
'''Gérard''' : Petit suisse pour finir.
'''Petit suisse''' : Moi, je trouve ça inadmissib, carrément, les maisons closes. Surtout que moi, la pute que je fréquente, elle s'appelle Pupute. Moi, j'aimais bien quand elle faisait les journées cuisses ouvertes.
'''Anus''' : Et Gérard, ta copine, comment elle est ?
'''Gérard''' : Elle t'emmerde, ma copine, tu vois ? C'est clair, net et précis, ce coup-là. Tu vois ? Elle t'emmerde et elle te chie dans la gueule. ''[tout le studio est outré]''.Alors, maintenant, celui qui s'amuse à déconner avec ça va dégager tout de suite. Ça commence à bien faire. Alors, Phildar, tu vas faire ton boulot correctement et tu vas fermer ton micro.
'''PHildar''' : C'est pas humain de chier dans la gueule.
'''Reego''' : Gérard, on a perdu environ 500 personnes quand t'as parlé de ce que t'as dit.
'''Manu''' : C'est une honte.
'''Anus''' : C'est vraiment de la merde, ton débat. ''[Gérard se lève, va vers Phildar pour le secouer et éteindre son micro sans ménagement]''.
'''Manu''' : Mais Gérard, viens t'asseoir, il n'a rien fait, PHildar. Lui tape pas dessus.
'''Gérard''' : Tu vas le fermer, le micro, je te préviens, toi. Donc, quatrième question. Celui que ça plaît pas, il peut raccrocher, on prend d'autres personnes. Il y a du monde derrière qui attend. ''[Anus lance un allô intempestif entre chaque phrase, empêchant Gérard de parler]''. Oh, il va se taire, lui, là. Alors, faut-il se prostituer pour avoir du boulot et on va s'écouter Dido voix, avec une scie scie pour se raser les boules. ''[Musique. La musique baisse légèrement après quelques secondes, alors que gérard sort du studio, se retourne et crache à Phildar sa phrase]'' : ça va être clair, la semaine prochaine tu dégages ! Toi, tu fais u boulot de merde ! ''[la musique reprend]''.
'''Gérard''' : Voilà, vous nevez d'écouter Dudu bois avec Une scie pour raser les boules? Et vous pouvez toujours nous appeler au 0800 70 5000 et 0803 08 5000, toujours l'IRC ww.funradio et on attend vos questions sur le débat sur la prostitution. Donc on va récupérer pour ça Barakouda, en espérant que vous vous êtes calmés durant ce disque.
'''Barracuda''' : Ouais, je suis là, j'aimerais bien entendre mon jingle. ''[jingle. Satisfaction]''. Ah !
'''Gérard''' : Bon, Manu ! Manu ! C'est plus la... C'est plus la peine de le passer quand il te le demande, parce que sinon, il va gerber, lui. Ça commence à m'énerver.
'''Kékéthos''' : Je peux pas avoir un jingle ?
'''Gérard''' : Kékéthos, tu tu t'écrases. Pour l'instant, je récupère tous ceux qui étaient là. OK ? Bon, alors, Barakouda, t'es toujours là.
'''Barracouda''' : Toujours présent avec mes chaînes en or.
'''Gérard''' : Kékéthos ? Bermuda ? Twingo. ''[Bermuda simule une jouissance]''. Oh, tu te calmes, Bermuda. Bon, Phildar, soit tu me les calmes, ou soit tu me prends d'autres personnes, parce que ça commence à gonfler. Ça commence à me gonfler.
'''Reego''' : Gérard, est-ce que tu peux répéter la question, s'il te plaît ?
'''Gérard''' : Oui, on va finir. Twingo, toujours là ? Petit Suisse.
'''Phildar''' : À la place d'Anus en Sky, on accueille Fleur de Lotus.
'''Gérard''' : Je te préviens, n'essaye pas de les repasser sous d'autres noms, je t'ai dit. Alors, faut-il se prostituer pour avoir du boulot ? Voilà la question qu'on demandait sur l'IRC. Donc, on va demander à Barakouda.
'''reego''' : Non, non, ils n'ont jamais demandé ça.
'''Barracouda''' : Ok, je te dis objectivement, dans la vie, si t'as une sale gueule et que tu peux rien faire d'autre, moi, je crois que, ouais, vaut mieux.
'''Gérard''' : Ok. Donc, pour toi, il faut mieux avoir une sale gueule et puis se prostituer.
'''Barracouda''' : Bah, écoute, si t'as pas le choix et que t'es obligé de vivre à la sueur de tes fesses, bah, écoute, faut assumer, quoi. Je pense que d'autres sont passés par là avant, n'est-ce pas ?
'''Kékéthos''' : Non, je pense pas que ce soit un vrai métier, quand même. Mais c'est bien pratique.
'''Bermuda''' : Bah, écoute, moi, plus ça chauffe entre mes fesses et mieux c'est quoi.
'''Kékéthos''' : Bah, écoute, tu me files ton number.
'''Gérard''' : Oh là là là là là. Euh, ça commence à bien faire, là. Vous allez vous calmer avec les gens quand ils parlent, ok ?
'''Barracouda''' : Mais c'est que des cochonnes, Gégé.
'''Gérard''' : Ouais, bah, tu t'écrases, toi. Twingo ? Pour toi ?
'''Twingo''' : Bah, moi, c'est un vrai métier. Donc, je peux pas me permettre de dire que plus ça chauffe, je chauffe. Bon, c'est vrai, j'adore le cul, mais bon. Moi, non, c'est un vrai métier. Donc, moi, je fais ça très sérieusement. Très, très sérieusement.
'''Petit suisse''' : Toi, tu déclares pas tout à tes impôts.
'''Twingo''' : Exactement. Je me fais payer en liquide.
'''Baracouda, puis Petit suise puis Kékéthos''' : Attends, Gégé. Toi, tu fais du black. Moi, je veux bien te payer en nature.
'''Barracouda''' : Gégé, ouais, c'est Barracuda. Ouais, je voulais savoir si c'est un vrai travail, il y a quoi ? Il y a des ASSEDIC<ref name="hist12"></ref> pour les putes ? Il y a une retraite pour les putes ?
'''Twingo''' : Les prostituées payent une retraite, tout à fait.
'''Barracouda''' : Où c'est que tu cotises ? À la banque du fonds ?
'''Twingo''' : En fait, non. Tu as une assurance personnelle.
'''Petit suisse''' : Est-ce qu'on touche les sodomisations sociales ?
'''Twingo''' : C'est remboursé à 80 %.
'''Fleur de lotus''' : Est-ce que t'as un compte épargne à la banque du sperme ?
'''Twingo. ''' : Ouais. Je vais faire des dépôts et des retraits assez souvent.
'''Gérard''' : Alors, petit suisse pour toi ?
'''Petit suisse''' : Ouais, ben, moi, j'en profite parce qu'en tant que client, quoi, mais bon, si elles veulent faire ça, quoi, qu'elles continuent.
'''Fleur de lotus''' : Ben, écoute, moi, je me prostituerais avec grand plaisir, mais je trouve ça un peu dégradant. Et ça ne m'empêche pas du tout d'aller aux putes sans problème.
'''Twingo''' : Chez les putes oh ! pas aux putes.
'''Gérard''' : Ouais, on va chez les putes et au cul. OK. Alors, moi, je peux vous dire une chose. Celui qui veut faire son boulot comme ça, ben, tant pis.
'''Petit suisse''' : Tu le feras toi ?
'''Gérard''' : Non, personnellement, non. ''(Phildar sort du studio]''. Phildar ? Phildar, si ça ne te dérange pas, tu...
'''Manu''' : Non, mais il est parti chercher un truc, ce n'est pas grave. Petit sondage qui est bien, par contre, là. À la question... Non, ne rigolez pas. À la question, êtes-vous déjà allé voir une prostituée ? 25% des gens y sont allés avec leur femme. 35% y sont allés avec leurs enfants. Et 40% ont demandé, mais elle Alain Prost y tu es qui ?
'''Gérard''' : N'importe quoi. Cinquième question. Pourquoi que les jeunes se mettent à la prostitution ? On va demander à Fleur de Lotus.
'''Fleur de lotus''' : Écoute, la prostitution, c'est le chemin le plus facile pour gagner de l'argent. Quand tu vois que, je ne sais pas, il y a des jeunes qui veulent être cadres, c'est bac+2. Alors que pute, tu te mets sur le trottoir, tu écasses les cuisses et c'est parti.
'''Petit suisse''' : C'est b... + 9.
'''Barracouda''' : B... dans le c...
'''Gérard''' : Petit Suisse ? ''[un auditeur raccroche]''.
'''Manu''' : Bien, bien. Comment je fais, maintenant ? Il n'y a plus personne au standard.
'''Reego''' : Gérard, sur IRC, il y a un Réa qui te demande s'il y a des réductions pour les prostituées après 19h, comme France Télécom.
'''Gérard''' : Non. Je ne vois pas de réduction. Alors, on va demander à Twingo.
'''Manu''' : Pas de marque, Gérard. Faut arrêter, là.
'''Gérard''' : Elle n'a qu'à prendre un autre nom qu'une marque de voiture, c'est tout.
'''Twingo''' : Oui, moi, j'ai choisi d'être prostituée parce que moi, j'avais envie de travailler dans la rue. Donc, c'était ça ou pervanche. Donc, mettre des PV, ce n'est pas trop mon truc. Donc, j'ai choisi prostituée.
'''Fleur de lotus''' : T'as eu de la chance, t'aurais pu être pervanche.
'''Twingo''' : Oui, j'ai eu de la chance. Et tu sais, il y en a, elles sont trop moches pour faire putes. Elles sont pervanches.
'''Bermuda''' : Moi, j'ai commencé à faire ça à l'âge de 18 ans. J'en ai 21. Et je m'aperçois, en fait, avec les années qui passent, que plus j'en ai eu et plus j'en redemande.
'''Kékéthos''' : Espèce de cochonne.
'''Gérard''' : Oh, ça suffit derrière, s'il vous plaît. Parce que là, ça commence à bien faire. Maintenant, vous allez vous calmer. Vous allez éviter de dire des cochonneries comme ça. OK ?
'''Fleur e lotus''' : Tu fais un débat sur les putes, tu veux qu'on parle de poésie ?
'''Gérard'' : Si ça ne te plaît pas, toi, tu peux raccrocher ton téléphone. Ça nous fera des vacances.
'''Phildar''' : À la place de Petit Suisse, on accueille Pupute.
'''Pupute''', ''[garçon à la voix efféminée et maniérée]'' : Bonsoir, Gérard. Salut, ça va ?
'''Gérard''' : Qu'est-ce que ça peut te foutre ? T'es médecin ?
''Pupute ''' : Oh là là, quelle vulgarité !
'''Gérard''' : Alors, on va demander... Tiens, on va demander... On va demander à toi, pourquoi que les jeunes se mettent à la prostitution ?
'''Pupute''' : Bah, qu'est-ce que j'en sais moi ? En tout cas, moi, j'ai fait la pute. Parce que j'avais pas d'autres moyens de gagner de l'argent. Et j'adore les gros sexes.
'''Kékéthos''' : Non, je pense que les jeunes qui se mettent à la prostitution, c'est pas vrai. Il y a beaucoup plus de vieilles mamies toutes pas belles qui prennent un fric fou. Et je comprends pas pourquoi d'ailleurs...
'''Phildar''' : Non, c'est faux. C'est faux.
'''Gérard''' : Bon, Phildar, tu t'écrases pour l'instant. Je donnerai mes réactions, moi-même.
'''Kékéthos''' : Moi je connais Ginette, qui est avenue BIP. Et elle, voilà.
'''Gérard''' : Et Barakoula, pour finir ? ''[jingle]''. Bon, Manu, ça suffit !
'''Manu''' : J'aime bien cette zik.
'''Gérard''' : Ouais mais moi, j'en ai ras le bol. Eh non, mais vous avez décidé de gâcher les débats ou quoi, ce soir ?
'''Reego''' : Gérard, j'ai un sondage qu'on m'a rapporté sur Internet par Kevin Klein. Alors, quels moyens de paiement utilisez-vous ? ''[Max rentre dans le studio, mécontent de la gestion par Gérard et voulant abréger]''.
'''Max''' : Non, mais tu gueules, tu dis, mais tu gueules !
'''Gérard''' : Lui, il fout sa merde à cause de barracuda, l'autre, il fait la moitié du boulot. Pour l'instant, il y a que Reego. ''[les audituers ponctuent en disant c'est abominab]''. Oh, vous fermez vos gueules, maintenant.
'''Reego''' : Donc, j'ai un sondage, vite fait. Quels sont les moyens de paiement que vous utilisez lorsque vous allez voir une prostituée ? 55% utilisent la carte bleue, 12% la carte jeune et 15% la carte routière.
'''Gérard''' : Non, bah, ça, normalement, les cartes jeunes et les cartes routières, ça passe pas. Bon... Oh, il y en a... Eh, vous allez commencer par vous calmer, maintenant. Maintenant, c'est à Baracouda de réagir.
'''Baracouda''' : Ok, bah, alors, moi, je voulais dire déjà que les putes, moi, je paye en liquide. Déjà, c'est clair. Deuxièmement, je suis tout à fait d'accord, il y a beaucoup de vieilles qui se prostituent et je sais pas si tu t'es déjà fait...
'''Manu''' : Attends, attends, excuse-moi. Une seconde Baracouda ! ''[jingle]''.
'''Gérard''' : Manu ! C'est la dernière fois que tu me mets ça ! Bon, Baracouda, tu dégages ! Manu, Manu... Baracouda, terminé pour lui, ça lui apprendra. Et Manu, t'arrêtes, s'il te plaît.
'''Fleur de lotus''' : Ouais, va nous chercher un cigare.
'''Gérard''' : Je sens que tout à l'heure, je vais rester avec Twingo et Bermuda. Les autres, vous allez dégager.
''' ''' : Et tu l'as Mac Gyver ?
'''Pupute''' : Eh, c'est Pupute, tu vas pas me laisser tomber ?
'''Phildar''' : J'aimerais bien qu'on suive un peu le débat et qu'on arrête de délirer.
'''Gérard''' : Ouais, bah, toi, le premier, tu fais ton boulot correctement.
'''Phildar''' : Attends, je te défends, merde.
'''Gérard''' : Ouais, non, mais tu vas me chercher une autre personne que Baracouda, vite fait.
'''Phildar''' : J'y arrive pas.
'''Gérard''' : Tu te démerdes, y a des lignes qui sonnent. Alors, donc, y a... Qui c'est qui a pas répondu ? Tout le monde a répondu ?
'''Pupute''' : Non, j'ai pas répondu, moi, Gérard.
'''Gérard''' : Non, t'as déjà répondu, je t'ai passé en premier. Alors, donc, je peux vous dire une chose, qye ya beaucoup de jeunes qui se mettent à la prostitution, maintenant, on sait pas pourquoi, ça... il faudrait voir, parce que c'est quand même inadmissible d'avoir des jeunes qui s'y mettent aussi mal.
'''Manu''' : T'as pas fait de recherches, Gérard, sur ce sujet ? Tu sais pas pourquoi, toi ? T'as bien une petite idée, ça vient d'où ?
'''Gérard''' : Bah, si ils ont envie de se prostituer, c'est leur problème, c'est pas le mien, hein, personnellement. Moi, là-dessus, j'irais pas me foutre à la prostitution comme ça, hein.
'''Phildar''' : C'est-à-dire ? Habillé comme ça ?
'''Gérard''' : Toi tu cherches des gens et vite fait, toi. Alors, les stars d'aujourd'hui se prostituent-lles ? On va demander à Kékéthos.
'''Kékéthos''' : Mais n'importe quoi, les stars, elles se prostituent pas. Elles ont un max de pognon, et voilà. Donc, elles ont pas besoin d'argent. À la rigueur, elles peuvent le faire gratuitement.
'''Gérard''' : Bon, mais ça, ça m'étonnerait.
'''Kékéthos''' : Moi, je sais que la dernière fois, je me suis tapé Pamela Anderson. Bon, le seul truc qui m'a repoussé, c'est ses pieds. Mais sinon, elle m'a pas demandé d'argent.
'''Manu''' : J'ai pas Alerte à Malibu, comme zik.
''' Gérard'' : Non, non, mais... Manu, t'arrêtes un peu tes conneries, s'il te plaît. OK ?
'''Kékéthos''' : La prochaine fois, je m'appelle Beach.
'''Gérard''' : Ouais, bah, la prochaine fois, tu vas t'appeler... Ferme ta gueule, maintenant. Bermuda ?
'''Bermuda''' : Ouais, bah, moi, j'ai déjà eu des clients, effectivement, des stars. Des politiciens, également, c'est Jean-Marie Le Pen.
'''Fleur de lotus''' : Pas de marque.
'''Gérard''' : Tu vas te calmer avec des conneries comme ça, d'accord parce que sinon, tu vas dégager.
'''Bermuda''' : Je dis plus de noms, alors, mais enfin, je voulais quand même que tu saches que le monde des stars, c'est quand même un monde très, très vicieux et que, en fait, vous seriez bien surpris des genres de personnalités qui viennent vous voir et surtout ce qu'ils vous demandent, quoi. Moi, je me suis déjà pris, entre autres, donc, des cotons-tiges, mais j'ai pas eu que ça, quoi. Je veux dire, c'est quand même affolant. C'est les gens de la radio ou pas ?
'''Fleur de lotus''' : C'est des gens de la radio ?
'''Petit suisse''' : Pas de marque.
'''Fleur de lotus''' : Tu dis, par exemple, le prénom et le nom, genre Sam, Z, tout comme ça.<ref name="explic4"></ref>
''Gérard''' : Alors, Kekethos, terminé pour toi, au revoir.
'''Phildar''' : C'est pas Kekethos, je l'avais viré, je vais gérer. Sinon, à la place de Barracuda, on n'a que Giclette. Bonsoir.
'''Gérard''' : Non, là, je vais te dire une chose, que si c'est les mêmes... Gare à toi.
'''Phildar''' : Mais non ! J'ai pris 25 lignes, là, au moins.
'''Gérard''' : Ouais, ouais, ouais. 25 lignes ? Alors, on va demander à Fleur de Lotus. Non, Twingo, t'as pas répondu.
'''Twingo''' : Non, j'ai pas répondu. Je suis d'accord avec ce que disait Bermuda. Je suis d'accord avec ce qu'elle disait. Les stars sont des putes dans le sens où, bah oui, ils se gênent pas pour venir nous voir, quoi. Mais c'est des gens qui payent et qui payent bien. Je peux te donner quelques exemples, sans trop te donner de noms, mais j'ai dû fouetter un comique, enfin, un petit comique sans cheveux, tu vois, qui a une drôle de tête. Je l'ai fouetté pendant trois heures, quoi.
'''Fleur de lotus''' : Il me semble que certaines stars de la télé se prostituent. Certaines stars, enfin, de la télé, des animatrices, qui couchent avec des producteurs. Et ça, je dirais pas de nom, mais je le sais. Et personne ne me le fera avouer.
'''Pupute''' : Oui, donc, moi, je pense qu'il y a des stars qui doivent se prostituer, mais c'est possib, pour se faire encore plus d'argent.
'''Gérard''' : C'est tout ce que tu peux préciser, toi ?
'''Pupute''' : Bah, attends, je suis en train de pomper, j'ai pas que ça à faire, non.
'''Gérard''' : Bon, alors, dans ce cas-là, t'as pas que ça à faire, bah, continue à pomper, au revoir. Allez. Et Giclette ?
'''Giclette''' : Ouais, déjà, bonsoir, Gérard. C'est Giclette, je t'en mets une. Et je voulais te dire que, déjà, les stars, ils vont pas voir des putes, ils vont voir des gold girls, comme on dit. Et je pense que des gogole girls, t'en connais.
'''Gérard''' : Tu peux préciser ?
'''Giclette''' : On va pas donner de nom, Gérard. Tu veux que je donne des noms ?
'''Phildar''' : Non mais on va pas parler des stars de cinéma.
'''Giclette''' : C'est leur vie privée, on va pas être des paparazzi, quoi.
'''Gérard''' : Moi, je peux vous dire une chose, que, à ma connaissance, personnellement, j'ai jamais vu de stars qui se mettaient à la prostitution. Non, j'ai jamais vu ça, encore. Ça m'étonnerait qu'il y en ayent qui le fassent.
'''Phildar''' : Non, mais Gérard, ya une... elle fait plus de films bien, elle a plus de reconnaissance, elle est plus célèbre. Elle peut tomber dans la prostitution.
'''Gérard''' : Ça, on sait pas. Reego, oui ?
'''Reego''' : Oui, donc, sur IRC, on me demande, à propos des stars, est-ce que les stars du X, on peut les considérer comme des prostituées ?
'''Gérard''' : Ben, t'en as certaines qui font tout en faisant des films X. Donc, je pense que s'ils choisissent de faire ce boulot-là, c'est que c'est vraiment eux qu'ont choisi.
'''Reego''' : De quoi ? La prostitution ou les films X ?
'''Gérard''' : Les deux, hein. S'ils se mettent dans le X, ils font de la prostitution quand même.
'''Reego''' : Donc, c'est la même chose.
'''Gérard''' : Voilà. Donc, justement, ben... la sixième, ben, ça y est, on vient de la faire. Septième...
'''Fleur de lotus''' : Avant, avant, je voudrais m'adresser aux gens du standard. Est-ce que c'est possib d'avoir une invitée mystère qui aurait fait pute ? ''[approbation enthousiaste des autres]''.
'''Gérard''' : Alors, je préviens, qui s'amuse à demander ça ? Alors, fleur de lotus, tu dégages. Hop. Voilà. Comme ça, ça va plus vite. Alors, septième question. Y a-t-il plus de femmes que d'hommes qui se prostituent ? On va demander à BerMula.
'''Bermuda''' : Honnêtement, j'en sais rien parce que dans le quartier où je bosse, il n'y a que des nanas. Mais je suis persuadée qu'il y a autant de mecs que de nanas qui se prostituent.
'''Gérard''' : Non, mais je te demande s'il y en a plus ou moins.
'''Bermuda''' : Je viens de te répondre. Faut te déboucher les oreilles. Je dis qu'il y en avait autant.
'''Twingo''' : Il y en a un peu moins comme il y a un peu moins de mecs, enfin, de moins dans mon secteur. Mais il arrive qu'on fasse des trucs ensemble pour un client.
'''Gérard''' : Alors, qui c'est qui nous reste ? Kekethos ?
'''Kékéthos''' : Ouais, je pense qu'il y a beaucoup plus de filles qui se prostituent.
'''Gérard''' : Ouais, mais est-ce qu'il y a plus de femmes que d'hommes ?
'''Kékéthos''' : Il y a plus de femmes que d'hommes qui se prostituent. ''[Bermuda éclate de rire]''.
'''Gérard''' : Oh, celle qui se marre comme un bouc, elle va se calmer.
'''Bermuda''' : Enlève tes coton-tiges des oreilles.
'''Gérard''' : Oh, Bermuda, tu vas te calmer parce que tout à l'heure, tu vas dégager.
'''Maquereau à la moutarde''' : Gérard, je peux répondre ? C'est Maquereau à la moutarde. J'ai remplacé Pupute temporairement.
'''Gérard''' : Non, non, Pupute...
'''Phildar''' : Non, Pupute, on l'avait viré. J'ai oublié de te le dire. Excuse-moi, c'est Maquereau à la moutarde.
'''Gérard''' : Non, mais attends, Phildar, t'es prié de faire ton boulot correctement. C'est la dernière semaine que tu fais les débats.
'''Phildar''' : J'étais dans les 24 lignes, là. Je ne peux pas tout faire.
'''Reego''' : Pour revenir au débat, comme allait dire Manu, il y a Rocco sur IRC qui te demande si le téléphone rose est considéré comme une forme de prostitution.
'''Gérard''' : Justement, on va en parler tout à l'heure.
'''Manu''' : Par contre moi, Gérard, j'ai un petit sondage. Donc, à la la question, combien donneriez-vous à une pute ? Donc, 32% donneraient 2 euros, 28% donneraient leurs animaux domestiques et 40% donneraient leur approbation. Et 1% ont déjà donné leurs dents et n'ont pas voulu donner leur moustache.
'''Gérard''' : Alors, je vais te dire une chose. Tu vois, tes trucs de merde, là, pour le sondage. C'est à peu près le même sondage que le premier. Alors, c'est même plus la peine de...
'''Manu''' : J'ai pas remarqué, moi.
'''Gérard''' : Non, t'as pas remarqué. Non, mais pour l'instant, t'es à moitié bouché. Ouais, ça se voit que dimanche, tu vas te fiancer parce que dis-donc, t'es en train de foutre ta merde aujourd'hui. La semaine dernière, tu faisais du bon boulot. Cette semaine, tu merdes. T'es comme Phildar. ''[menés par Giclette, les audituers chantent la musique de mariage]''. Bon, eh maintenant, vous allez fermer vos gueules. Bon, je sens que là, on va virer tout le monde.
'''Maquereau''' : Ouais, moi, je pense qu'il y a autant de putes au féminin qu'au masculin mais des masculins il en faut.
'''Giclette''' : Donc il ya quand même vachement plus de femmes que d'hommes qui prostituent. t'as qu'à voir les deux grosses salopes qu'on a là au téléphone, ça explique pas mal de choses quand même.
'''Twingo''' : je ne permets pas là, je suis désolée, je ne peux pas laisser passer ça, Gérard.
'''Giclette''' : Vous êtes comme des grosses chiennes, les filles. Et il faut en être fières !
'''Gérard''' : Ç y est, vos avez fini ?
'''Twingo et Bermuda''' : Non, on n'a pas fini/terminé.
'''Twingo''', ''[fière]'' : Je suis prostituée de profession, mais je ne suis pas une chienne !
'''Bermuda''' : Moi, je suis une chienne. Moi je...
'''gérard''' : Ça y est vous savez ce que vous allez faire ? Vous allez régler votre merde hors antenne et on va s'écouter Roger le pipeau, avec du souffle parce que c'est dur de péter. Et on se retrouve après en espérant que vous êtes calmées. ''[Musique]''.
'''Gérard''' : Et voilà, donc vous êtes toujours sur Fun radio, il est 2h26, et donc c'est toujours les débats du jeudi avec Gérard aux commandes. donc vous venez d'écouter Roger un Pepito avec du souffle parce que c'est dur de péter. Et vous pouvez toujours nous appeler au 0 803 08 5000 et 800 70 500, et toujours l'IRC, www.radio, et on récupère Kékéthos, en espérant que ça s'est calmé. Et ce coup-là.
'''Kékéthos''' : Pas de problème, moi je suis très calme et je te kiffe.
'''Gérard''' : Ok, ben moi je t'em... je te dis merde.
'''Kékéthos''' : Mais ça veut dire que je t'aime bien !
'''Gérard''' : Ok ben moi aussi mais... Ok. Bermyda ?
'''Phildar''' : Bermuda est partie. On accueille Laura Ingalls. ''[musique du film éponyme]''.
'''Gérard''' : Manu s'il te plaît ! Non mais tu m'arrêtes cette merde là parce que ça m'énerve !
'''Kékéthos''' : Est-ce que t'as la musique de Mc Gyver ?
'''Manu''' : Non.
'''Gérard''' : Je vous préviens, vous allez vous calmer maintenant !
'''Phildar''' : Donc, on a toujours Twingo. Maquereau, il est parti. On a Susson. Il est encore puceau. Donc, il voudrait en parler et savoir... À suivre pour le débat. Et à la place de Fleur de Lotus qui est parti aussi, on n'a plus Pulsor.
'''Reego''' : Pour reprendre le thème du débat, il y a Access sur IRC qui te demande : « Comment on désigne une pute au masculin ? » On dit un pute ?
'''Gérard''' : Non, on dit une pute, simplement. Il n'y a pas de...
'''Reego''' : Mais quand tu t'en prends à Phildar, quand tu lui dis que c'est une pute...
'''Susson''' : Un rapeur, on dit.
'''Reego''', ''[souriant même s'il est visé, en tant que rapeur]'' : Toi, toi je vais t'attraper un de ces quatre...
'''Gérard''' : Celui qui s'amuse à dire ça va se calmer tout de suite, sinon il va... Il va retourner au standard et on va prendre quelqu'un d'autre, ok ? Alors, je préviens que celui qui redit des conneries dégage maintenant. Je vais pas m'emmerder longtemps. Alors, que pensez-vous de l'amour par téléphone ? Donc, on revient à la question qui avait été posée sur IRC. Donc voilà, alors, Pulsor ?
'''Pulsor''' : L'amour au téléphone ? Je suis pas très... Je suis pas très friande, en fait.
'''Gérard''' : Non mais que pensez-vous de l'amour par téléphone ?
'''Pulsor''' : C'est ce que je dis. L'amour par téléphone, moi j'aime pas trop. J'aime bien le contact directe d'une peau sur une peau, et les... Les étreintes ravageuses. Et sinon... on m'a coupé le téléphone.
'''Twingo''' : T'es chaud toi.
'''Gérard''' : Non mais attends, je vois pas du tout le rapport avec...
'''Pulsor''' : Je peux plus le faire par téléphone. Donc, je suis obligé de le faire en chair et en os.
'''Kékéthos''' : Moi, je trouve ça naze, l'amour par téléphone. Comme disait le mec avant... Pulsor, il faut du contact.
'''Twingo''' : T'es chaud toi aussi.
'''Gérard''' : Non mais ça suffit toi, Laura, ou Twingo. Vous allez vous calmer là ! ''[Phildar fait un signe à Reego]''.
'''Reego''', ''[hors micro mais à voix haute]'' : Qu'est-ce que tu veux ?
'''Phildar''' : Une cigarette;
'''Pulsor''' : J'en ai plus moi.
'''Kékéthos''' : Moi, il m'en reste dix. Donc je te disais, il faut du contact sinon c'est pas bon, je pense que tu es d'accord avec moi, Gérard ?
'''Gérard''' : Moi personnellement, j'irais pas m'amuser à faire ça sur le... Par téléphone, nuance. Laura ?
'''Laura Ingalls''' : Ouais, bah écoute, Gérard, moi je suis encore vierge et je veux perdre ma virginité avec l'homme de ma vie. Donc pour moi, faire l'amour par téléphone, c'est quelque chose de vachement important parce que ça me permet de m'extérioriser. ''[musique du film à faible volume]''.
'''Gérard''' : Tu m'éteins ça s'il te plaît !
'''Manu''' : Juste en fond, juste en fond !
'''Phildar''' : Manu, sérieusement, c'est chiant de... On peut pas bosser !
'''Kékéthos''' : Pour ta virginité, si tu veux, je peux te rendre ce service.
'''Pulsor''' : Moi je voulais lui dire, pour l'amour du téléphone...
'''Gérard''' : Non mais pour l'instant, vous allez vous taire. Quand Manu arrêtera ses conneries avant que je me lève... ''[il lui envoie la main vers l'épaule, Manu semble se réveiller]''. Tu m'éteins ça. Laura ?
'''Laura''' : Ouais, donc je te disais, en fait, moi je suis encore vierge ... et je voudrais perdre ma virginité avec l'homme de ma vie... Je suis fière d'être encore vierge à 19 ans. Et en fait, j'aime bien faire l'amour par téléphone parce que, vu que je l'ai jamais fait... ça me permet, en fait, de voir un petit peu ce que ça fait. Et puis donc, j'aime bien, j'aime bien, je préfère parce que, je t'ai dit, je l'ai encore jamais fait et j'attends vraiment le bon moment. Donc pour moi, par téléphone, c'est... Pour l'instant, c'est ce qui me convient le mieux.
'''Reego''' : Oui, donc il y a Rocco qui te demande : est-ce qu'il peut faire l'amour par téléphone même s'il a un téléphone bleu au lieu qu'il soit rose.
'''Gérard''' : La couleur n'a rien à voir.
'''Reego''' : Alors pourquoi rose ?
'''Gérard''' : Parce que c'est un truc... Il y a des téléphones roses et c'est des trucs... C'est des magazines qui peuvent trouver...
'''Reego''' : Un téléphone, c'est pas un magazine.
'''Gérard''' : Dans les magazines, tu as des numéros de téléphone et tu peux faire...
'''Phildar''' : Pourquoi, Gérard, on a appelé ça le téléphone rose ?
'''Gérard''' : Tu demanderas à ceux qui s'amusent à en faire.
'''Phildar''' : Pourquoi pas les téléphones rouges ou verts ?
'''Gérard''' : Non, il n'y en a pas. Twingo ?
'''Twingo''' : Moi, ça m'est arrivé de me prendre des téléphones, dans des délires sado-maso, mais c'est pas ce qu'il y a de plus agréable en fait. Avec la chaleur moite, c'est mieux que la froideur du plastique.
'''Giclette''', ''[essouflé]'' : L'amour, par téléphone là, je suis en plein dedans et je vais t'en mettre plein la tronche !
'''Gérard''' : Bon alors, Giclette, tu dégages. Comme ça, t'es tranquille. Terminé pour... Non, non, non, c'est terminé pour toi, c'est terminé. Susson ?
'''Susson''' : Moi comme je suis puceau et que j'ai pas eu le cran d'aller aux putes, je suis assez friand de ça ouais. C'est assez cher en plus. Je me suis fait couper la ligne par ma mère, quoi. 223 francs la minute, ça fait un peu cher, voilà.
'''Gérard''' : Je pense que ça... Aujourd'hui, vous avez décidé de foutre votre merde ! Hein ? Manu et Phildar, vous avez l'intention de foutre la merde combien de temps ? Jusqu'à la fin du débat ?
'''Manu''' : Je sais pas. Ouais, encore une demi-heure.
'''Gérard''' : Ça se voit que dimanche tu vas passer aux fiançailles. Parce que la semaine dernière, tu as fait un boulot correct. Cette semaine, tu me fous de la merde parce que ya ta Laura, tu t'amuses à me mettre des jingles pourris, tu as l'autre qu'on lui demande quelque chose, qui veut rien foutre.
'''Phildar''' : Moi je le fais.
'''Gérard''' : Ouais, bah t'as intérêt de te réveiller vite fait, parce que ça va pas aller longtemps, toi ! Alors, je peux vous dire que ça, ceux qui s'amusent à faire ça par téléphone, c'est vraiment qu'ils ont du fric à foutre en l'air.
'''Reego''' : À propos de téléphone, Gérard, sur IRC on me demande si avec un portable c'est possible.
'''Gérard''' : Oui mais ça coûte aussi cher qu'une communication normale et...
'''Reego''' : C'est accessib ?
'''Gérard''' : Tu peux y avoir accès facilement, oui.
'''Phildar''' : Mais ce qui est mieux, c'est d'avoir... quand c'est comme ça, quand tu veux faire du téléphone rose avec ton portable, c'est d'avoir un forfait.
'''Gérard''' : Ouais, mais de toute manière, le forfait tu le butes facilement avec ça.
'''Reego et Phildar''' : Non mais, le forfait rose...
'''Gérard''' : Non mais ça, je sais pas si ça existe encore.
'''Laura''' : Gérard, c'est Laura Ingalls. Je peux juste rajouter quelque chose ? C'est que moi, en fait, on paye pas 2 francs 23 la minute, c'est qu'on m'appelle directement chez moi sur ma ligne privée. Donc si ça intéresse quelqu'un...
'''Gérard''' : Tu verras ça après, hors antenne avec Phildar.
'''Susson''' : Ya moyen d'un dépucelage 30 minutes ?
'''Gérard''' : Pour l'instant, on continue le débat et vous gérerez ça après, hors antenne. Alors, que pensez-vous des sex-shops dans toute la France ? On va demander à Pulsor.
'''Phildar''' : C'est quoi cette question ? C'est pas sur la prostitution, ça ?
'''Gérard''' : Non, les sex-shops c'est pas sur la prostitution ?
'''Manu''' : Non, les sex-shops, non, c'est pas la prostitution.
'''Gérard''' : Si ça te plaît pas, tu plies bagages et tu vas voir ta copine, ok ? On va demander à Pulsor.
'''Pulsor''' : Ouais, les sex-shops, je connais pas trop ce milieu, mais enfin j'ai pas trop d'avis en fait sur les sex-shops, mais j'aime bien le rap.
'''Laura''' : Bah écoute, donc moi comme je te disais, je suis vierge, mais enfin ça m'est déjà arrivé d'aller dans ce genre d'endroit. Mais enfin, je me déguise un petit peu pour pas qu'on me reconnaisse, parce que je suis vraiment très pudique. Et donc en fait, je prends certains objets, c'est vrai, et je les donne à ma mère et je regarde un peu ce que mes parents font.
'''Twingo''' : Oui, bah moi j'ai l'occasion, oui, souvent d'y aller, soit pour m'alimenter en films ou en gadgets divers, quoi, parce que mes clients sont demandeurs. J'enfonce souvent des godes aux clients, enfin tu vois des choses comme ça, des menottes, des choses en cuir... et des cassettes porno.
'''Gérard''' : D'accord, ok. Euh, Susson ? ''[silence]''. Susson ? Tu te réveilles, s'il te plaît, parce que là, vous commencez à dormir, ça m'énerve.
'''Susson''' : Moi, j'étais routier avant, donc j'allais dans les sex-shops pour acheter des posters pour mettre dans mon camion. Mais sinon, j'y allais très rarement, quoi.
'''Manu''' : C'est des visselards ces routiers.
'''Gérard''' : Je vais te dire une chose : que pour l'instant, t'es en train de dire des conneries, donc je pense que pour toi, ça va être terminé.
'''Phildar''' : Non, ce qu'il dit, c'est vrai.
'''Pulsor''' : Non, c'est des pervers.
'''Gérard''' : Donc, je peux te dire une chose, que c'est faux. Là, t'es en train de massacrer le boulot routier. Donc t'as intérêt à te calmer avant que je te vire.
'''Susson''' : C'est des fainéants, les routiers.
'''Gérard''' : Alors, ceux qui sont pas contents, vous allez dégager, parce que je vais pas chercher midi à 14h maintenant, ok ? Alors, tout le monde a répondu. Donc, des sex-shops, si ça existe, et il y en a un peu partout en France, et c'est dommage que ça existe, t'en as plein sur Paris.
'''Twingo''' : Pourquoi c'est dommage ?
'''Gérard''' : Non, parce que je trouve que c'est dégueulasse, parce que les gens... Ouais, mais attends. T'as les mecs qui sont là, dès qu'ils te voient y passer, ils insistent pour que tu rentres.
'''Max''', ''[à la porte du studio]'' : Ptin mais t'es tout mou ce soir.
'''Gérard''', ''[confus]'' : Donc...
'''Phildar''' : Il est paumé le Gérard ce soir.
'''Gérard''' : Non, parce qu'il y en a qui s'amusent à dire des conneries, je sens que le débat, il va être terminé vite.
'''Max''' : C'est toi, t'es tout mou depuis tout à l'heure. Depuis minuit, il se passe rien !
'''Reego''' : On est presque 1000 sur l'IRC, on en a perdu énormément, quoi.
'''Max''' : C'est de ta faute, tu te bouges pas ! Je suis désolé, on peut plus faire de débat, ça sert à rien.
'''Gérard''' : Eh ben dans ces cas-là, on arrête. Je pose même pas la dixième question et puis c'est tout.
'''Manu''' : Vas-y, regarde, j'ai un petit sondage peut-être, ça va t'aider. Donc, à la question : « Qu'aimez-vous chez une prostituée ? », 58 % des gens aiment bien, 25 % des gens aiment beaucoup, et 100 % aiment le balcon avec les drapeaux Funradio, je comprends pas.
'''Gérard''', ''[rageur, se précipitant vers Phildar, menaçant]'']'' : Toi, c'est la dernière fois que tu t'amuses à balancer des conneries comme ça, parce que sinon, je vais t'éclater ta gueule avec !
'''Phildar''' : Mais c'est pas moi !
'''Gérard''' : C'est toi qui balances des saloperies. Alors, je te le préviens, c'est la dernière fois. La semaine prochaine, tu vas dégager. Je te le dis tout de suite. La semaine prochaine, je veux pas de toi. Alors, y a-t-il autant de prostituées et d'homos dans les autres pays que la France ? On va demander à Pulsor pour terminer le débat.
'''Pulsor''' : Oui, bah, la France n'a pas le... Comment dirais-je ? Le truc, comment... Je trouve pas le mot.
'''Phildar''' : Technopole.
'''Manu''' : Je crois qu'il en a vue une en Allemagne avec Titi, récemment.
'''Pulsor''' : Technopole. La France n'a pas la technopole. Et les autres pays, pourquoi pas.
'''Gérard''' : Manu, c'est la dernière fois que tu dis des conneries aussi...
'''Pulsor''' : C'est le pote à Gégé. Et il va en camion, il l'amène en Allemagne alors... un peu de respect quand même.
'''Laura''' : Ouais, bah, tu sais, moi, au départ, je suis originaire des Philippines. Et, en fait, on m'a demandé... Enfin, je me suis fait rapatrier en France, parce qu'au début, on voulait me mettre sur le trottoir. Donc, j'ai réussi à m'en sortir malgré tout.
'''Gérard''' : De toute manière, la question, c'est : « Y a-t-il autant de prostituées et d'homos dans les autres pays que la France ? »
'''Phildar''' : Je pense pas. Je pense pas.
'''Laura''' : Oui justement, c'est pour ça que je te parle des Philippines...
'''Gérard''' : Phildar, tu fermes ta gueule et c'est tout ! Ouais, je t'écoute, Laura.
'''Laura''' : Ouais. Donc, je te disais, aux Philippines, alors là, ça cartonne, mais quelque chose de grave. Parce que t'as tout. T'as même des gosses. Donc, t'as des gosses, t'as des homos, t'as des vieilles, t'as des homos, t'as des chiens, t'as tout.
'''Gérard''' : De toute manière, faut dire que dans ces pays-là, c'est... En fin de compte, c'est des personnes qui viennent les chercher et qui les forcent à se prostituer.
'''Laura''' : C'est des pays sous-développés, là-bas. Donc, en fait, bon, bah, pour eux, y a que le cul.
'''Phildar''' : C'est parce que c'est des pays pauvres, en fait.
'''Gérard''' : Y a une question IRC Reego, non ?
'''Reego''' : Non, y a juste Arnette qui demande à Phildar de le rappeler.
'''Gérard''' : Non, non, c'est plus la peine. Le débat, il va être terminé. Alors, c'est pas la peine, hein. Alors, Twingo ?
'''Twingo''' :– Oui ? Déjà, je vois pas le rapport avec les homos, excuse-moi, mais il n'y a aucun rapport avec les homos et les prostituées. Donc, tu pourrais reformuler ta question.
'''Gérard''' : Alors, y a-t-il autant de prostituées et d'homos dans les autres pays que la France ?
'''Twingo''' : Oui, bah non, je te dis, y a aucun rapport avec les homos, quoi.
'''Phildar''' : Ouais, on parle pas des homos, on parle de la prostitution, là. Tu peux être homo sans être prostituée.
'''Gérard''' : Donc, c'est ta réponse ?
'''Twingo''' : Non, non, moi, je te dit que, bah, c'est pareil, quoi. Y en a partout, hein.
'''Phildar''' : Et à ton avis, Gérard, dans quel pays y a le plus de prostituées ?
'''Gérard''' : Euh, c'est dans les pays étrangers, comme... Mais ça, on en a parlé avec Laura tout à l'heure. On l'a dit, c'est dans... C'est les adultes qui vont chercher les mômes pour les mettre à la prostitution. C'est pas eux. Susson ?
'''Susson''' : Ouais, moi, je sais pas, Gérard, parce que moi, j'ai jamais été voir les putes, donc je sais pas, mais je pense qu'il y a des pays où c'est interdit, et même des villes, quoi. Y a des villes où la prostitution est interdite, quoi. ''[Pendant ce temps, Gérard regarde Phildar et tente de lui parler par signes]''.
'''Phildar''' : Mais t'écoutes pas Gérard, l'auditeur, il te parle.
'''Gérard''' : Ouais, je t'écoute, Susson.
'''Susson''' : Ouais, je disais qu'il y a des villes où la prostitution est interdite, même dans les pays, quoi. T'as qu'à voir au Groenland, il fait trop froid pour se faire balader le cul à l'air.
'''Gérard''' : Non, mais attends, parce que là, je comprends, je vois pas...
'''Pulsor''' : Y en a au Groenland, y en a en Thaïlande, mais à Disneyland, tu verras jamais Blanche-Neige te tailler une pipe.
'''Gérard''' : Bon, Pulsor, ça suffit, tes conneries, maintenant ? ''[silence]''. Bon, Pulsor ?
'''Phildar''' : Non, mais là, c'est bon. Donc là, la prochaine question, c'est quoi ? C'est la dernière ?
'''Gérard''' : Ouais, y en a plus.
'''Phildar''' : Ah, y en a plus ?
'''Gérard''' : Non.
'''Phildar''' : Ah, bah, ça a été vite, alors. Bon, bah, conclusion, alors.
'''Gérard''' : Alors, conclusion du débat, donc, on va demander à Pulsor pour conclusion.
'''Pulsor''' : Franchement, j'ai trouvé ça vulgaire. Moi, je croyais que t'allais parler de la prostitution, mais d'une façon imagée, tout en métaphore.
'''Gérard''' : Non, mais attends, moi, je m'amuse pas à la prostitution hein.
'''Pulsor''' : Et vas-y des pines par-là, des zubs par-là, des chattes dans du verre, des trucs comme ça. Moi, franchement, ça me dégoûte. Moi, ça me donne même pas envie de faire l'amour.
'''Gérard''' : Ah, bah, ça tombe mieux pour toi, hein, si t'as pas envie.
'''Pulsor''' : J'ai envie d'avoir une descendance, si tu veux. Donc, la prochaine fois que tu fais un débat comme ça, t'essayes d'exhorter tes troupes, déjà, d'une. T'essayes d'avoir de la pêche, parce que t'es quand même à la radio. Et, ouais, voilà. C'est tout ce que j'avais à te dire, et puis je te souhaite une bonne soirée, pécor.
'''Gérard''' : Ok, bah, toi-même, pécor. Laura ?
'''Laura''' : Ouais, bah, en fait, moi, je suis hyper choquée de la façon dont t'as amené ce débat. Je suis, franchement, très, très déçue. Et, honnêtement, arrête la radio, quoi. Remets-toi à l'alcool.
'''Gérard''' : Alors, Laura, moi, je t'emmerde. Alors, Twingo ?
'''Twingo''' : Ça s'est mieux passé que le premier. Enfin, c'était plus agréable à faire que d'écouter le premier. Néanmoins, on n'a pas traité vraiment le sujet, comme d'habitude, de toute façon. Et, bah, merci, Manu, d'avoir un peu animé, sinon on se serait fait chier.
'''Manu''' : De rien.
'''Gérard''' : Non, mais, de toute manière, c'est pas que c'est... Les questions, c'est moi qui les ai préparées. Ce qu'il y a, c'est que... Comme quand on demande à quelqu'un de virer des gens et que monsieur n'a rien à foutre aussi, donc c'est pour ça que...
'''Twingo''' : Ne t'en prends pas toujours aux autres. Je veux dire, le fond, c'est quand même toi, quoi. Eux, c'est la forme.
'''Gérard''' : Ouais, non, mais attends, c'est quand même Phildar qui fout sa merde quand on lui demande quelque chose.
'''Twingo''' : Oui, non, mais ça, c'est parce que t'es pas capable d'assumer, donc, bah, c'est Phildar qui prend, quoi. Faut bien qu'il y ait quelqu'un qui prenne.
'''Gérard''' : Quand tu demandes à Phildar de virer une personne et qu'il la repense sous un autre nom, c'est pas mal.
'''Phildar''' : Enfin, bref, la suite des conclusions, Gérard.
'''Gérard''' : Susson pour finir.
'''Susson''' : Ouais, bah, le débat, c'était à chier, comme d'habitude. La prostitution dans l'armée, on n'en a rien à foutre. Et puis, c'est quand tu veux pour te mettre un coup de tube.
'''Gérard''' : Et bah, moi, je t'emmerde, voilà.
'''Phildar''' : Non, mais t'es trop vulgaire, en plus. Là, il a fait sa conclusion. Tu dis, bon, d'accord, j'accepte ta conclusion.
'''Gérard''' : Non, mais il n'a pas besoin d'aller plus loin, de dire des conneries.
'''Phildar''' : Il donne son avis, c'est tout. Il donne son avis, c'est tout, voilà.
'''Gérard''' : Sur l'IRC, il y avait...
'''Reego''' : Bah, il y avait les seules conclusions, c'est que c'était pourri, que ça avait ni queue ni tête, comme toi, quoi.
'''Gérard''' : Eh bah, c'est pas mal. Moi, la conclusion, c'est comme la semaine dernière. À chaque fois, vous me foirez aller débat. Il y en a qu'un qui bosse super bien aujourd'hui, qui a bien fait son boulot aujourd'hui. Les deux autres, je peux dire que c'était de la merde.
'''Phildar''' : Et lequel a bien bossé ? C'est moi ?
'''Manu''' : Non, c'est moi, t'es fou.
'''Reego''' : Même toi, t'as pas fait ton boulot comme il faut.
'''Gérard''' : Ouais, mais toi, t'as quand même...
'''Manu''' : Non, mais Gérard, t'as écouté ce qu'il vient de te dire, Reego ?
'''Phildar''' : Non, mais c'est pas les débats de Reego.
'''Gérard''' : Non, mais même, il y a que Reego qui a mené à peu près à bien les questions. Sur Internet, on a pu y répondre. C'est sûr que ce soir, ça a été un peu de la merde. Ça, bah, tant pis. C'est vous qui avez voulu qu'on fasse des débats comme ça. Bah, moi, si vous voulez plus de débats, vous le dites, c'est tout. On va les arrêter, puis on fera... vous ferez de la libre antenne le jeudi, c'est tout.
'''Phildar''' : Non, non, mais il faudrait que tu réfléchisses ou que tu travailles un peu mieux tes débats, quoi.
'''Gérard''' : Non, mais attends, les questions que je vous ai posées, vous m'avez dit que c'était bon, donc maintenant... Les gens, quand je t'ai demandé quelque chose, tu les as repris sous d'autres noms.
'''Phildar''' : Non, je les ai virées !
'''Gérard''' : Mon cul, oui. Tiens, attends, les trois quarts, c'était les mêmes. Non, à peine. Non, non, tiens, je vais réécouter les cassettes, tu verras que c'était les mêmes. Enfin, bref. Voilà, donc, vous allez retrouver Rousseau pour la nuit sans pub. On s'écoute ?
'''Manu''' : J'ai les jambes écartées et j'attends ton tube.
'''Gérard''' : voilà. Et vous allez retrouver Rousseau pour la nuit sans pub.
== Le débat sur les catastrophes naturelles ==
=== Contexte ===
En ce 16 novembre, Max a suggéré à Gérard de s'inspirer de l'actualité. Or, l'actualité évoquant des drames climatiques, et Nicolas, rédacteur des débats, étant inspiré, Gérard en a déduit un débat. Ce thème a en plus l'avantage d'être renouvelable, ce qui sera fait quelques années plus tard.
Bien sûr, il ne faut jamais oublier le contexte artistique et réel de l'émission : tout sera mélangé. À noter enfin l'intervention, pour les aspects météo, d'un personnage, joué par Goldo, portant le nom du présentateur vedette de la météo de l'époque : Alain Gillot-Pétré. L'évocation de cet homme rappelle combien les présentateurs, même de rubriques courtes mais relevant du quotidien, pouvaient être des vedettes dans un monde où la population en général ne regardait que six chaînes de télévision gratuites. L'homme s'est fait connaître pour son style dynamique, humoristique parfois, et des expressions et des manières de dire bonsoir et au revoir caractéristiques. Le souvenir est, ici, d'autant plus émovuant que cet homme mourra peu de mois plus tard d'une grave maladie.
Mentionnons ici que nous avons fait le choix de ne pas indiquer les interventions, venant des auditeurs, de la réalisation, etc, de voix extraites de messages répondeur laissés dans le cadre de la libre antenne de Max, où certains lancent des insultes gratuites, vulgaires et que, Gérard, prend parfois pour lui, sans distinguer ces sont de vrais auditeurs en direct. Ces petites phrases n'apportent que peu d'éléments au surréalisme et au comique de ces émissions, mais il faut mentionner qu'elles existent, car elles contribuent à agacer Gérard. Mais vu le fonctionnement de l'animateur, ces colères restent éphémères, n'ayant probablement que peu d'influence sur le reste des événements. Par contre, nous y faisons allusion une fois, car cela provoque un élément important. Dans le narratif autour de l'émission, Gérard est l'idiot pris comme tel par tout un grupe, composé en premier lieu de Max, et ensuite de ses équipes successives, les auditeurs, et des personnages périphériques. Mais la communauté est traversée par un débat sur ce point, d'autres considérant qu'il savait parfaitement ce qu'il se passait et qu'il l'acceptait car, par-delà son attitude excessive et ses failles réelles, il tenait à cette émission, à ce lien social, à ce que cela impliquait pour lui. Or, ce début de période en est la plus flagrante illustration. La première de ces preuves est précisément ici : Gérard sait parfaitement que les messages intempestifs viennent du répondeur, mettant même Manu, réalisateur du moment, en difficulté. Il n'est donc pas l'idiot risée des autres, il est bien acteur de cette comédie. Si, pour e débat, ce détail est subtil, nous en verrons d'autres, plus francs et moins contestables encore. Mais dès ce débat, l'état de conscience de Gérard est clair, et le jeu de Sandy le souligne, d'ailleurs, car elle commence à jouer avec le personnage radiophonique de Gérard, les deux devenant complices dans cette comédie.
=== Les personnages ===
* Franck Bargine : Max
* Phildar et Manu
* Igor : Reego
* Sandy Threadkell : Tekel
* Gérard Cousin : Gérard
* Goldo : Bourdon, Alain Gillot-Pétré (Alain)
* Tony Morestin :
* Arnet :
* Mégane : Suce-la-moi (SLM)
* Laura : Asticot, Loup-de-nez
* Prout (jeune fille déà passée aux précédents débats, la seule autre que Mégane et Laura
* Axel : Prout (remplaçant la précédente qui incarnait ce personnage, à partir de la réplique sur les empêcheurs de tourner en rond)
* J'ai mal aux fesses (JMF), Karambar (le même qui avait participé au débat sur la Formule 1)
=== Transcription ===
'''Gérard''' : Et voilà donc bonsoir à tous, 0h41 donc vous pouvez toujours nous appeler pour les débats du jeudi, donc au 0803 08 5000 et 0800 70 5000, toujours l'IRC www.funradio.fr.
'''Reego''' : Oui tout à fait, 1782,6 connectés quand même.
'''Gérard''' : Et donc, n'essayez pas d'appeler sur le Minitel, il ne fonctionne pas. Donc on va remercier Tony de l'IRC pour ce que j'avais demandé à Reego qui a été fait. Donc je remercie Tony en passant.
'''Manu''' : Et moi Gérard, s'il te plaît, avant de commencer, j'ai une dédicace à faire, dédicace à Sandy ''[Son de Fête la fête avec les premiers mots, devenus l'hymne de l'émission avec Sandy : Et toi la grosse, debout espèce de faignasse là ! Tu vois pas que les autres s'amusent là ? Allez debout ! Viens avec nous !]''.
'''Gérard''', ''[amusé]'' : C'est bon Manu, c'est bon ! C'est bon on va commencer, on va accueillir J'ai mal aux fesses, 21 ans de Valence, 98.8 ! Bourdon, 20 ans Paris, 101.9 !
'''Bourdon''' : Ouais mes respects du soir Gérard !
'''Gérard''' : Bonsoir ! Suce-la-moi, 23 ans, D'Amien, on écoute Fun Radio, 91.8 !
'''SLM''' : Quand tu veux Gérard !
'''Gérard''' : Astico, 18 ans, Pontiville, on écoute Fun Radio sur 94.1 !
Prout, 25 ans, Toulouse, 105.9 ! Prout, 25 ans, Toulouse, 105.9. Et Tekel, d'Arcachon, 22 ans, on écoute Fun Radio sur 92... Sur 92, voilà, terminé ! Donc on attaque sur les catastrophes naturelles. Alors, la première question : comment se déclenche une tempête, on va demander à Asticot
''Asticot ''' : Attends tu peux passer à quelqu'un d'autre ? Parce que là je suis en train de mettre mon tampon. Et puis...
'''Gérard''' : D'accord, alors si ça commence comme ça, ça va pas aller, alors on va prendre Suce-la moi la !
'''SLM''' : Oui, comment ça commence une tempête ? Je sais pas, t'appuies sur un interrupteur, ou je sais pas...
'''Bourdon''' : Mais non ! Alors je fais des études de météorologie, et alors il faut savoir qu'il y a des nuages, alors t'as des cumulonimbus et des cumulo-anus, ok, c'est deux types de nuages bien différents, et quand t'as le cumulopinus qui rentre dans le cumulo-anus, ça fait une différence de température et ça fait un orage forcément, même une tempête !
'''Gérard''' : Oh, Bourdon ! Tu parles bien devant ton micro, tu t'éloignes pas quand tu parles, ok ?
'''Goldo''' : Ouais mais ça c'est à cause des ailes !
'''JMF''' : Ouais bah en fait les tempêtes c'est à cause des courants d'air quoi, parce que parfois ça fait du vent, et quand il y a beaucoup de vent comme ça, et bah ça fait beaucoup de vent et ça peut faire des tempêtes quoi.
'''Bourdon''' : Ouais mais dans ces cas-là tu fermes la fenêtre et puis c'est bon !
'''JMF''' : Ouais mais il faut le dire aux gens qu'ils ferment la fenêtre, mais si jamais il y a beaucoup de courants d'air dans le monde, ça fait des tempêtes quoi...
'''Bourdon''' : Bah fermez les fenêtres alors, fermez les fenêtres !
'''JMF''' : Ouais il faut fermer les fenêtres en fait quoi !
'''Gérard''' : Asticot ?
'''Asticot''' : Ok donc j'ai fini de le mettre, donc la question c'est comment se déclenche une tempête c'est ça ?
'''Gérard''' : Ouais ! Parce que je ne vais pas m'amuser à les répéter alors vous écoutez bien quand je pose les questions hein !
'''Asticot''' : D'accord Gérard ! Ouais bah je l'ai bien écoutée hein, la preuve ! Alors bah une tempête c'est très simple, c'est dû à une différence de température, c'est-à-dire que quand il fait chaud chez toi tu ouvres la fenêtre pour que l'air rentre, et quand il fait froid tu la refermes, et quand il fait vraiment très très chaud tu ouvres les deux et là ça fait un courant d'air, et là il y a un choc thermique et la tempête arrive.
'''Prout''', ''[pendant que des auditeurs font des bruits de pet avec la bouche]'' : Moi je crois que c'est par rapport à l'atmosphère quoi !
'''Gérard''' : Eh celui qui s'amuse à faire des conneries derrière va se calmer parce qu'il va pas rester longtemps celui-là ! Alors Prout pour continuer ?
'''Prout''' : Bah moi je pense que c'est l'atmosphère avec le vent tout ça quoi ! Bah voilà quoi sinon moi je sais pas trop donc je réponds ce que je sais quoi !
'''Tekel''' : Bah moi je pense qu'au contraire une tempête est déclenchée par une... ''[ponctuée par des bruits d'aboiements faits avec la bouche]''. Laissez-moi parler, vous avez déjà parlé donc c'est bon hein ! Au contraire c'est déclenché par une violente perturbation atmosphérique et le vent peut souffler à... ce qu'il faut savoir, c'est que le vent, il peut souffler de 1802 km/h !
'''Gérard''' : Ok. Moi, j'ai pu voir à peu près sur un dictionnaire. Donc, c'est une violente perturbation astrosmérique sur terre ou sur mer, exactement. Pour approfondir la question. Donc, tout le monde a répondu apparemment. Donc, c'est bon. Alors, la deuxième question... Question IRC ?
'''Reego''' : Oui, vite fait. Il y a Jarvis Cooker qui te demande quelle est la différence entre une catastrophe naturelle et une catastrophe surnaturelle.
'''Gérard''' : Je ne vois pas du tout ce que ça peut faire exactement. Il faudrait que je me renseigne sur ça pour faire les deux. Alors, deuxième question. Un orage peut-il provoquer une catastrophe (arbre arraché, toiture ou voiture qui s'envole, ou autre) ? ''[Gérard cherche une feuille]''. Attendez, attendez. Avant que vous répondiez, parlez... Non, c'est pas celui-là que je voulais. C'est celui-là. Voilà, on a des petits sondages. Que pensez-vous des catastrophes naturelles ? Alors, il y a 40% des Français qui n'en veulent pas chez eux. 20% de Français qui ne savent pas ce que c'est... donc pour eux c'est con parce que 20% des Fraçais qui ne savent pas ce que c'est... c'est dommage. 18% des Français n'ont pas compris la question. Donc, ça, c'est comme d'habitude. Ça m'aurait étonné les trucs...
'''Phildar''' : Il y a toujours des Français qui ne comprennent rien.
'''Gérard''' : Oui, mais de toute manière, c'est bien parce que même sur le deuxième débat, c'est pareil.
'''Bourdon''' : Mais non, le Français est con, c'est tout.
'''Gérard''' : Oui, mais de toute manière, il n'y a pas que le Français qui est con. Il y a 15% des Français qui aiment être naturels sans être des catastrophes... Voilà à peu près ce qu'on pouvait dire sur la première question. Donc, deuxième question. Je pense que tout le monde a pu entendre : un orage peut-il provoquer une catastrophe (arbre arraché, toiture, voiture ou autre) ? Et on va demander ça à J'ai mal aux fesses.
'''JMF''' : Ça peut faire des trucs comme ça, mais sinon, c'est bien.
'''Gérard''' : Ah bon, c'est bien pour toi ?
'''JMF''' : Non, mais en fait, ça dépend des fois parce que si jamais ça tombe sur une voiture, ça peut le faire, quoi.
'''Gérard''' : Non, mais attends. Quand on parle de toiture arrachée ou des arbres, c'est carrément le truc qui s'abat carrément sur la route. Attention, les arbres, c'est ce qui s'abat sur la route. La voiture, je pense que vous avez...
'''JMF''' : Oui, l'arbre, il peut tomber sur la voiture, mais sinon, ça dépend de la force de l'orage, quoi, si tu veux.
'''Gérard''' : Je pense, peut-être. Bourdon ?
'''Bourdon''' : Ouais, ben c'est clair que ça peut arracher des trucs. Regarde, moi avant, j'habitais au 8e étage. Il y a eu un ouragan et maintenant, mon immeuble, il s'est cassé la gueule. J'habite au 4e sous-sol. Donc, c'est clair, ça peut arracher des gros trucs. Par contre, un des avantages des ouragans, c'est que ça enlève la pollution. Ça fait un bon courant d'air et au moins, il n'y a plus de pollution.
'''Gérard''' : Suce-moi la pour continuer ?
'''SML''' : Quand tu veux.
'''Gérard''' : Bon, au lieu de dire quand tu veux, tu réponds à la question et tu t'écrases.
'''SML ''' : Ah oui, ça arrache plein de trucs. Mais on s'en fout, quoi. On est remboursé des assurances, donc...
'''Gérard''' : Bah ouais, c'est ça. Tu crois que... Tu crois que les assurances, ils vont rembourser les arbres arrachés, toi ? T'as vu jouer ça dans Spirou Magazine ou dans Tintin, toi ? Asticot ! Asticot !
'''Asticot''' : Évidemment, les orages, ils ont tellement une force dramatique, je dirais, mais ça peut être bénéfique pour certaines personnes. Parce qu'imagine quelqu'un qui veut revendre sa voiture. Il n'y arrive pas. D'accord ? ''[bruit d'interférence]''.
'''Gérard''' : Attends Astico, qui c'est qui a un téléphone pourri comme ça ?
'''Phildar''' : Non mais en fait ce qui se passe c'est que, je vais vous expliquer. Le standard ça fait ce bruit là parce qu'il y a trop de lignes ensemble. Si j'en mets plus qu'une, ça ne le fait plus. Et plus j'en mets, plus ça fait ce bruit là. Donc c'est la technique, on n'y peut rien.
'''Gérard''' : Donc Astico tu voulais dire ?
'''Astico''' : Ouais, imagine que tu veux revendre ta voiture. Tu n'y arrives pas pour x ou y raison. L'orage s'abat sur ta voiture.
'''Phildar''' : C'est bon Gérard, j'ai expliqué ?
'''Gérard''' : Ouais, ouais, ouais, ça y est.
'''Manu''' : Tu peux répéter pour moi ? J'ai rien capté.
'''Phildar''' : T'es naze c'est tout.
'''Gérard''' : C'est tout. Donc alors tu disais que tu voulais revendre ta voiture pour x raisons. Donc tu ne peux pas la revendre parce qu'elle est carrément écrasée par un arbre. C'est ça ta réponse ?
'''Atico''' : Absolument pas, c'est pas ça du tout.
'''Gérard''' : Ouais non mais on ne va quand même pas s'éterniser sur une question comme ça.
'''Astico''' : Mais si tu me laisserais finir.
'''Gérard''' : Bah ouais, alors vas-y.
'''Astico''' : Alors imagine que tu n'arrives pas à vendre ta voiture. Il y a un orage qui s'abat dessus. Donc forcément tu es remboursé par l'assurance. Ça t'évite de la vendre, parce que tu n'y arrives pas et tu touches le pognon et puis voilà.
'''Gérard''' : D'accord mais ta bagnole une fois qu'elle est écrasée par un arbre, normalement elle est bonne pour la casse.
'''Phildar''' : Non ça te fait une voiture de sport.
'''Gérard''' : Non mais la bagnole elle est carrément écrasée par l'arbre. Ça ne te fait même pas une voiture décapotab.
'''PHildar''' : Ou alors t'as une voiture avec un arbre dedans.
'''Gérard''' : Ouais bah ça te fait carrément un amas de ferraille. Prout, attendez, attends Prout...
'''Reego''' : Oui sur l'IRC il y a le chiant qui te demande si tu as peur de l'orage.
'''Gérard''' : Non pas du tout.
'''Reego''' : Et pourquoi ?
'''Gérard''' : De toute manière il y a certains trucs qu'il faut éviter de se protéger. De ne pas se mettre sous les arbres quand il y a des orages ou autres.
'''Phildar''' : Je croyais que ça protégeait de l'orage justement.
'''Gérard''' : Non pas du tout parce que normalement c'est bien déconseillé de se mettre sous un arbre.
'''Manu''' : Ya des parasols qui protègent de l'orage.
'''Bourdon''' : Non il y a des trucs prévus exprès, ça s'appelle un paratonnerre.
'''Gérard''' : Ouais tu crois qu'ils vont mettre un paratonnerre sur un arbre toi ? Mais bien sûr, mais bien sûr ! Bon Prout s'il te plaît tu réponds à la question ?
'''Prout''' : Bah écoute moi je pense que c'est bénéfique pour certains pays parce que même si ça arrache des trucs, ceux qui ont besoin d'eau, eh bien ça leur fait du bien les pays. Voilà.
'''Gérard''' : Je vois pas du tout la réponse à la question que je viens de te poser. Non mais attends parce que là ce que tu me dis ça arrange les gens parce qu'ils ont pas d'eau. Mais je vois pas du tout le rapport avec un arbre arraché, des toitures qui volent et des bagnoles qui sont écrasées.
'''Prout''' : Non mais si franchement moi je suis d'accord c'est vrai que ça arrache des trucs mais bon je veux dire c'est pas négatif sur tous les plans quoi.
'''Tekel''' : Ouais donc un fort orage ça peut faire des dégâts considérables par les éclairs, de pluie ou de grêle, comme des inondations quoi.
'''Gérard''' : Donc ce que je veux dire là dessus de toute manière on a fait le tour, mais je pense que là dessus des paratonnerres sur des arbres ça existe pas chez moi. J'ai jamais vu jouer ça dans... Non non non ça existe pas j'ai jamais vu jouer ça.
'''Reego''' : Il y a Davy One sur l'IRC qui te demande si tu connais la différence entre un typhon et une femme. Et en fait il y en a pas dans les deux cas c'est chaud et humide et après t'as plus de bagnole et plus de maison.
'''Gérard''' : Bon ok. C'est pas mal. Donc on va poser la troisième question avant de faire le prochain sondage parce que le sondage il a rapport sur... Pour ou contre des catastrophes naturelles je vois pas pourquoi les pour ou contre on en a ras le bol.
'''Reego''' : Toujours dans les sondages.
'''Gérard''' : Bah ouais. Alors peut-on déclencher une éruption volcanique des mâles ? On va demander ça à... Peut-on déclencher déclencher déclencher une éruption volcanique chez les mâles ?
'''JMF''' : C'est quoi une éruption ?
'''Gérard''' : Une éruption tu sais pas ce que c'est ? T'as jamais entendu... T'as jamais entendu parler d'Aaroun Tazieff ? Qu'est plus là parmi nous.
'''Phildar''' : Il est où ?
'''Gérard''' : Il est mort, abruti.
'''Bourdon''' : C'était le cousin de Cousteau.
'''Gérard''' : Bon ça suffit toi avec tes conneries. Donc je réponds à celui qui me demandait ça. Donc alors une éruption volcanique c'est un volcan qui se déclenche. Alors donc... Bourdon.
'''Bourdon''' : Ouais. Je voulais dire que toi, tu me déclenches pas mal d'érections vulcaniques c'est clair. Et je voulais dire que des fois ça entraîne aussi des tremblements de terre et je voulais savoir si toi t'avais déjà vécu des tremblements de fesses.
'''Gérard''' : Pour répondre à ta question qui tient pas debout, je vais te répondre tout de suite que j'en ai rien à foutre de ce que tu m'as dit.
'''Bourdon''' : T'as jamais vécu de tremblements de fesses ?
'''Gérard''' : Non pas du tout.
'''Bourdon''' : Pourquoi ?
'''Gérard''' : Alors si tu dis des conneries comme ça, mon pote, tu vas retourner voir Phildar et tout de suite. Voilà pour toi.
'''Bourdon''' : C'est pas une connerie, c'est Aaroun Tazieff.
'''Gérard''' : Ouais, c'est ça, t'as raison. Fous-toi bien de ma gueule. Tu retournes voir Phildar, il va te mettre au parfum.
'''Manu''' : J'ai un petit fait divers qu'on a reçu cet après-midi. Tu vas me confirmer ou pas. On a appris que M. Aaroun Tamer a découvert le plus gros, le plus touffu et le plus dévastateur des volcans. Il l'a découvert à Suresnes, sous un pantalon en cuir. Il paraît qu'il appartenait à une certaine Sandy. Qu'est-ce que t'en penses ?
'''Gérard''' : Alors là, je vais te dire une chose. Le prochain coup que tu... encore une connerie comme ça, tu rentres chez toi tout de suite. Non, non, mais moi je t'emmerde avec tes conneries. OK ? C'est la dernière fois que tu me dis... que tu me sors ça à l'antenne. Non, non, mais moi je te le dis.
'''Manu''' : Tu me confirmes pas, donc tu me dis que c'est naze.
'''Gérard''' : Non, non, mais moi je te dis que c'est des conneries, alors tu recommences encore une connerie comme ça, tu sais où que tu vas aller ? Tu vas aller chez toi. Ok ? Alors je te dis de te calmer tout de suite. Alors Suce-moi la, vas-y, pour toi ?
'''SML''' : Moi, ouais, je suis d'accord. Sur les éruptions et les catastrophes.
'''Gérard''' : Non, mais attends, hé, hé ! T'as compris la question ou pas ?
'''SML''' : Je me rappelle plus, donc j'osais pas trop te demander de la répéter, mais...
'''Gérard''' : Peut-on déclencher une éruption volcanique chez les mâles ?
'''Phildar''' : Il faut expliquer, Gérard, pourquoi chez les mâles, parce qu'on avait vu ça ensemble.
'''Gérard''' : Ouais, non, mais ça, j'expliquerai plus après.
'''Phildar''' : Bah non, parce que s'ils comprennent pas dès le début, ils peuvent pas répondre. Alors vas-y, explique-leur.
'''Gérard''' : De tte manière, que ça soit chez les mâles ou chez les femelles, de toute manière, c'est strictement pareil. Je vois pas du tout pourquoi...
'''Bourdon''' : C'est les mêmes giclées, ouais.
'''JMF''' : C'est quand ça se passe dans le caleçon, c'est ça ?
'''Phildar''' : Non, mais les éruptions volcaniques ne se font que chez les mâles.
'''Gérard''' : Mais pourquoi ? On n'en sait rien.
'''Phildar''' : Mais si, les volcans femelles, c'est pas fait pour faire des éruptions.
'''Gérard''' : Non, presque pas.
'''Bourdon''' : Ça fait des dégoulinures, ça fait des dégoulinures. C'est pas pareil chez les femelles.
'''Astico''' : Oui, je suis là. Ouais, bah, moi, à ta question, je pense que oui. Parce que je pense honnêtement que... Les femmes, quand elles ont leurs règles, elles sont beaucoup plus chaudes. Donc forcément, chez les mâles, ça peut faire effectivement partie des choses de la vie.
'''Prout''' : Bah, écoute, moi aussi, je suis d'accord avec ce qu'elle vient de dire.
'''Gérard''' : Non, mais ça, c'est pas mal. Parce que je fais passer tous les premiers. Les autres, ils écoutent bien ce qu'ils disent. Et puis après, ils vont dire « Ah bah, je suis d'accord avec ce qu'elle vient de dire ». Elle cherche même pas dans...
'''Phildar''' : Elle cherche même pas dans le dico, elle.
'''Reego''' : Oui, s'il te plaît. IL y a le Chiant sur IRC, vu que tu parles de mâles et des volcans, il te demande quelle est la femelle du voclan.
'''Gérard''' : Ça j'ai pas cherché et je pense que ça existe pas. Tekel pour terminer ?
'''Tekel''' : Ouais, effectivement, je pense que oui. Parce que les mâles sont plus énergétiques dans ce domaine, je pense.
'''Gérard''' : Ouais, mais tu peux préciser le fond de ta pensée ?
'''Tekel''' : Quand ils font l'amour, ils sont obligés d'éjaculer, donc...
'''Gérard''' : Ah, ben, voilà ! Alors, j'ai mal aux fesses ×?
'''JMF''' : Ben, je pense que... Ouais. Ben, en fait, ça dépend des fois.
'''Gérard''' : Non, mais attends, tu peux... C'est pas parce que tu parles le dernier que tu vas te dire ça dépend des fois. Tu vas répondre comme il faut à la question. Bon, d'accord, d'accord, on a compris. On a compris, j'ai mal aux fesses. Apparemment, t'as pas l'air de vouloir...
'''JMF''' : Non, mais je sais pas, moi, j'ai...
'''Gérard''' : Non, non, mais c'est bon, il y a une question IRC, c'est tout.
'''JMF''' : Non, mais ça dépend des fois, ça dépend parfois.
'''Gérard''' : Non, mais c'est tout, tu te tais, pour l'instant, il y a une question IRC.
'''Reego''' : Bon, il y a Ziwi sur l'IRC qui te demande si un volcan peut se reproduire lorsqu'il est en érection.
'''Gérard''' : Non. Non, non, non, non, non, non, non. Ça peut pas se reproduire.
'''Bourdon''' : Ça sert à quoi qu'il éjacule le volcan ?
'''Gérard''' : Non, mais attends, qu'est-ce qu'il crache le volcan ?
'''Bourdon''' : Ben, du foutre.
'''Gérard''' : Du ?
'''Phildar''' : Du feu.
'''Gérard''' : Ouais, il crache des pierres et de la lave.
'''Bourdon''' : Ouais, non, c'est du sperme.
'''Gérard''' : Ouais, c'est ça, ta connerie, c'est quoi ?
'''SML''' : C'est du sperme.
'''Gérard''' : Voilà. Alors, vous allez réfléchir à la quatrième. Un ouragan s'arrête-t-il de tourner les jours de fête, samedi ou dimanche inclus ? Et on va s'écouter le petit puceau de Paris avec sa grosse. Et on se retrouve tout de suite après au 0803 08 5000 et 0800 70 5000. A tout de suite. ''[Musique]''.
'''Gérard''' : Il est 1h03 du matin, vous pouvez toujours nous joindre au 0803 08 5000 et 0800 70 5000. Et toujours Reego qui vous attend sur IRC. Donc, vous pouvez toujours nous appeler sur l'IRC. On vient de s'écouter le petit puceau de Paris avec sa grosse. Et on va récupérer... Mais avant, je voulais donner un petit point sur la question numéro 2 qu'on avait dit. Peut-on déclencher une éruption volcanique chez les mâles ? Moi, j'ai trouvé un truc, là, dans un dictionnaire. C'est un refroidissement brutal au contact de l'air ou de l'eau, du magma qui s'épanche d'un... qui s'épanche, ouais, que je dis bien, s'épanche d'un volcan. Voilà. Et on va récupérer J'ai mal aux fesses, Bourdon, Suce-moi la. Asticot. Prout. Et Tekel. Alors, donc, un ouragan s'arrête-t-il de tourner les jours de fête, samedi ou dimanche inclus ? Donc, on va demander à J'ai mal aux fesses. Comme ça, il va pas me dire qu'après, il n'a pas répondu à la question.
'''JMF''' : En fait, il s'arrête à Saint-Volcan, déjà. Il s'arrête à Saint-Volcan parce qu'il n'a pas le droit de tourner. Et la Saint-Tempête aussi. Sinon, les dimanches, il ne peut pas s'arrêter.
'''Gérard''' : D'accord. T'as déjà vu des volcans... un ouragan qui s'arrête de tourner, toi ? Ah ouais ? Tu me diras quand est-ce que t'as vu ça.
'''JMF''' : Je t'appelle ?
'''Gérard''' : Ouais, non, mais tu diras ça à Phildar et Phildar me retransmettra ta réponse.
'''Bourdon''' : Ouais, moi, je dis que les ouragans, tout ça, comme tout le monde, ils sont syndiqués. Donc, il y a des jours où ils ne travaillent pas.
'''Gérard''' : Non, mais attends. Attends, attends, attends. C'est un débat sur les catastrophes naturelles. On ne parle pas de politique, là-dedans.
'''Bourdon''' : C'est la CGT et compagnie, tout ça.
'''Gérard''' : D'accord. Si tu veux t'amuser à parler de politique, ça ne sera pas avec moi. SUce-moi la donc ?
'''SML''' : Ouais. Ils n'ont pas le droit de tourner les dimanches. Non, non, mais ça fait partie de la convention et ils n'ont pas le droit. C'est tout.
'''Gérard''' : Non, mais je ne vois pas le rapport... Là, vous êtes en train de me balancer des trucs politiques, toi tu me balances les routiers. Attendez, attendez, attendez. Il y a une question IRC, avant.
'''Reego''' : Ouais, il y a TNT qui te demande s'ils tournent dans le sens des aiguilles d'une montre.
'''Gérard''' : En principe, oui.
'''Bourdon''' : Non, attends, Gérard. Non, mais attends. Mais ça dépend des pays. En Angleterre, ils tournent dans l'autre sens. Il y a des pays où ils roulent à gauche. Ou de l'autre côté. Les tornades, c'est pareil. Ils tournent dans l'autre sens. C'est normal. Il faut le préciser.
'''Gérard''' : Non, mais je pense que là, vous êtes en train de dire des conneries.
'''Phildar''' : J'ai mal aux fesses, il m'a donc dit hors antenne ce qu'il ne voulait pas que tu entendes. Donc, il a dit que c'était les jours fériés. C'était bien les dimanches, les jours fériés.
D'accord. Asticot. Asticot. Oh, la capitaine Caverne. Il y en a un qui se trouve où, là ? Il y en a un qui se trouve où, là ? Dans une caverne. D'accord.
'''Astico''' : Écoute, moi, d'après ce que j'ai pu savoir au niveau de Météo France, ils ont le droit de tourner quand ils veulent. C'est-à-dire que les jours fériés, les dimanches, ils ont le droit de tourner. Le fait est que souvent, pendant ces jours fériés et pendant les dimanches, les ouragans mâles ont tendance à rencontrer beaucoup plus d'ouragans femelles. Et à ce moment-là, ils s'arrêtent de tourner pour justement dévier leur direction et s'arrêter. Et puis, forcément, à la fin, ils s'entendent plus et puis alors là ça repète et ça repart.
'''Bourdon''' : Je voulais juste savoir si c'était Sophie Davan.
'''Gérard''' : Non mais sinon, on peut savoir aussi si c'est pas Alain Gillot-Pétré.
'''Bourdon''' : Là, ça se reconnaît à la voix et à la coupe de cheveux.
'''Gérard''' : Prout ? Toi. ''[bruits de pet avec la bouche]''. Celui qui recommence à faire des conneries comme ça, il va se calmer parce que sinon, il va raccrocher. Ça va aller vite, parce que ça commence à me plaire depuis tout à l'heure. Foutez-vous bien de la gueule des gens, vous allez voir tout à l'heure comment que je vais pas chercher qui c'est moi. Alors donc Prout pour toi ?
'''Prout''' : Moi j'avais entendu dire qu'en ce moment, les volcans étaient en grève. Parce qu'à cause des empêcheurs de tourner en rond.
'''Gérard''' : Non mais on parle des ouragans, on parle pas des volcans.
'''Prout''' : Ouais bah c'est pareil. Les ouragans étaient en grève en ce moment, j'ai entendu dire ça.
'''Bourdon''' : Je voulais juste te dire un petit truc qui a tout à fait rapport avec le débat. Je suis boulanger, j'ai des miches à pétrir donc je vais me coucher, salut.
'''Reego''' : Gérard, sur IRC il y a Supurator qui te demande comment se déroule la supuration hormonale d'un ouragan.
'''Gérard''' : Alors là, je sais pas du tout.
'''Reego''' : Et il me dit aussi que si tu fais un débat là-dessus, il faut savoir de quoi tu parles.
'''Gérard''' : Bon bah attends, dans ces cas-là ils ont qu'à me donner des...
'''Reego''' : Ils te posent des questions et depuis tout à l'heure tu dis « je sais pas ».
'''Gérard''' : Mais non mais attends, j'ai pas l'atlas pour tout ça. Je vais pas m'amuser à acheter des atlas. J'ai regardé dans le dico certaines définitions, je peux pas avoir tout. Tekel ?
'''Tekel''' : Bah moi au contraire je pense qu'un ouragan ça arrête de tourner uniquement si tu lui en as donné l'ordre. Moi c'est mon opinion.
'''SML''' : N'importe quoi... Pauvre fille...
'''Gérard''' : Attends, celle qui vient de dire la pauvre fille, tu vas commencer par te calmer toi parce que toi tu m'en fais une belle pauvre fille.
'''Phildar''' : Et toi ton avis Gérard en fait ?
'''Gérard''' : Bah moi personnellement, l'ouragan, bon bah lui il fait ce qu'il veut. S'il veut tourner les week-ends, ça c'est son problème. D'après les météorologues, en principe tu peux pas demander à un ouragan de s'arrêter de tourner. Ça c'est impossible. S'il a envie de casser tout sur son passage, il cassera tout sans te demander l'autorisation.
'''Phildar''' : Ouais comme en fait ce qui s'est passé aux Etats-Unis avec l'ouragan Mich.
'''Gérard''' : Ouais aux Etats-Unis et puis là il y a pas si bien...
'''JMF''' : L'ouragan Gérard aussi.
'''Gérard''' : Ouais l'ouragan Gérard il t'emmerde toi. Voilà.
'''Prout''' : Parait qu'il a envahi Suresnes.
'''Gérard''' : Ouais bah alors toi si t'es pas content, tout à l'heure, tu vas retourner chez toi.
'''Phildar''' : Gérard, j'ai une petite surprise à la place de Bourdon. Parce qu'en fait cet après-midi on s'est documenté avec Manu et on a réussi à retrouver le numéro d'Alain Gillot-Pétré. On va lui faire une surprise. Donc il est là ce soir.
'''Alain''' : Bonsoir à tous. Bonsoir. Bon vent, bon vent à tous. Oui alors demain sur la Bretagne de la pluie, des giboulées. Sur la côte d'Azur de la neige à partir de 37 mètres. Et sur la Corse de la pluie.
'''Gérard''' : C'est ça. Alors qu'ils annoncent déjà -2 sur Paris pour cette nuit. Donc ils annoncent de la neige à 37 mètres. Alors que la neige, elle tombe à 1200 mètres d'altitude. Ouais ouais c'est ça. 37 mètres sur la côte d'Azur. C'est ça.
'''Alain''' : On se décrote les oreilles. On se décrote les oreilles.
'''Prout''' : Moi je voulais dire que j'aimais pas sa coupe de cheveux à Alain.
'''Gérard''' : Ouais bah là faudrait peut-être...
'''Alain''' : Oui bonsoir ! C'est Alain Gillot-Pétré, bonsoir !
'''Gérard''' : Oh ça y est tu te calmes. Bonsoir. Bonsoir. On a compris. Ok ? Donc il y a à la question pour ou contre les catastrophes naturelles, il y a 60% des Français n'ont pas le temps de répondre à la question. 30% de Français qui pensent pouvoir le faire chez eux, le faire eux-mêmes. Et là il y a 10% qui estiment que ce n'est pas le thème du débat. Donc si c'est pas le thème du débat, je pense que c'est comme thème.
'''Manu''' : Gérard c'est bizarre parce que moi j'en avais un autre. Pareil, la même question et un autre sondage. 55% ont dit « moi les ras de marée j'en ai ras le bol donc j'ai plus à boire ». Je ne capte pas. 40% « mon volcan il est en éruption quand je mange épicé. » Et 5%... non je ne vais pas le dire parce que ça va être vénère.
'''Gérard''' : Ouais bah j'espère pour toi. Donc la cinquième question. Peut-on... à moins qu'il y avait une question IRC, Reego avant ?
'''Reego''' : Ah il y en a plein. Alors TNT qui te demande si c'est une trompe, l'érection d'un ouragan. Est-ce qu'on peut faire la vaisselle avec un hourra-gant ?
'''Gérard''' : Avec des mouffles aussi. Alors la cinquième question. Peut-on éteindre un incendie de forêt avec une inondation ? On va demander ça à J'ai mal aux fesses.
'''JMF''' : Ouais, tu veux pas me questionner plus tard ? Il faut que je réfléchisse à la question.
'''Gérard''' : Je vais pas coucher 107 ans avec...
'''Alain''' : C'est Alain. Alain Gillo-Pétré. Oui bonsoir. Bonsoir à tous. Bonsoir.
'''Gérard''' : Tu vas pas me répéter ça pendant les 10 questions moi.
'''Alain''' : Oui tout à fait. Tout à fait. Bonsoir. Alors ce que je voulais dire. Ce que je voulais dire, c'est que pour les incendies il faut s'adresser aux trappeurs canadiens et à leurs fameux canadaires. Voilà.
'''SML''' : Ouais alors pour les...
'''Alain''' : Bonsoir.
'''Gérard''' : Bon ça y est on a compris avec ton bonsoir. Tu vas pas nous faire chier toute la soirée avec tes bonsoirs.
'''Alain''' : C'est à cause de ma nouvelle coupe de cheveux, j'ai fpris un coup de soleil.
'''Gérard''' : Tu peux le calmer là ? Suce-moi la ?
'''SML''' : Ouais quand tu veux.
'''Gérard''' : Bon attends toi si tu continues tout à l'heure tu vas voir comment que je vais faire moi avec toi.
'''Manu''' : T'as du courage quand même.
'''Prout''' : T'aimes les spaghettis ?
'''SML''' : Les incendies, tu les éteins en faisant des innondations, en faisant péter les barrages.
'''Gérard''' : D'accord. C'est tout ce que t'as à répondre ?
'''SML''' : Bah oui pour créer une inondation tu fais péter un barrage, tu vas pas danser la danse de la pluie.
'''Alain''' : C'est pas malin.
'''SML''' : Ouais mais bon au moins t'as éteint le feu même si c'est pas malin.
'''Gérard''' : Ouais bah de toute manière ça m'étonnerait que tu peux éteindre des incendies de forêt en faisant péter un barrage hein.
'''Alain''', ''[voix grave et sans accent]'' : Ouais c'est Pedro je voulais juste te dire qu'un bon ras-de-marée, toi tu pourrais nous faire un ras-de-diarrhée pour éteindre un incendie non ?
'''Gérard''' : Attends qu'est-ce qu'il vient foutre là-dedans là le Pedro ?
'''Alain''' : C'est Pedro, je viens d'arriver, j'ai une ligne spéciale France Télécom. Je suis opérateur France télécom, je t'appelle du standard.
'''Asticot''' : Ouais bah écoute Gérard dans la logique des choses il n'y a pas d'inondation quand il y a le feu quoi. Donc déjà là, ta question, elle est stupide.
'''Gérard''' : Si les questions sont stupides, dans ces cas-là, je vois pas pourquoi qu'on t'a sélectionnée.
'''Asticot''' : Non attends il y a que cette question-là qui est stupide. J'ai jamais dit que les autres l'étaient mais alors celle-là franchement, elle bat franchement tous les records.
'''PHildar''' : Et alors pourquoi elles le seraient pas toutes ?
'''Gérard''' : Et alors si t'es pas contente dans ce cas-là, pourquoi qu'on t'a sélectionnée ? Tu peux me le dire ?
'''Phildar''' : Ah tu peux pas répondre là.
'''Manu''' : Tu fais moins la maligne.
'''Asticot''', ''[s'impatiente]'' : Ouais bah je suis là. Mais non mais qu'est-ce que tu veux que je te dise ? Il n'y a pas d'inondation quand il y a un incendie.
'''Gérard''' : Non mais attends tu me parles sur un autre ton sinon tu vas dégager toi ! Prout ?
'''Prout''' : Ouais moi je pense qu'on peut éteindre les incendies qu'avec les lances de pompiers. Et autrement on peut éteindre avec les lance-roquettes.
'''Gérard''' : Non mais attends justement les lance-roquettes, c'est avec ça que tu les déclenches.
'''Prout''' : Ouais mais des lance-roquettes à l'eau.
'''Gérard''' : Ouais mais non je pense pas que ça existe ça.
'''Phildar''' : Excuse-moi Gérard. C'est Phildar je voulais te demander : on n'éteint pas les incendies avec des Canada Drive ?
'''Gérard''' : Non non pas du tout.
'''Tekel''' : Oui parce que oui justement il faut surtout ne pas faire attention de ne pas noyer les habitants pour éviter qu'ils se noient.
'''Gérard''' : Ah d'accord. T'as été chercher ça dans quel magazine ?
'''Tekel''' : Bah dans Spirou magazine.
'''Gérard''' : Ah non mais moi je crois que t'as plutôt regardé... t'as dû trop regarder...
'''Tekel''' : Non mais j'ai trop fumé la moquette.
'''Gérard''' : Ouais t'as dû trop fumer la moquette et puis t'as dû regarder ça dans Puffet Hercule mercredi. Qui c'est qui n'a pas répondu ? Ah bah j'ai mal aux fesses maintenant ?
'''JMF''' : Ouais bah j'ai réfléchi bon en fait je m'en fous quoi.
'''Gérard''' : Ah bah tu t'en fous alors ? Bah tu vois j'ai mal aux fesses... Oh j'ai mal aux fesses ? Eh j'ai mal aux fesses.
'''Manu''' : Oh essuie-toi.
'''Alain''' : Mets de la crème.
'''JMF''' : Ouais bah en fait les incendies je m'en fous un peu quoi.
'''Gérard''' : Ouais bah tu t'en fous bah moi j'en ai rien à foutre comme tu réponds mal alors tu...
'''JMF''' : Je réponds pas mal je dis que je m'en fous. Écoute-moi deux secondes : ya une question je m'en fous, je l'admets, je vais pas dire n'importe quoi.
'''Gérard''' : Et alors, dans ces cas-là, si t'en as rien à foutre, pourquoi qu'on te sélectionne aussi ?
'''JMF''' : Parce que les autres questions m'intéressent.
'''Gérard''' : Non, mais attends, si celle-là te fait chier...
'''JMF''' : Eh bien, je te le dis.
'''Gérard''' : Donc, dans ces cas-là, je ne vois pas pourquoi tu as répondu bien aux quatre premières et que la cinquième, c'est de la merde.
'''JMF''' : Là, je n'ai pas d'avis. Je ne connais pas les incendies. Je ne vais pas te répondre n'importe quoi.
'''Alain''' : Attends, CG, attends. Tu réponds n'importe quoi. Tu fais comme tout le monde, c'est tout. C'est tout !
'''SML''' : Tu crois qu'on s'y connaît, nous ?
'''JMF''' : Eh bien, si je n'ai pas d'avis, je ne réponds rien, c'est tout. Je fais un débat correct, c'est tout, voilà.
'''Gérard''' : Non, mais moi, je peux te dire une chose que t'habites du côté de Valence, donc tu n'es pas loin de Marseille. Fais-moi confiance que des incendies de forêt, il y en a quand même eu pas mal cet été chez vous.
'''Alain''' : Hé Gégé c'est Pedro. C'est vrai ? C'est vrai, Gérard, que tu es le roi des pompiers ?
'''Gérard''' : Toi, t'es le roi des cons, c'est pas pareil. Peut-il y avoir des incendies de forêt dans le Sahara ? On va demander ça à J'ai mal aux fesses. Il va me dire qu'on fait passer les autres, ça va...
'''JMF''' : Non, le Sahara, en fait, je pense que ça dépend s'il y a trop de soleil, en fait.
'''Gérard''' : Non, mais attends. J'ai mal aux fesses. Ça dépend s'il y a du soleil. Mais est-ce que tu as déjà vu des arbres au Sahara ?
'''SML''' : Ben, pourquoi tu poses la question ?
'''Gérard''' : Et alors, pour savoir ce que vous allez répondre, bande de nazes.
'''Phildar''' : Et en plus, il y en a des arbres au Sahara, hein, Gérard ? Il y a des oasis.
'''Reego''' : Tout à fait. À ce propos, il y a Yako...sur l'IRC qui te demande à quelle température le sable prend feu.
'''Gérard''' : Le sable, il prend pas feu, hein, tout de même.
'''Reego''' : Bah, si, il y a des incendies dans le désert.
'''Gérard''' : Euh... Non. Il y a plutôt des tempêtes de vent.
'''Reego''' : On va demander à M. Gillot-Pétré. Il sait peut-être mieux.
'''Alain''', ''[retrouvant sa voix plus aiguë et maniérée]'' : Oui, tout à fait. Oui, bonsoir. Oui, alors, tout à fait, tout à fait. Il faut savoir que les dunes sont inflammables. D'ailleurs, les autorités du Sahara sont en train d'essayer d'inifuger, si Gérard comprend le mot, les dunes dans le Sahara.
'''Manu''' : Pas de marque.
'''Alain''' : Ah, pardon. Ah, pardon, excusez-moi. Et donc, tout à fait, les feux ravagent le Sahara. Oui, tout à fait. Demandez aux scorpions et aux cactus, ils vous le diront.
'''SML''' : Oui, ben, y a pas d'incendie dans le Sahara, parce qu'il y a pas de pétomane dans le Sahara, donc ils peuvent pas mettre le feu aux forêts.
'''Gérard''' : C'est quoi, ça ?
'''SML''' : C'est les mecs qui mettent le feu.
'''Gérard''' : Non, c'est... Ouais, non, mais pourquoi ? Parce que tu penses qu'il y en a dans d'autres villes ?
'''SML''' : Ben, bien sûr. Tu sais, dans le Sud de la France, c'est les pétomanes qui mettent le feu au forêt. Y en a pas dans le Sahara, des pétomanes. C'est interdit.
'''Asticot''' : Oui. Ben, moi, effectivement, je pense qu'il y a des incendies dans le Sahara. La preuve, il n'y a plus que du sable, maintenant.
'''Gérard''' : Non, mais attends. On vient de dire avec J'ai mal aux fesses qu'il n'y avait pas d'arbres. Donc, je vois pas comment... Prout ?
'''Prout''' : Ouais, ouais, ouais. Ben, moi, j'ai passé mes vacances au Sahara l'année dernière. L'été dernier. Ben, moi, j'ai vu que... Déjà, je voulais dire que la chiasse de dromadaire, c'était inflammable. Donc, à ce propos, quand t'avais des sultans qui se baladaient dans le Sahara, qui mettaient le feu à la chiasse, ça prenait feu et on pouvait facilement l'éteindre avec des bangas.
'''Gérard''' : D'accord. Ben, c'est bien parce que toi, si tu continues à dire des conneries comme ça, tout à l'heure, tu vas même pas finir.
'''Prout''' : Non, mais je te raconte la vérité.
'''Gérard''' : Ouais, non, mais on va demander à Tekel.
'''Tekel''' : Non, je pense pas. Comme on disait tout à l'heure, il n'y a pas de forêt. Donc, à moins que ce soit provoqué.
'''Prout''' : Tekel, c'est une catastrophe naturelle ou une catastrophe tout court ?
'''Gérard''' : Tekel, c'est une catastrophe semi-naturelle... Enrobée de... Enrobée... enrobée... enrobée d'une secousse... d'une secousse... Plus ou moins brutale, qui ébranle le sol. Tremblement de terre. Voilà ce que je pouvais dire. ''[musique de Fête la fête pendant 15 secondes]''. Non, mais moi, je voudrais répondre. Donc, peut-il y avoir des incendies de forêt ou autre dans le Sahara ? Donc, je pense pas. Donc, pour préciser à celui qui me posait une question qu'il y avait des pitomanes qui...
'''Alain''', ''[discret]'' : On s'en fout !
'''Gérard''' : Oh, attends, si t'es pas content, toi, tu dégages, OK ? J'ai le droit de parler, j'ai le droit de m'exprimer, OK ? Donc, pour dire que s'il y avait des pitomanes, de toute manière, normalement, dans les forêts... Des pitomanes. Donc, pour préciser à cette personne qui m'a posé ce question, qui disait qu'il y avait ça, c'est qui ? Donc, moi, je peux te répondre que normalement, dans les forêts, t'as des panneaux comme quoi c'est interdit de fumer et de se balader avec des bouteilles... des réchauds ou autre.
'''SML''' : Mais justement, les pétomanes, ils s'en foutent.
'''Gérard''' : Attends, bon, c'est... On a fait le tour. Reego, oui ?
'''Reego''' : Oui, il y a Davy1 qui te demande comment font les pompiers pour éteindre les incendies de volcans.
'''Gérard''' : Ah, ben ça, le volcan, tu peux pas les éteindre. Tu peux pas éteindre...
'''Reego''' : Non mais tu peux éteindre l'incendie qui est provoqué par un volcan.
'''Gérard''' : Ça dépend, parce que vu que la lave est chaude... Vu que la lave est quand même assez brûlante, donc, à mon avis, je pense pas qu'ils puissent avoir accès directement là-dessus.
'''Tekel''' : Ben, ils prennent un parachute.
'''Prout''' : Ils se mettent tous autour et puis ils pissent, c'est bon.
'''Gérard''' : Ouais, c'est ça. Et toi, tout à l'heure, tu vas aller pisser au standard, tu vas voir.
'''Phildar''' : Ah non, ça va puer, après. Non, non, non.
'''Gérard''' : Prendre l'avion, peut-il faire une tempête de neige ? Et donc, on va s'écouter la grosse bourrée avec Josette Lacochonne et on se retrouve tout de suite après aux 0800 70 5000 et 0803 08 5000. Et toujours l'IRC où que Reegaud vous attend. ''[Musique]''.
'''Gérard''' : Et voilà, donc, de retour pour la suite et la fin des catastrophes naturelles. 1h28. Et donc, vous pouvez toujours nous appeler au 0803 08 5000 et 0800 70 5000. Toujours Phildar au standard qui vous attend. Reego sur l'internet...
'''Reego''' : Et d'ailleurs, je voulais quand même dire qu'on est 2584,2. ''[applaudissements dans le studio]''. Et on va bientôt battre le record, je pense.
'''Gérard''' : Et donc, on venait de s'écouter la grosse bourrée avec Josette Lacochonne. Et on va récupérer pour continuer les débats, J'ai mal aux fesses.
'''Prout''' : Ben mets de la vaseline.
'''Gérard''' : Oh, faudrait peut-être te réveiller quand on t'appelle.
'''JMF''' : Bah, en fait, ça dépend de la taille des hélices. Parce que s'il y a des grosses hélices, ça peut faire bouger la neige et ça peut faire des tempêtes de neige à la fin.
'''Gérard''' : Non, mais attends. Hé, j'ai mal aux fesses ? Quand on te dit bonsoir, on te demande si tu es toujours là. Tu réponds oui. Tu ne réponds pas à la question maintenant. Alain Gillot-Pétré ?
'''Alain''' : Bonsoir. Bonsoir.
'''Gérard''' : Suce-moi la ? Asticot ? Prout et Tekel pour terminer. ""{il rote]''. Je me suis retenu.
'''Phildar''' : Je te rassure, t'as roté.
'''Gérard''' : Bon alors donc, vous avez compris la question, J'ai mal aux fesses, t'as déjà répondu, donc c'est pas mal. Alain Gillot-Pétré ?
'''Alain''' : Oui, vous pouvez répéter la question ? Bonsoir !
'''Gérard''' : Bon, bon, alors... Prendre l'avion, peut-il faire une tempête de neige ?
'''Alain''' : Je ne vois pas du tout le rapport.
'''Gérard''', ''[imitant l'inflexion de voix]'' : Ben moi, il faudrait peut-être répondre à la question ! ''[silence]''. Ok, ben d'accord, c'est super. C'est bon. Suce-moi la ?
'''SML''' : Ouais, ça dépend si tu voles dans les cunimulo-lingus, là, je sais pas quoi.
'''Alain''' : Non, les cumulo-pinus et les cumulo-anus.
'''SML''' : Ah ouais, d'accord, je croyais que c'était les cunilingus. Je confonds.
'''Phildar''' : C'est quoi ? C'est quoi un cunilingus ?
'''Gérard''' : Non, non, mais attends, il y a trop de jeunes encore qui écoutent pour ça, hein. Asticot ?
'''Asticot''' : Ouais, tu peux me répéter la question parce que j'étais en train de changer mon tampon...
'''Gérard''' : Eh tu commences à me gon... Hé, toi, les asticots, tu... L'asticot, là, tu commences à me gonfler ! Parce que si t'as tes ragnagnagna, dans ces cas-là, tu raccroches ton téléphone et tu...
'''Reego''' : Elle te gonfle l'asticot ?
'''Gérard''' : Non, parce que ça commence à me gonfler.
'''Phildar''' : Hé, t'as quand même des serviettes, hein.
'''Gérard''' : Alors, pour Asticot, qui commence à nous les casser... Alors, pour la dernière fois que je répète la question : prendre l'avion peut-il faire une tempête de neige ?
'''Asticot''' : Euh, non, je ne pense pas.
'''Gérard''' : Alors, tu peux t'expliquer ?
'''Phildar''' : T'argumentes ou tu dégages, hein.
'''Gérard''' : Bah, alors, dans ces cas-là, tu vas faire une chose, tu vas garder ton tampon bien entre tes jambes et puis on va te dire bonne nuit. Bonne nuit ! Voilà, bonne nuit, Asticot. Alors, Prout... Prout ?
'''Prout''' : Ouais. Ouais, ouais, moi, je pense que les hélices de l'avion, elles peuvent provoquer des tempêtes de neige. Et voilà, en plein été, c'est possible.
'''Tekel''' : Oui, je pense que oui, parce que si l'avion s'écrase avant même qu'on l'autorise à atterrir, je pense que oui. ''[les auditeurs lancent des insultes : oh la gogole !]''.
'''Gérard''' : Alors, j'ai mal aux fesses ? J'ai mal aux fesses, gare à ton matricule, toi. Ouais, tu vas voir. Donc, tu voulais rajouter quelque chose, Tekel ?
'''Tekel''' : Non, c'est ma réponse.
'''Gérard''' : Ok, ben moi, c'était ma question. Donc, une question IRC, Reego ?
'''Reego''' : Oui, oui, apparemment, il y a Superouragan qui connaît Tekel. Alors là, je suis épaté. Et il demande combien il y a de tempêtes de neige dans le cerveau de Tekel.
'''Gérard''' : Alors, dans le cerveau de Tekel...
'''Phildar''' : Ça dépend de quel, parce que des Tekel, il y en a eu pas mal.
'''Gérard''' : Je crois qu'il y en a 5.
'''Reego ''' : Ici, on joue à Tekel 3<ref name="hist13"></ref>, quand même.
'''Gérard''' : Qui est-ce qu'on récupère à la place de...
'''Alain''', ''[voix grave]'' : Moi, je dis que Tekel, elle se prend des tempêtes de neige quand elle se prend des giclées dans la figure.
'''Gérard''' : Donc, moi, je peux vous dire une chose. Prendre l'avion, peut-il faire une tempête de neige ? En principe, non, parce que déjà, quand il y a de la neige, ils ont déjà du mal à voler. À décoller, pardon, pas à voler. Donc, pour ça, il y a des services des aéroports qui sont spécialisés dans tout ce qui concerne la neige sur le... Sur la piste, ils la dégagent et ils mettent, pour éviter que les... Les réacteurs gèlent, ils ont un produit spécial qui leur mettent dessus la nuit pour... Non, non, mais sur l'avion... C'est des antigèle qu'ils mettent dessus. Donc...
'''Prout''' : Est-ce que tu penses que quand il neige trop, une fois que les avions, ils se mettent à givrer, comment ils font, quoi, pour le redémarrage, quoi ? Parce que s'ils restent givrés...
'''Gérard''' : Non, mais attends, je viens de... Je viens de l'annon... Je viens... T'es... T'es borné ou quoi, toi ? Non, mais je crois qu'on vient de le dire. Je viens de le dire, ce qu'ils faisaient.
'''Reego''' : Bon, Gérard, à propos d'avion, il y a Davy One qui te demande si c'est pas dangereux d'aller aux toilettes dans l'avion pendant que l'avion fait un looping.
'''Gérard''' : Euh... Quand on a été à New York avec Tekel... J'ai... J'ai jamais... ''[éclat de rire général]''.
'''Reego''' : Elle va être jalouse, Sandy.
'''Gérard''' : J'ai jamais eu l'occasion d'aller aux toilettes pendant le vol.
'''Tekel''' : Si tu tombes dans le trou, c'est normal.
'''Gérard''' : Non, mais attends, hé. Tu tombes dans le trou, déjà, je sais pas où que t'atterris.
'''Tekel''' : Bah oui, mais dans les toilettes de l'avion, il y a forcément un trou quand tu fais caca, donc...
'''Gérard''' : Ouais, bah, toi, arrête de fumer la moquette ou fume bien... Fume bien la moquette, hein. Non, mais je vais m'occuper de ton matricule tout à l'heure, toi.
'''PHildar''' : Gérard ? Gérard, excuse-moi. À la place de Asticot, on a Loup-de-nez.
'''Gérard''' : Donc, t'es d'où, toi ?
'''Loup-de-nez''' : Je suis d'ici et d'ailleurs.
'''Prout''' : Elle habite à Narine.
'''Phildar''' : Non, d'Issy les Moulineaux, pas d'ici et d'ailleurs. Région parisienne, 101.9 FM, elle a 21 ans.
'''Gérard''' : Donc, alors, pour toi, je répète la question, comme tu étais au standard. Donc, prendre l'avion, peut-il faire une tempête de neige ? ''[bruit de message répondeur insultant]''. Attends mais tu commences à me les gonfler toi, avec le répondeur, là. C'est quoi, là, qui est en train de bouger, là, depuis tout à l'heure, que t'es en train de me mettre en vert ?
'''Loup-de-nez''' : Ben, en fait, moi, je pense que les tempêtes de neige, quand on est dans l'avion, l'avion est en haut et la tempête de neige commence plus bas. Donc, forcément, il n'y en a pas dans l'avion.
'''Gérard''' : Donc, huitième question. Est-on assuré lors des inondations...
'''Phildar''' : À Suresnes ?
'''Gérard''' : Est-on assuré, abruti ! pas à Suresnes.
''SML ''' : C'est où, Suré ?
'''Gérard''' : Assuré !
'''Manu''' : C'est dans le Nord de la France, je crois, Suré.
'''Tekel''' : C'est où, Suresnes ?
'''Gérard''' : Dans le 971, du côté de la Guadeloupe. Est-on assuré lors des inondations quand on n'a pas de bouées ? On va demander à... J'ai mal aux fesses.
'''JMF''' : Moi je dis que ça dépend quelle bouée c'est.
'''Gérard''' : Non, attends, il y a une question IRC, déjà, pour commencer avant.
'''Reego''' : C'est pas une question, on me dit que Tekel, elle n'a pas à répondre parce qu'elle a déjà une bouée naturelle.
'''Gérard''' : Elle répondra et c'est tout. Si ça ne plaît pas au mec de l'IRC, qu'il se calme, lui. Alors, j'ai mal aux fesses ?
'''Reego''' : Ils sont quand même 2852.
'''Gérard''' : J'ai mal aux fesses ? Putain, mais tu vas répondre à la question correctement ou tu vas virer, toi ?
'''JMF''' : C'est quoi comme genre de bouée, Gérard ?
'''Gérard''' : Bon, allez, dégage. Hop, terminé pour toi. Parce que là, tu ne me les casseras plus. Alain GillotèPétré ?
'''Alain''' : Oui, bonsoir. Je voulais dire qu'une fois, j'étais inondé dans ma salle de bain et je n'avais pas de bouée. Et je n'ai pas été remboursé par l'assurance.
'''SML''' : Oui. Ça dépend parce que normalement, il faut avoir deux bouées chez soi. Quand tu dis si on n'est pas assuré, si on n'a pas deux bouées, si on n'a pas deux bouées, on n'est pas remboursé.
'''Loup-de-nez''' : En fait, ça dépend si la bouée, elle est gonflée ou si elle n'est pas gonflée. Si elle est gonflée, c'est bon, ça marche. Les assureurs sont d'accord. Mais si elle n'est pas gonflée, ça ne marche pas.
'''Prout''' : Oui, ça dépend. Depuis quand tu es assuré, si tu fais du canoé kayak, c'est bon, tu n'as pas besoin de bouée.
'''Tekel''' : Oui, effectivement, certaines personnes veulent être assurées, mais uniquement si on les aide à nager.
'''Gérard''' : Oui, mais même si on ne les aide pas à nager, est-ce qu'on peut les assurer ?
'''Tekel''' : Je pense aussi. Tout dépend de la personne. Si la personne a les possibilités de nager ou pas, ça dépend.
'''Alain''', ''[voix grave]'' : Je voulais dire que... c'est Pedro, c'est le mec de France Télécom. Je voulais dire que Tekel, même avec une bouée, avec le poids qu'elle fait, c'est clair, elle coule.
'''Tekel''' : D'abord, tu ne peux pas savoir quel poids que je fais.
'''Alain''' : Non, je t'ai déjà vu.
'''Tekel''' : Je ne t'ai jamais vu, mais je pense que tu ne dois pas être beau à voir.
'''Gérard''' : Ça y est, c'est terminé, parce que ça commence à m'énerver. Alors, à la question, faut-il être catastrophique pour naturaliser... Alors là je vois pas... Il y a 100% de Français qui n'étaient pas chez eux quand nous les avons appelés pour ce sondage. Mais c'est quoi ce sondage de nazes ? C'est quoi ça ?
'''Reego''' : C'est un sondage que j'ai récupéré sur le net, sur un site, sur les catastrophes naturelles. Et apparemment, tous les gens, ils ont appelé plein de gens pour cette question et les gens n'étaient pas chez eux.
'''Gérard''' : Alors, huitième question...
'''Phildar''' : Gérard, juste avant que tu poses la question, justement, on accueille, à la place de J'ai mal aux fesses Karambar d'Angoulême.
'''Karambar''' : Bonsoir. Bonsoir, Paris. Bonsoir, Dominique. Bonsoir, Dominique Georges, du 20e arrondissement. Dis donc, Gérard, tu ne me demandes pas comment ça va, moi ?
'''Gérard''' : Tu n'en sais rien, tu n'as pas regardé ce matin. C'est ça ? T'inquiète pas, tu ne me le feras pas, moi. Donc, est-on assuré lors des inondations, quand on n'a pas de bouée ? Voilà la question.
'''Karambar''' : Ben, quand, par exemple, bon, Théoli Alexandre dit...
'''Phildar''' : J'ai coupé.
'''Gérard''' : Voilà, ben, c'est bien. Ben, lui, ça a été vite fait. Donc, neuvième question...
'''Alain''' : Oui, bonsoir, c'est Alain Gillot-Pétré. Je voulais juste vous dire bonsoir, parce que j'ai une météo à présenter demain matin, donc il faut que je me couche.
'''Gérard''' : Bonsoir à toi. Neuvième question. Un politicien est-il considéré comme une catastrophe naturelle ?
'''Karambar''' : C'est Karambar, je me suis calmé, c'est bon. Un politicien est-il considéré comme une catastrophe naturelle ? Je ne sais pas, Gérard. Qu'est-ce que tu en penses, toi, perso ?
'''Gérard''' : Non, mais attends, tu réponds à la question, parce que...
'''Karambar''' : Oui, une catastrophe naturelle, je trouve que la politique, c'est une catastrophe, de toute façon.
'''Gérard''' : D'accord. Voilà ce que je voulais entendre. Voilà, alors, suce-moi la ?
'''SML''' : Oui, je pense que les mecs de droite sont des catastrophes naturelles, mais bon. C'est une idée...
'''Loup-de-nez''' : Oui, ben moi, je pense que c'est ceux qui votent qui sont considérés comme catastrophes naturelles. C'est les gens qui votent qui sont... considérés comme une catastrophe naturelle.
'''Prout''' : Ouais. Ouais, ouais, ouais. Ouais, moi, je suis d'accord.
'''Gérard''' : D'accord. C'est ça, ta réponse ?
'''Prout''' : Oh, ouais. Non, mais plutôt le samedi et jamais le lundi.
'''Tekel''' : Ouais, mais je pense qu'il n'y a pas que les politiciens, il y a aussi les animateurs.
'''Gérard''' : Moi, je pense aussi, mais je pense que les animateurs, ils ne sont pas considérés comme catastrophes naturelles. J'en ai pas encore connus quelques-uns.
'''Loup-de-nez''' : Ben, ça dépend qui, surtout.
'''Tekel''' : Ben, si, je pense qu'il y a déjà toi, déjà.
'''Gérard''' : Ah bon, ben, c'est ça, merci.
'''Manu''' : Allez, elle dégage.
'''Prout''' : Il y a que la vérité qui blesse.
'''SML''' : Elle a raison, elle a raison.
'''Gérard''' : Oui, oui, vous allez voir. Faire l'amour... c'est la dernière question. Après, on fait la conclusion parce qu'il est déjà 1h42 et...
'''Prout''' : Non, mais c'est bon, on a le temps, on a le temps.
'''Gérard''' : Ouais, ben, attends, on a le temps, peut-être toi, mais pas moi. Faire l'amour provoque-t-il un tremblement de terre ? Voilà. Et on va demander, ben, Karambar ? ''[silence]''. Karambar ?
'''Manu''' : Alors, Phildar ?
'''Reego''' : Tu l'as viré, Gérard.
'''Gérard''' : Non, Karamber, je l'ai pas viré, c'est pas Karambar que j'ai viré.
'''Karambar''' : Non, c'est Tekel, c'est le boudin là.
'''Gérard''' : Attends, le boudin, il t'emmerde toi, connard.
'''Karambar''' : Mais non mais attends, on dit que c'est un boudin, normalement, pour ce chien-là, pour cette race-là. Tu vas pas t'énerver, c'est vrai.
'''Gérard''' : Bon, tu réponds à la question.
'''Karambar''' : Je vais dire oui.
'''SML''' : Oui. Oui, oui, oui, oui. Ben oui, oui, oui. Je vais te dire oui aussi.
'''Gérard''' : Bon, alors, si vous répondez tous oui, comme ça, sans me donner d'explication, je pense qu'on va perdre la conclusion.
'''SML''' : C'est parce que t'as jamais provoqué de tremblements de terre en faisant l'amour. Mais si t'avais connu ça, tu poserais même pas la question.
'''Gérard''' : Non, ben, de tte manière à des tremblements de terre, il y en a pas des masses en ce moment. Il y en a dans d'autres pays, mais pas par ici. Si, il y a eu des secousses dans le sud de la France, je crois. Il y a pas tellement longtemps. Prout ?
'''Prout''' : Ouais, moi je pense que c'est possible, parce que j'ai vu sur un site internet www.bulldog2suresnes.fr...
'''Gérard''' : Alors, Prout, c'est terminé pour toi... Phildar, s'il te plaît, merci. Tekel pour finir ?
'''Tekel''' : Oui, donc, effectivement, parce que je pense que oui, parce que mon copain, quand il me fait l'amour, la maison s'effondre, quoi. La maison s'effondre presque toutes les semaines.
'''SML''' : C'est à cause de ton poids.
'''Karambar''' : Tekel ? Il paraît que ton copain, il jouillait pas.
'''Loup-de-nez''' : Bah écoute, quand on a un partenaire comme Tekel, je pense que oui.
'''Gérard''' : D'accord. Question IRC, celui qui s'amuse à dire des conneries comme ça... Reego sur IRC ?
'''Reego''' : Alors, oui, on parle de tremblements de glaires lors de fellations. Et il y a Oxyd qui demande si les bombes atomiques de l'armée sont-elles des catastrophes naturelles.
'''Gérard''' : Ben, je pense que oui. Voilà, je peux lui répondre oui à mon avis. Voilà. Alors, conclusion, Karambar ?
'''Karambar''' : Ouais, je vais te dire, ouais. Non, je vais te dire, je suis malade. Bon, voilà, je suis dépressif, bonsoir.
'''Gérard''' : Salut. Voilà. Salut. Suce-moi la, conclusion ?
'''SML''' : Bon, bah Gérard, c'est quand tu veux. C'est tout. Voilà, suce-moi la quand tu veux.
'''Gérard''' : Bon, ben là, tu vas te faire foutre, toi. Loup-de-nez ?
'''Loup-de-nez''' : Ça sera sans commentaire. Parce que... Sinon, tu vas me virer. Alors, je préfère rester sur ma position, c'est-à-dire sans commentaire.
'''Gérard''' : Ouais, je sais. Tu vas me dire comme toutes les semaines que mon débat n'a ni queue ni tête, c'est ça ?
'''Loup-de-nez''' : Attends, c'est la première fois que j'interviens sur l'antenne, alors je vois vraiment pas pourquoi je pourrais te dire ça toutes les semaines.
'''Gérard''' : Et alors, dans cs cas, quand je te demande la conclusion des catastrophes naturelles, tu la fais, c'est tout.
'''Loup-de-nez''' : Bah, je viens de te dire, c'était nul.
'''Gérard''' : D'accord, ben, je m'en doutais. Prout ?
'''Prout''' : Ouais, encore un débat tout naze avec des questions toutes nazes sans pour autant être aussi chiant qu'on pouvait le penser.
'''Gérard''' : Si ça vous plaît pas dans ce cas-là, vous faites une chose, vous écoutez la radio et puis on vous sélectionnera pas.
'''Reego''' : J'ai une conclusion de Delight sur IRC. Alors, il dit que quand le sable brûle, ça provoque de big catastrophes et on est obligé de... Alors, attends... De pencher la terre pour éteindre les incendies provoqués par les avions qui s'écrasent après avoir provoqué des tempêtes de neige.
'''Manu''' : C'est compliqué, peut-être, pour Gérard.
'''Gérard''' : C'est vachement compliqué pour moi.
'''Reego''' : Alors, attends, il résume. En conclusion, ton débat, c'est de la merde.
'''Tekel''' : Donc, très bon débat et puis faites attention parce qu'il va y avoir beaucoup de tempêtes, surtout en ce moment.
'''Gérard''' : D'accord, ben, moi, je t'en prépare une pour tout à l'heure, toi. C'est quand je veux où tu veux. Tu vas voir la tempête de neige que je vais te faire, toi. Donc, sur les catastrophes naturelles, le premier débat, c'était dans l'ensemble plutôt pas mal, ça s'est bien passé. Pour une fois que Phildar, il a bien fait son boulot. Pour une fois, on va avoir le deuxième débat mais je pense que le deuxième débat va être aussi bien que le premier, je l'espère. Donc, on va se retrouver pour le deuxième débat qui va porter sur les moyens de communication et vous pouvez toujours nous appeler au 0803 08 5000 et 0800 70 5000 et toujours l'IRC.funradio www.funradio
'''Reego''' : Voilà. Tout à fait. Attends, je regarde vite fait. On a dépassé les 3000. 3242.
'''Manu''' : C'est joli.
'''Reego''' : Oh la vache.
'''Gérard''' : Sur un débat ?
'''Reego''' : Ouais. 3356 maintenant.
'''Phildar''' : Et ils tiennent tous sur un écran ?
'''Reego''' : Bah non, malheureusement, on se débrouille.
'''Gérard''' : Donc, on se retrouve tout de suite après pour le deuxième débat qui portera sur les moyens de communication et on va s'écouter les mouettes de Boulogne avec la chaise dans les chaussettes. ''[Musique]''.
== Le débat sur les moyens de communication ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Et voilà, toujours la suite du débat de Gérard, 1h54 et on vient s'écouter, au début c'était les mouettes de Boulogne avec la chaise dans les chaussettes et là c'était...
Je sais pas, c'est toi qui avais le titre Gérard ?
Bah moi j'ai la mouette de Boulogne avec la chaise dans les chaussettes et là j'ai pas le deuxième.
Mais ça c'est la suite, c'est les colons de Neuilly avec ce que tu veux autour...
Avec du caca sur les ailes qui pue.
Ok, donc vous pouvez toujours nous joindre au 0800 75 000 et 0800 308 5000, toujours Rigo sur l'IRC www.funradio.
On va passer des petits bonjours, aujourd'hui assez, Compi Music, Big Up, Super Ouragan, Davy One, Jarvis Cooker, Torkane, The We, Oxide, Junkhead et compagnie.
Et on va saluer aussi les gens de Belgique.
Et Coton-Tige !
Il y en a un qui s'appelle Coton-Tige.
Et on va saluer aussi quand même les gens de Belgique.
Et Yanti !
Yanti, pardon.
Qui nous écoutent.
Donc on va attaquer le deuxième débat, les moyens de communication.
Donc on va attendre que M. Fildar se réveille.
C'est arrivé Gérard !
Parce que là pour l'instant j'ai pas de nom à vous annoncer.
Donc si ça y est c'est fait.
Ok, alors on va accueillir Karambar, 23 ans d'Angoulême.
Bonsoir Paris, bonsoir Christophe Coutant.
Comment ?
Non, t'énerves pas Gérard.
Non mais quand on dit bonsoir, tu dis bonsoir.
D'accord ?
Bonsoir, oui.
Alors Bénur, 27 ans Paris, on écoute...
Non, 21 ans, pas 27, excuse-moi, 21 ans.
Oui, bonsoir Gégé, bonsoir Adé, bonsoir la France.
Bonsoir.
Bonsoir.
On appelle un accueil...
Pustule !
Pustule !
Pustule, 27 ans d'Onis, où qu'on peut écouter Fun Radio sur 107.2.
Bonsoir Gérard, bonsoir les garçons.
Bonsoir Pustule.
Bonsoir.
Bonsoir Adé.
Je parie qu'elle est dans le coup elle aussi.
Ah ouais ?
Tourniquet !
Tourniquet, 26 ans Damien.
Oui, bonsoir.
Eh oh !
Ah merde, c'est de Tourniquet Gérard.
Non, non, non.
J'ai un Bourriquet et un Tourniquet.
C'est Bourriquet, moi.
Non, mais attends, pour l'instant, je ne t'ai pas appelé.
Alors, on dit bonsoir Tourniquet.
Bonsoir Tourniquet.
Bonsoir Gérard.
Bonsoir.
Bonsoir.
Bourriquet, maintenant.
Oui, bonsoir Gérard, bonsoir...
19 ans d'Orléans.
Salut, bonsoir Fildard, bonsoir Ego.
Salut Bourriquet.
Bonsoir à tous.
Bonsoir Bourriquet.
Oh, ça y est, ça y est.
Bonsoir à Gaëlle, qui nous écoute aussi chez elle.
Bonsoir à Gélie, s'il vous plaît.
Comment ?
Qui ?
Gaëlle.
Non, mais attends, c'est bien de dire des conneries comme ça.
Ah, ok.
Proute apparente de Versailles.
Poutre.
Salut Gérard, c'est dommage que vous ne m'ayez pas appelé le débat précédent.
J'avais des choses marrantes, là, ça va être tourette, je vous le dis direct.
C'est bon, tu peux te lâcher.
C'est reconnu.
Non, mais ça y est, vous vous calmez, merci.
On connaît les voix.
Non, c'est moi qui commande, pour l'instant, ce n'est pas vous.
Non, c'est bon.
Ok, alors, le débat, c'est moyen de communiquer.
Donc, quel moyen de communication possédez-vous ?
On va demander à Carmbar.
Les hormones.
Hein ?
Les hormones, les papillons, tout ça, voilà.
Ah, ça va pour toi, c'est un moyen de communication, les hormones ?
Oui, avec les pets que je lâche, des fois, ça fait fuir mes copains et tout,
et ils comprennent tout de suite que j'essaie de communiquer.
D'accord.
C'est quand tu veux qu'ils s'en aillent de chez toi, c'est ça ?
Voilà.
Bien sûr.
Moi, j'ai la bouche, comme tout le monde, pour communiquer.
D'accord.
J'ai aussi un portable.
D'ailleurs, j'ai ton numéro.
Ouais.
Benioir, tu fais gaffe, parce que tout à l'heure, tu as...
C'est pas moi, c'est pas moi, c'est pas moi.
C'est qui qui vient de dire qu'il y avait mon numéro ?
Volo.
Hein ?
Jean-Luc.
Jean-Luc !
Jean-Luc !
Jean-Luc !
Pussule.
Oui ?
Moi, je possède des phéromones, qui sont des hormones sexuelles, voilà.
Et aussi un téléphone.
Pas de marque.
Comme moi, cochonne.
Ton Ike ?
Moi, j'ai un portable.
Ouais, c'est tout ?
Ouais, c'est tout, mais c'est déjà pas mal, tu sais.
Ouais, bon, Ike ?
Moi, j'ai un portable, j'ai un tatou.
J'ai une Sibi.
Hein ?
Et voilà, j'ai du papier, du stylo, j'ai tout, quoi.
D'accord.
Question.
Je vais laisser un petit sondage, vite fait.
Par le biais de quel appareil préférez-vous communiquer ?
96% par la bite, 15% par la langue, 45% par portable, 25% par téléphone, 28% par Game Boy
et les autres consoles de jeux vidéo.
Et pour toute l'apparente ?
Ouais, moi, j'ai un PC.
C'est Jean Voyageur qui fait caca sur les balcons.
Non, attends, je vois pas.
Regarde bien, regarde bien.
Regarde bien sur ta terrasse.
Ouais, bah, fais gaffe, toi, parce que tu pourras peut-être dégager avant la fin du débat.
C'est bien possible.
On dégage jamais, lui.
Ouais, non, mais c'est ce qu'on verra.
Parce que c'est pas lui qui commande, ça sera moi.
Donc, qu'est-ce que je voulais dire d'autre ?
Quel moyen de communication posséder ?
Moi, j'ai simplement un portable.
Qu'est-ce que t'as, toi, Gérard ?
Moi, j'ai simplement un tatou.
Ça me suffit.
Largement.
Non, t'as un portable.
Un tatou.
Les hémorroïdes.
Le portable et le tatou, voilà.
C'est tout.
Et quand même, Gérard, tous les gens de l'IRC reconnaissent qu'ils utilisent Internet pour communiquer.
Ouais, mais ça, justement...
Internet.
Voilà.
Donc, pensez-vous que l'Internet a beaucoup changé de nos jours ?
On va demander à 40 bars.
Comme dit Tony, pourquoi moi ?
Alors, 40 bars...
Ouais, mais ouais, Internet, bien sûr que ça m'a changé ma vie.
Bien sûr que je fais mes courses par Internet.
Plein de trucs par Internet, bien sûr, c'est génial.
Internet par vous, Internet.
Merci, Internet.
Non, mais attends, parce que tu vois, là, ce que tu dis, de faire ses courses par Internet...
Moi, je vais te dire une chose, hier, ils m'ont appelé pour ça, et justement, j'avais vu le reportage là-dessus,
comme quoi tu pouvais acheter des vaches et tout ça par le site, par le moyen de l'Internet.
Attends, toi, qui c'est qui vient de sortir ça ?
Je sais pas, on va chercher.
C'est bon, on gère.
Continue, continue.
Bénure.
Non, mais continue, ce que t'es en train de dire, Gégésie, sur ce que t'avais à la télé.
Non, parce que sur...
Parce qu'on parle de l'Internet, donc c'est vrai que tu peux acheter beaucoup de choses.
Qu'est-ce que tu peux acheter, par exemple, sur Internet ?
Ben, tu peux faire tes courses, tu peux acheter des vaches, des bagnoles, un appartement, tout, tout ce que tu peux trouver.
Avant tout, carrément ?
Ben, ce que t'as besoin dessus.
D'accord, donc si tu veux, tu passes une annonce, tu tapotes, là, ouais, je cherche une vache, des années 80, d'occasion.
Même des CD, je pense que tu peux trouver ça par le bien de l'Internet, maintenant.
Ah, carrément.
Et puis, l'Edric et Martin ?
Bénure.
C'est Bénure, et je voulais dire que, comme on dit, ouais, ça a bien changé.
C'était plus que c'était, à l'époque, au bon vieux temps, on faisait des Pac-Man, maintenant, c'est Internet, c'est autre chose.
Ben non, mais pour toi, est-ce que...
Et je pense que toi, t'en es resté quand même un peu à l'époque du Pac-Man, en général, quand même, non ?
N'importe quoi, toi.
Quand même, quand même.
Pistule.
Ouais, moi, j'ai pas Internet, je suis pas in, par contre, j'ai une console ségale.
Et là, c'est pour le Larsen.
Merci pour le son.
Tournique.
Ouais, ben, moi, j'ai Internet, et depuis le temps que je l'ai, ben, je bouge plus de chez moi.
Et tu peux préciser ?
Ben oui, je fais mes courses, au lieu d'aller au supermarché, je vais sur Internet.
Je veux des cigarettes, et ben, je vais sur Internet.
Je veux tout ce que je veux, je le prends sur Internet, et je bouge plus de chez moi.
Une bille.
Tu prends ton pied sur Internet, aussi, non ?
Euh, ça dépend avec qui, ouais.
En général, ouais, parce que je loue les services...
Tu prends ton pied sur Internet ?
De Rigaud, de Rigaud.
Tu prends ton...
Oh là !
Tu prends ton pied ?
Oh, Rigaud, il s'en fait pas mal, hein, le Rigaud, là.
Alors, euh, ça y est, bon, bourriqué.
Ça crache cher.
Oh !
On se calme.
On reste, on reste tranquille.
Oh !
On ne touche pas que des boutons, hein.
Tu ne caches pas derrière ton écran.
Bourriqué.
Oui, bonsoir à tous.
Oui, donc, c'est vrai, ça a bien changé, l'Internet.
Moi, je me souviens encore du temps où ça s'appelait Intermarché.
J'ai compliqué de faire mes courses, et puis, j'ai dragué la caissière.
Bourriqué.
Bourriqué.
Attendez, hé, bourriqué.
Ouais.
Ouais.
Ouais.
T'as bien compris le sens de la question ?
Ah, bah, ouais, aussi bien que toi.
Non, mais je ne crois pas, hein.
Ok.
T'avais qu'à écouter ce que j'ai dit, déjà, tout à l'heure.
D'accord.
Prout apparente.
Oh !
Putre !
Bon, alors, qui c'est qui a un portable et qui s'amuse avec de la flotte, là, depuis
tout à l'heure ?
Ouais, parce que ça me donne envie de pisser.
C'est moi, je suis dans ma main, je veux faire un jardin secret.
Hé, ça commence à bien faire, vos conneries, maintenant.
Je vais venir me masser le dos, là.
Ah, il y en a un qui a coupé.
C'est pas moi.
Manu.
Donc, prout apparente.
Je kiffe aussi les boom blasters qui ont...
Quand tu baisses les basses, c'est un son pourri.
Et quand tu montes, c'est carrément une discothèque.
N'importe quoi.
Oh, là, là, il y a des portes.
Hé, qui c'est ?
Oh, là, là, on t'appelle de partout, là.
Oh, Manu !
C'est pas moi qui ai pris les auditeurs, c'est Fildar.
Moi, je ne comprends rien à ce qui se passe.
Pour en revenir au débat et à Internet, il y a Delight qui dit qu'Internet, ça a bien
changé.
Il y a même des blaireaux comme toi qui savent ce que c'est.
Si je suis un blaireau, ben lui, pourquoi il s'amuse à tapoter pour avoir des notes
astronomiques ? Parce qu'il n'y a pas que l'Internet qui fonctionne aussi de nos jours,
qui peut changer.
Il y a aussi le bien du Minitel, mais ça coûte plus cher que l'Internet, je crois.
Donc, le Minitel, ça coûte cher et l'Internet, c'est pareil, ça doit coûter aussi cher
parce que déjà, il faut que tu t'abannes là-dessus.
C'est faux.
Non ?
C'est faux.
Non, ça m'étonnerait.
C'est faux.
Ça m'étonnerait, moi, je te dis.
T'as cherché dans le dico si ça voulait dire Internet ou pas ?
Non.
Pourquoi ?
Non, parce que j'ai pas pensé à regarder et Internet, ça veut dire ce que ça veut
dire.
Et toi, celui qui me dit abrège, il va se calmer.
Fildard, tu as commencé par te calmer parce que tu m'as trouvé des auditeurs qui sont
nazes.
Oui, c'est vrai.
Attends, tu crois que c'est facile en 5 minutes de trouver des gens potables ?
Gérard, d'ailleurs, il y a Bourriquet qui est parti et on accueille Je Pus de l'Arrêt.
Oui, bonsoir.
C'est l'invité mystère.
Donc, c'est Je Pus de l'Arrêt à la place de Bourriquet.
Appelle l'invité mystère.
Bonsoir.
Gérard, bonsoir à tous.
Salut, à Tulipe.
Salut.
Donc, alors, je te répète la question.
D'accord.
Pensez-vous que l'Internet a changé beaucoup de nos jours ?
Ouais, c'est vrai que ça a pas mal.
Ça a pas mal.
Oh, mais c'est pas un bordel, là !
Manu, tu vas te prendre une gaufre, hein !
À propos d'Internet, il y a Ouragan sur l'IRC qui dit que le meilleur moyen de communiquer
maintenant, c'est le site gg-mois-le-cul.com.
N'importe quoi.
N'importe quoi, ce con.
Alors, Je Pus de l'Arrêt, donc, pour toi...
Ouais, ouais, ça a pas mal évolué.
J'ai déjà cliqué sur Mulo hier soir.
J'ai été d'ailleurs sur ton site de www.tantous-de-surenne.fr.
Alors, Je Pus de l'Arrêt, tu dégages à ton mère, tu dégages.
Voilà, comme ça, ça va être vite fait, Je Pus de l'Arrêt.
C'est un nouveau, celui-là.
Je me disais bien que tu Pus de l'Arrêt.
C'est un nouveau, celui-là.
C'est pas un habitué.
Merci pour les Larsen, encore !
Eh ben, c'est pas la cateaube !
Possédez-vous un portable, un tatou pour votre travail ?
On va demander à 40 barres.
Non, ni l'un ni l'autre, et j'aimerais bien que tu m'en offres un jour.
Non, ben, ça, tu vois, tu fais comme tu viens de faire.
Tu demandes à ta pelle quand il y a la possibilité d'en gagner.
Tu téléphones, tu fais 0875 000 et...
Non, ben, tu n'as qu'à regarder Fun TV, il y en a gagné cette semaine.
Voilà.
Donc, pour toi...
Voilà, cateaube !
Putain, il commence à me penser les couilles, ce espèce de petit con, là.
C'est au standard, Ben Hur.
Eh, connard !
Alors, Ben Hur.
Voilà, cateaube !
C'est le gamin qui a l'habitué, là.
Ben Hur !
Oui, je suis là. Non, mais il a raison, le gamin.
Ben Hur, tu réponds correctement, tu dégages !
Ouais, ben, je voulais te dire que j'ai un portable,
et si tu veux le numéro pour marceler, là, ce quart, tu peux toujours rêver.
Ben, toi aussi, tu peux rêver.
Mais je t'ai redemandé.
Non, ben, alors, tant mieux.
Mais tu peux me le filer, quand même.
Non, ben, là, tu iras te faire sodomiser.
Gérard, j'ai calmé, je pue de l'arrêt.
Non, non, non, je t'ai dit de le dégager.
Non, mais moi, je veux plus le savoir, moi.
Quand je te dis de virer la personne, tu la vires.
C'est pas la peine de le calmer, tu le vires.
C'est tout, c'est tout.
Ça va vite avec moi.
Il est propre, il sent bon de l'arrêt, maintenant.
Alors, Pissul.
Ouais, moi, j'ai ni tatoune ni portable,
et je veux bien le numéro de portable de Ben Hur.
0-1-42-3-1, là.
Euh, hé, c'est...
Oh !
92-4-6-9.
92, c'est bien.
Non, c'est bon, là, Manu.
Tu peux me gérer, là ?
Il y en a deux, là, qui sont en train de s'échanger des numéros.
Oh, mince.
À l'antenne, merde, Manu.
C'est nul.
C'est naze.
0-1-43.
Oh, putain.
Je suis là, hein.
Euh, Tourniquet.
Oui.
Euh, oui, ben, moi, je m'en sers énormément
parce qu'en fait, je suis commerciale.
Et, euh, en fait, donc, je vends des portables.
Ouais.
Et je m'en sers énormément
parce que j'ai des clés...
J'ai de la clientèle qui m'appelle régulièrement
pour, justement, acheter des portables.
Bon, attends, parce que là, ça commence...
C'est lui qui est dans sa baignoire, là.
C'est qui, là, qui est dans sa baignoire ?
C'est moi, c'est moi.
C'est qui ?
Moi, moi, c'est Poutre Apparente.
Ah, mais attends, je voulais dire une chose,
que peut-être que Poutre Apparente,
il est dans sa baignoire,
mais lui, au moins, il se lave, quoi.
Attends, moi, je t'en viens, d'accord ?
C'est qui ?
C'était Pépito.
Eh, putain, mais, eh.
Manu.
Manu, je sais pas par où il passe,
je sais pas ce que Fildar a sélectionné.
J'ai la proute.
Proute Apparente.
Proute Apparente qui répond à la question
et je sens qu'on va poser une question,
on va mettre un disque
et on va changer d'auditeur.
Ah, carrément.
À la place de, je sais plus,
je suis plus de l'arrêt,
on accueille Viens dans mon trou.
Non, mais t'as fait c'est quoi ?
Bonsoir.
Bonsoir.
Bonsoir.
Bonsoir.
Bonsoir à tous.
Salut.
Bonsoir.
Bonsoir.
Bonsoir à tous les auditeurs de fun.
Répète-la, s'il te plaît.
Proute Apparente.
Répète la question.
Non, non, attends,
tu me fous de ma gueule ou quoi ?
Pour calmer le débat,
Manu, sur IRC,
il y a Arnaud qui te demande de le rappeler.
Non, non.
Dès que j'ai une ligne.
Ouais, dès que tu viens,
le nouveau qui vient d'arriver.
Alors, Proute Apparente.
Ouais, je te copie,
c'est pas un habitué, lui.
Ah, ouais, ouais.
Non, mais répète-la moi
parce que j'étais au standard,
s'il te plaît,
parce que j'ai du Larsen,
c'est vrai en plus.
Possédez-vous un portable
ou un tatou pour votre travail ?
Non, non, non, non.
Je travaille pas,
je suis au chômage.
D'accord.
J'ai des émergements, en fait.
Eh, Viens dans mon trou.
Faut pas trop le dire.
Ouais, ouais, ouais.
Faut pas trop le dire
parce que je suis dans la balette.
Pas tous en même temps, s'il vous plaît.
Pas tous en même temps.
Allô ?
Pas tous en même temps, merci.
Ouais, Viens dans mon trou.
Ouais, moi, j'ai un portable,
j'ai un tatou
et j'ai deux pots de yaourt
avec une ficelle.
D'accord.
Celui qui s'amuse à faire du mort s'arrête.
Pourtant, c'est le débat.
Attends.
Celui qui fait du mort s'arrête.
Attends, j'essaye de te rappeler, là.
Grosse merde.
Ta femme, elle pue, là.
Bon, alors...
Ça y est, ça y est.
Le disque.
Le disque.
Le disque, ouais.
Ben, pose la question, moi, Gérard.
Non, non, mais de toute manière,
on va changer, parce que là,
ça va pas être...
Tu peux poser...
On va changer tout le monde.
Tu peux poser la question
pour les futurs auditeurs
qui écoutent déjà la question de chez eux.
Alors, pensez-vous que le phoque
est un meilleur moyen de communication
que le mort, c'est ça ?
Ah, ben, tu vois, on y revient.
Et on se retrouve juste après.
Donc, vous pouvez toujours nous appeler
au 0800 308 5000
et 0800 75 000.
Et toujours, il y a Rigo
qui vous attend sur l'IRC www.fanradio.
Et on s'écoute...
Un petit cadeau.
C'est un petit remix.
Donc, bonsoir à Rigo.
Et voilà, donc, vous pouvez toujours
nous appeler au 0...
Qui c'est qui s'amuse avec ça, là,
depuis tout à l'heure ?
Manu, Manu !
Y a personne honneur au standard ?
Si.
C'est bizarre, parce que là,
ça s'arrête, là, comme par hasard, Manu.
Donc, qui c'est qui répond déjà, là ?
Je dis, il était pour le remix.
Alors, si t'es pas content,
tu restes chez toi, toi.
C'est Jean-Luc.
Jean-Luc !
Alors, tu dégages,
tu peux rester chez toi,
ça me perd des vacances.
Donc, vous pouvez toujours nous appeler
au 0800-308-5000
et 0870-5000
et toujours
www.funradio.fr
ce .fr
funradio sur l'IRC.
Donc, Rigo, vous êtes...
Roger !
Vous fermez vos gueules, là,
ou quoi, quand on parle ?
Gérard, à propos de ta question,
il y a quelqu'un qui répondait
tout à l'heure à ta question.
Tu vas la reposer, peut-être,
pour les gens qui n'ont pas entendu.
Euh...
Laquelle ?
La dernière.
Que pensez-vous
que le FOC
est un meilleur moyen
de communication
que le...
le morse ?
Celui qui s'amuse à ça,
comment s'amuse...
Justement, il y a
un panel sur l'IRC
qui me demande la différence
entre l'invité mystère
et un FOC.
Il me dit que...
Il me dit qu'il y en a un
qui a des moustaches
qui sent le poisson
et qui est énorme
et l'autre,
c'est un mammifère marin.
Non, ça, c'est
les auditeurs, Gérard.
Bon, Manu,
t'essaies de me trouver
qui c'est qui s'amuse à ça.
Ça y est, j'ai trouvé.
Je vais aller le kiquer
en live, tout à l'heure.
Il y a l'un des deux
qui s'est jonglé
avec un ballon, aussi.
Alors, j'avais oublié.
J'ai un petit truc
à vous dire.
Sur la première question,
quel moyen d'économisation
procédez-vous ?
Donc, il y a 40% des Français
qui n'en veulent pas chez eux.
20% de Français
ne savent pas ce que c'est.
18% des Français
n'ont pas compris la question.
Et 15% des Français
aiment le commus clinique.
Alors, ça, je vois
pas du tout ce que c'est.
Le commus clinique.
Le commus clinique.
Le commus clinique.
Alors, on récupère 40 barres.
Ouais, bonsoir.
Ouais, bonsoir.
Moros.
Bonsoir, monsieur.
Non, non, c'est...
Vous fermez vos gueules !
Et pas tous en même temps,
s'il vous plaît.
Merci.
Ouros, il s'appelle.
Ouais, c'est Ouros.
Ouais.
C'est Yougoslav.
Moros.
Moros.
Oui, je suis là, bonsoir.
Bonsoir.
C'est un nom de pédé, ça.
Tomate.
Eh, je te permets pas.
Oh, mais parlez plus fort
devant les combinés
quand je vous...
Parlez pas tous en même temps,
surtout, parce qu'on n'y comprend rien, sinon.
Alors, Tomate.
Salut, Gérard.
Salut.
Luciole.
Salut, Gérard.
Salut.
Blanche, suis-moi la...
La caverne.
La caverne.
Salut, Gérard.
Salut.
Et je pue la pisse.
Ouais, je sais pas, ça, c'est moi.
Non, c'est...
Non, c'est toi.
Je ne sais pas lire, pardon.
Ouais, ouais.
T'as compris,
y'a que moi qui ai un nom normal, quoi.
Ouais.
À part des noms des autres
qui prennent des noms de...
Non, non.
Vous êtes habitués,
vous prenez vos noms, merde.
Non, mais attends, Gérard.
Ouais, je te copie.
Roger.
Ouais, bref, go, t'as taillé.
Oh, tu t'es fait un peu, là, toi !
Bac de verre gras.
Bac de verre gras à 300 mètres.
S'il vous plaît, s'il vous plaît,
vous gérez un peu, là.
Manu, tu gères un petit peu, là.
Pose ta...
Pose ta question et on enchaîne, quoi.
Eh, mais merde, tu vas...
Je vais pas la répéter 50 fois,
tu vas calmer tes...
Demande aux gens, à part un, alors.
Alors, 40 barres.
Oui, au début, ouais,
avant que je le quittais.
D'accord.
Tu sais ce qu'il aime bien ?
Qu'est-ce que c'est que ce salope, là ?
Tu sais ce qu'il aime bien ?
Je te jure, je sais pas.
Il faut qu'il y ait dans le porte-monnaie.
Tu sais ce qu'il aime bien ?
Non.
Non, non, non, non, ça, non.
40 barres.
Oui, tu peux répéter,
parce qu'il y a quelque chose
qu'il n'a pas entendu.
Oh, non, non, non, mais vous commencez
à me les casser à 2h14, là, hein ?
Alors, pensez-vous que l'époque
est un meilleur moyen de communication
que le morse ?
Ben, ouais.
Et celui qui s'est mis à ça, arrête, eux !
Manu !
Je vois pas la lumière verte.
Bon, Gérard, pour revenir au débat,
il y a D-Light qui dit qu'on utilise le morse
parce que le phoque est en voie de disparition
et qu'on n'a plus le droit de l'utiliser.
Moi, je pense, ouais.
Moi, enfin...
Ouais, je suis d'accord, ouais.
40 barres, toi ?
Je vais dire ouais, encore.
D'accord, ben, toi, 40 barres,
ça va être...
J'ai un manque d'inspiration,
j'ai ce soir, je sais pas ce qu'il...
Ouais, ben, dans ces cas-là,
si t'es malade, tu dégages.
Mais non, ça va bien.
T'as qu'à te liser, comme moi,
drogue-toi.
Ouroz !
Ouais, c'est Ouroz.
Ben, je voulais dire,
tu parles des phoques,
je crois qu'on devrait appeler Brigitte Bardot,
y'a que ça à faire,
parce que les phoques,
comme on l'a déjà dit,
c'est une espèce protégée.
Et je pense que l'armée,
parce que c'est l'armée
qui utilise le morse et le phoque,
devrait pas se servir de ce genre de choses
et je voulais savoir
si toi, c'est vrai que t'étais spécialiste
non pas en phoque, mais en phoque.
Non, pas du tout.
D'accord.
Une question IRC.
Oui, sur IRC,
y'a Superouragan qui m'explique
qu'on utilise le morse
parce que le TKL est trop lourd à porter.
N'importe quoi, lui.
Euh, Tomate.
Ben, il est monté sur moi !
Fildar, fais gaffe à ce...
Mais c'est pas moi !
Fais gaffe, Fildar.
Fais gaffe à toi, Fildar.
Fildar, la DAT, merde.
Tomate !
Je sais pas,
parce qu'il dit que c'est ses amis qu'à lui,
il faut pas que je t'effraie
avec ses amis, tout part.
Au début, c'est...
Eh, ça commence à bien faire !
Qu'est-ce qu'il aime bien ?
Non !
J'ai coupé.
Tomate !
Tomate, Tomate !
Voilà, je sens que la conclusion
va se faire vite.
Non, non, Tomate, Tomate.
Gérard, parle bien dans ton micro, aussi.
Tomate !
Oui, je te réponds, regarde.
On utilise le morse
parce qu'ils arrivent mieux à voler
que les pigeons voyageurs.
Non, mais ça, je vois...
Non, mais le morse,
c'était un moyen de communication avant.
Oui, mais le pigeon voyageur aussi,
les morses arrivent moins bien à voler
que les pigeons, donc...
Ouais, mais le morse,
il est quand même long à...
Il était quand même long à...
à envoyer, hein.
Ouais, il nage vite.
Oh, je doute !
Non ?
Luciole !
Ouais, ben, en fait,
le phoque comme le morse
c'est quand même assez dépassé
comme moyen de communication, maintenant.
Ben, maintenant, ça n'existe plus aussi.
Non ?
Je crois que ça n'existe plus.
Si, si, ça existe encore
dans certaines postes.
Hum, hum.
Et, non, mais maintenant,
il y a des moyens
beaucoup plus adaptés
comme le courrier, par exemple.
C'est toi qui mets les tampons ?
Ouais.
Bon, ça y est...
C'est une technique
et je les mets avec les dents.
Blanche, suis-moi la caverne !
Ouais, ouais, ouais.
Moi, je voulais dire
que j'étais pédé comme un phoque
et il y avait ma grosse bite
qui s'amorce.
Oh, là, là, là, là.
Oh, ça, c'est pas mal, ça.
Ouais.
Et, je sais...
Ça peut faire du genre au casse, ça.
Ben, il s'est pour moi fêté !
Je ne sais pas lire !
Ben, ouais, euh...
Il s'est pour moi fêté !
Non, le morse,
je ne le maîtrise pas trop.
Gérard ?
Ouais ?
Blanche, suis-moi la caverne,
je veux savoir si...
Je veux savoir si t'es...
Ah, j'entends pas ce que tu parles.
Toi, toi, t'es un rigolo, toi.
Vas-y, vas-y.
Justement, j'avais déjà utilisé
les Toki Whiskey.
Les Toki Walkie ?
Les Toki Whiskey.
Zéro, allez, viens-le, reprends.
Ça, c'est raide, ça.
Oh, mais vous fermez vos gueules
un peu, maintenant !
On est en net, merde.
Je ne sais pas lire.
Ben, il montait sur moi.
Ouais, ouais, non, non, non.
Le morse, je t'ai dit
que je ne maîtrisais pas.
Je préférais le...
Enfin, c'est tout, ouais,
comme tu disais, là, je...
Mais, puis l'art !
Mais, il me faut rire,
les auditeurs, Gérard,
j'y peux rien.
Fais gaffe, parce que
tu as pris une taille
de commande de la télé,
on en a besoin.
Bon, eh, Manu !
Je te préviens !
Putain, c'est bon,
c'est le connard, là,
au deuxième débat.
Parce que c'est pas possible
de travailler comme ça.
Ça marche.
Et toi, t'arrêtes de balancer
n'importe quoi !
Arrêtez, là, le débat,
c'était bien, là.
Eh, dégage !
On est pour le cul, Gérard !
Non, dégage !
Non, non !
C'est toi qui fais des conneries,
tu sais, non ?
C'est vraiment une merde.
Toi, t'es un branleur
fort possible, hein.
Tiens, tout ça,
de mes couilles !
C'est bon, c'est bon, c'est bon !
Eh, on parle de tes 4%,
ça m'étonne pas
que t'es aussi con !
Bon, Gérard...
Bon, allez, vous fermez
le global, maintenant !
Gérard, pour revenir au débat,
on me demande
si tu préfères le Morse
ou le FistFox.
Je vois pas...
Je vois pas du tout
le rapport.
Vous n'y êtes pas.
Ah !
Vous n'y êtes pas !
Ah, vas-y, vas-y !
Gérard, t'as arrêté
le débat !
Attends, Gérard,
il est debout ?
Il a lancé quelque chose
contre Fildar ?
T'es gaffe !
T'es gaffe !
T'es gaffe !
Vas-y, droite, gauche,
dans le ciguerie !
T'es gaffe !
T'es gaffe !
T'es gaffe !
T'es gaffe !
T'es gaffe !
T'es gaffe !
T'es gaffe !
Mais qu'est-ce que je fais,
moi, Gérard, là ?
Rigo, faut que tu viennes
m'aider, là !
Ouais, je vais au standard.
Arrêtez le merde,
tout le monde a la DAT, là !
Viens m'aider !
Bon, je veux juste dire
aux gens de l'IRC
que je vais au standard
vu qu'il n'y a plus Fildar
là-là, il faut que Manu y aille.
Alors, donc,
pour la question sur le morceau...
Oh là là, ça commence
à m'énerver, ce soir.
Le con, le roi des cons !
Bon, Manu, tu vois, là,
il y a des trucs qui vont pas, là.
Bah, attends, je viens d'arriver,
je regarde, je regarde.
M'excuse, m'excuse !
Non, non, toi, tu vas dégager.
Ouais, vas-y, hein !
Non, non, t'inquiète !
Non, non, tu vas là, tu vas là,
tu vas là, je veux plus te voir !
Je veux plus te voir !
Je veux pas te voir à l'arrière,
tu vas y, au standard !
Non, je te promets, Gérard !
Je te promets, Gérard, j'arrête.
Non, c'est Gérard !
Je te promets, fais gaffe !
Non, j'arrête, promis.
Fais gaffe !
Ouais, je fais gaffe.
C'est Gérard, c'est lui qui décide, hein !
Fais gaffe.
Alors, tu vas au standard !
Non, parce que je connais pas
les auditeurs, j'aime pas.
Ouais, bah, t'aimes pas,
tu vas peut-être faire ton boulot
correctement, parce que tu commences
à faire chier ton monde, toi,
aujourd'hui, hein !
Alors...
Oh, non !
Bon, Manu, t'essayes...
Bon, Manu, je vais essayer de gérer.
C'est quand même...
Non, non, non !
C'est toi qui fais des conneries.
Moi, je fais mon possible, hein !
Ouais, mais il peut les calmer, quand même.
Alors, bon...
Pour la cinquième question,
Jésus, J.S.
Utilisait-il encore
des pigeons voyageurs
pour communiquer ?
Jésus ?
Putain !
Ils vont se calmer,
ces bandes de cons ?
Eh, oh !
Eh, tu te calmes, Goliens ?
S'il te plaît, mon Goliens !
Reste poli, là !
Et si vous êtes pas contents,
vous raccrochez vos téléphones,
on prend d'autres personnes.
Mais tu nous parles sur un autre ton ?
Ouais, bah, si je veux, d'accord !
Il va se calmer, l'hydro-stéphane.
Comment il est ?
Le bulbeur achidien.
Bon, euh...
Décode le trisome.
Alors, 40 bars.
Oui, est-ce que tu peux répéter, s'il te plaît ?
Alors, J.S.
Utilisait-il encore...
J.S. ?
J.S.
Non, non, c'est pas J.S.
Oh, là, là, oh !
Non, mais vous êtes lourds, ce soir, hein !
J.S. utilisait-il quoi ?
Des pigeons,
des pigeons voyageurs
pour communiquer.
Bien sûr,
et même, c'était dans la Bible et tout.
Ah, c'était beau, c'était...
Oui.
D'accord.
Euh, O.R.O.S.
J.S. n'y est pas !
Oh, là, là, oh !
Tu sais qu'il s'amuse à personne, là !
Mais c'est la D.A.T., putain !
C'est ça !
Ouais, c'est O.R.O.S.
Ouais ?
Ouais, je voulais dire que J.S.,
le KGB, la CIA,
tout le monde utilisait
des pigeons voyageurs.
C'était nul.
D'accord.
Tomate ?
Ouais, euh...
Il utilisait les pigeons voyageurs,
et, en fait, quand il en recevait,
il les bouffait.
Hum ?
Il m'a volé baldis,
dans mon porte-monnaie.
Euh...
Si ça vous fait rire,
moi, ça me fait pas rire,
parce que celui qui s'amuse à ça,
il m'a dégagé,
je vais pas chercher qui c'est, maintenant.
Oh, non, non, non, non, non.
Le ciel !
Ouais, tu peux répéter la question,
s'il te plaît ?
Alors, J...
Mais fais gaffe, toi, le connard,
à ce que tu dis, toi.
Ouais.
Et O ?
Alors, J.S.,
utilisait-il encore
des pigeons voyageurs
pour communiquer ?
C'est qui, J.S. ?
Oui, mais c'est qui, J.S. ?
À votre avis ?
Je sais pas, je te demande.
C'est pas le gars d'Andalas ?
Non.
C'est pas le gars d'Andalas ?
Oh, là, là, là, là, là, là, là.
John Soros.
Mais non, mais dis-leur,
tu sais, parce qu'ils captent pas.
J'ai écrit,
on voulait pas le dire,
espèce de con, ma nuit, aussi.
Je commence à faire...
Ouais, mais gagne-toi.
Ils captent pas, les auditeurs,
faut bien leur expliquer.
Alors, voilà, Luciole, maintenant.
Ouais, mais c'est pas le gars d'Andalas.
Oh, là, là, là, là, là, là, là !
Oh, là, là !
Là, vous avez fait rire le gars,
quand les gens y parlent, maintenant !
Tu vois, pour une fois que c'est pas moi.
Luciole !
Ouais, ben, on fait pas de religion
à la radio, Gérard.
Là, c'est n'importe quoi.
Là, je crois, de cette manière,
ça va être la fin,
j'arrête à la 5.
Non, non, non, mais là,
il faut remettre Manu.
Ça y est, c'est bon ?
Non, mais le standard...
Non, non, mais attends,
pour l'instant, que...
Tu les calmes, hein.
Ça y est.
Ouais, ben, tu vas les calmer.
Tu vas voir, t'écoutes, tu vas voir.
Luciole !
J'ai dit, ben, te laver les feux,
tu pues.
Oh, là, là !
Non, mais, Gérard,
Gérard, sur IRC,
il trouve ton débat tellement nul
qu'il se demande si t'es le vrai Gérard.
Non, ben, attends,
si ça leur plaît pas,
dans ce cas-là, ils arrêtent,
ils se demandent,
ils empruntent après Manu
et puis, là, ils font les cons.
Alors, Luciole,
tu veux...
Tu es bon, maintenant ?
J'ai dit, ben, te laver les feux,
tu pues.
Bon, alors...
Dégagez, dégagez, dégagez.
Bon, terminé pour celle-là,
ça va vite, c'est moi, maintenant.
Ça y est, ça y est.
Alors, blanchis-moi, là, à la caverne.
J'ai dit, ben, te laver les feux,
tu pues.
Attends, Manu, tu gères, là.
J'ai pu, personne, merde !
Attends, c'est pas n'importe quoi,
ce que tu dis, hein.
Ouais, ouais.
Blanchis-moi, à la caverne.
Non, maintenant, j'ai pas le temps.
Mais quoi, il est ouvert en bouquet ?
Allô ?
Ouais.
Ouais.
Donc, c'est pour toi ?
Attends, j'entendais pas
parce que je l'ai pas sur l'antenne.
Putain, mais vous avez décidé
de me faire crier ou quoi,
aujourd'hui, là ?
Tu peux me répéter, s'il te plaît ?
Alors, Jésus-Christ utilisait-il encore
les moyens des pigeons voyageurs
pour communiquer pour un sixième point
à la question que je répète ?
Ouais, c'est fort possible.
Ouais, je pense que, ouais,
ça doit être écrit dans la Bible
et puis, tout ça, c'est de la religion.
Ouais, je pense que c'est possible.
D'accord.
Je ne sais pas lire.
En fait, ces animaux-là,
c'est un don de table
parce que c'est pas comme les chiens,
ils donnent pas de papade, tout ça.
Tu leur dis d'aller porter un message
à ta dulcinée
et ce qu'ils font,
c'est quitter les corps des grains de pain
et ils t'écoutent pas, ces animaux-là.
Non, mais attends, de toute manière,
les pigeons, les pigeons...
Bon, attends, n'importe quoi,
les pigeons voyageurs,
de toute manière, ça existait.
On n'a jamais délivré les messages.
Si.
Non, non, non, attends,
faut pas déconner.
Non, non, c'est ce que je dis.
J'ai essayé d'en dresser quelques-uns
et j'ai jamais réussi.
Si je leur attachais des trucs à la patte,
des bagues,
ouais, voilà, des bagues avec des messages,
oui, j'ai envie de te baisser
comme une chienne, tout ça.
On m'avait coupé le portable, en fait,
et j'envoyais le pigeon comme ça
et jamais il n'y allait.
D'accord.
J'ai eu des problèmes, je me suis retrouvé...
Non, mais ça y est, on a compris.
Je me suis retrouvé avec une grosse force.
Ça y est, on a compris.
Oui, Gérard, sur IRC,
il y a Super Ouragouin,
il te demande comment tu fais
pour envoyer les pigeons voyageurs assez loin.
Eh ben...
Avec une bague.
Avec une bague ?
T'arrives à lancer les pigeons avec une bague ?
Non, mais...
Les pigeons voyageurs,
tu l'envoies à 2000 kilomètres,
comment tu fais ?
Non, mais...
Ils s'envolent,
ils prennent leurs ailes
et puis ils volent.
Oula, j'ai perdu 1000 personnes, là,
d'un coup,
ils m'ont dit que c'était à cause de Manu.
Voilà, voilà, bravo.
Non, c'est à cause de Christy,
bravo Manu.
Donc, c'est quoi comme...
On va s'écouter un disque,
tu poses la question, Gérard,
le temps que je te donne la question.
Non, je ne sais pas si tu puisses.
Celui-là, tu me le vires.
Tu le vires, mais...
Je l'ai trouvé, je le viens.
Non, non, mais tu vois,
ça va aller vite, là.
Alors, pour...
Oui, Rigo ?
Non, non, Rigo, pendant que...
Pose une question Internet
pendant que je note le disque.
Alors, peut-on dire
que Gégé est transgénique
mi-pigeon, mi-phoque ?
C'est quoi, ça ?
Je ne sais pas.
C'est Citrouille qui demande ça.
Et il y a Jarvis Cooker
qui demande si on peut attraper
des maladies viagras ou autres
en communiquant.
Non, ça, c'est plus le débat
sur les maladies.
Qui c'est qui s'amuse
avec cette musique de là ?
Et sinon, il y a Yankee
qui me dit qu'on utilise
le morse maintenant
parce que les phoques
font de la radio.
Non, mais je ne vois pas
du tout le rapport.
Donc, sixième question.
Pour draguer, vous servez-vous
de votre regard
comme moyen de communication ?
Et vous pouvez toujours
nous appeler au 0875 000
0803 085 000
et toujours Rigo
qui vous attend
sur le site www...
Je n'arrête pas d'attendre
depuis...
.funradio
et on s'écoute
Riri...
Riri.
Riri, Fifi, Loulou
avec Moi, c'est mieux
avec du couscous.
Et on se retrouve
tout de suite après
pour la suite du débat
et la fin.
''Musique''
Et voilà, donc vous êtes toujours sur PUN Radio, c'est la suite du débat sur les moyens de communication,
et on vient de s'écouter Ricky, Fluffy, Loulou, avec ses... moi c'est mieux, avec du couscous.
Donc en parlant de couscous, on va être bien servi, parce qu'il y a justement...
Ah, il y en a quelqu'un qui a amené du couscous ?
Non, non, mais on a un auditeur qui s'appelle Couscous, qu'on avait vu depuis longtemps, donc on récupère...
Ah, il y a Couscous qui est là ?
Carambar, bonsoir.
Oui, bonsoir. Eh Gérard, est-ce que tu me permets pour une fois d'être gentil ?
Je voudrais dire bonsoir à ma petite amie Jessica, bonsoir Paris, bonsoir Jessica.
Voilà, ok.
T'as pas de petite amie.
Bon, ça y est, vous n'allez pas recommencer pour la pain ?
Oui.
Ok.
Ou Rose ?
Ouais, je suis dans la place, et je voudrais dire bonsoir à ma main droite.
Ok, Tomate ?
Bonsoir à tous, je suis Carrie, à la main droite.
Carotte ?
Salut.
Salut.
Couscous ?
Oui, bonsoir.
Ah, Couscous !
Ouais.
Bonsoir à tous, bonsoir à ma main, et bonsoir à Abdel Wahid.
Ok, c'est bon, Couscous.
Vous n'avez pas remarqué que les autres habitués en voulaient pas, là ?
Ce mec, là.
Oh ! On se calme, s'il vous plaît, hein, maintenant.
Et bonsoir à tous les terroristes qui m'aiment.
Non, non, non, non, non.
Eh, ta gueule toi-même, toi, connard.
Oh là là.
Eh, mon doigt.
J'aime pas Couscous.
Mon doigt sent le caca, là.
Mon doigt sent le caca, pour terminer.
Ouais, ouais, bah ouais.
Alors.
Bonsoir.
Bonsoir, ça y est, là, oui.
On va commencer, on va finir le débat, maintenant.
Non, non, ils sont cools, hein, ils sont cools.
Alors, pour draguer, vous servez-vous de votre regard comme moyen de communication ?
On va demander à 40 barres.
Ouais, pour comment, encore ?
Bah, ouais, tout à fait, ouais.
Énormément, ouais.
La persuasion, et en plus...
Attends, bouge pas, je change de côté la cassette.
Non, non, mais attends, si t'enregistres en même temps...
En plus, tout ça, c'est des trucs à moi, ça.
Ouais, pour lui, après.
En plus, je suis serveur, donc ça aide.
D'accord.
Et je me fais plein de nanas, mais là, depuis quelques temps, je me suis calmé,
je suis avec une super fille, et je l'embrasse très fort.
Ok, d'accord.
Non, mais...
Je t'aime.
Attends, il passe ses messages persos, c'est quoi, ça ?
Il est amoureux.
Euh, 40 barres !
Alisabeth Guigou ?
Non, 40 barres, c'est bon, c'est...
J'ai été dit, ça nous écoute...
Comment pour 40 barres, hein ?
Tu m'as dévibré, Alisabeth.
Ouros !
Ouais, bah, écoute, moi, j'ai un petit problème dans la vie,
c'est que j'ai un regard de tueur,
donc, bon, je suis un peu obligé de mettre des lunettes de soleil,
parce que c'est...
Désormais, les filles, j'ai fusé, j'ai regardé...
Oh, vous arrêtez de vous marrer, là ?
Ah, vas-y, vas-y, vas-y, vas-y...
Oh, non, non, non, non, non !
Je sens que ça va se terminer vite fait, Manu, avec toi.
C'est que ça vient de moi, je les ai presque...
Vas-y, vas-y, vas-y, c'est bon.
Tomate !
C'est quoi, la boîte mobilique, là, c'est quoi ?
Tomate !
Moi, j'ai un petit appareil, dont je ferai le nom,
qui, en fait, envoie des messages à quelqu'un qui a le même appareil.
Donc, si j'ai envie de...
Si je crois que quelqu'un est dans la rue et que j'appuie sur un bouton,
ça sonne sur son appareil.
Ouais, c'est le nouveau truc, Gérard.
T'as vu à la télé ?
C'est le truc pour les amoureux, là.
On est des espèces de beepers.
Ah, ouais, mais...
Les fucklovers, là, les fucklovers.
Ouais, ouais, ouais.
J'avais vraiment vu ça, ouais.
Carotte ?
Bah, moi, j'ai des sales yeux, donc je m'en sers pas...
Je me sers pas du regard pour draguer.
C'est un du cul, toi.
D'ailleurs, je ne drague pas et puis on ne drague jamais parce que je suis moche, on se compare toujours à Sandy, donc tu vois, ça n'arrange pas.
Alors, Carotte, tu vois, tu viens de dire un nom qu'il ne fallait pas, donc tu peux retourner chez toi, c'est terminé pour toi. Au revoir.
Ça y est.
Salut.
Couscous.
Coucou.
Coucou.
Vous êtes un méchant chiant ou pas, là ?
Couscous, on t'écoute.
Pas de marque.
Moi, on m'appelle la Clash, Couscous. Moi, quand je la regarde, c'est méchant, c'est terroriste.
D'accord. Mais moi, je dois être dans le caca, là.
Non, moi, je suis borgue.
Non, mais tu peux quand même répondre à la question ou pas ?
Je suis borgue, j'ai qu'un oeil, donc ça ne le fait pas, tu vois.
Bon, d'accord.
Sans manquer de respect, il ne faut pas se moquer des aveugles.
Oui, entre parenthèses, voilà.
Super Montagné, si tu nous regardes.
Oh, c'est bon, on a pu, on se calme.
Ouais, euh...
Non, non, il n'y a personne à la place de Carotte.
Il n'y a personne.
Attends, je vais, je vais.
Tu vas, tu vas, tu vas te manier, maintenant.
Oh, merci, c'est Carotte.
Alors, euh...
Question IRC.
Oh, oh, oh !
Appelle le TK de Mystère.
On se calme, là !
Le TK de Mystère, il t'emmerde !
Le TK de Mystère !
Ok.
Alors, Rigaud, une question IRC.
Alors, question de Hatt.
Les pigeons, ouais, mais voilà, ils parlent des pigeons voyageurs parce qu'il y a un délai avec Internet.
Quand ils écoutent par Internet, ils écoutent ce qu'il y avait il y a 20 minutes.
Donc, ils me parlent encore des pigeons voyageurs.
Eh, Gérard, je voudrais demander à TK si c'est possible qu'elle me suce ma saucisse à quatre pattes.
Va te faire foutre, t'abrouti !
C'est qui qui vient de dire ça ?
C'est qui qui vient de s'amuser à dire ça ?
Je vais le trouver, Gérard, continue.
Et d'ailleurs, d'ailleurs, à la place de, je ne sais plus trop qui, on accueille Tom à la Catalane.
À la place de Carotte, alors.
Voilà, exactement.
Alors, vas-y, Tom.
Oui, bonsoir, Gérard.
Bonsoir.
C'est Griselda.
C'est encore la même.
Bon, tu as compris la...
Pour draguer, servez-vous de votre regard comme moyen de communication pour toi, la question.
Oui, ben en fait, je louche, alors tu vois, c'est pas très évident pour moi.
Non, c'est sûrement, c'est tout.
Oh non.
Oh, ça commence à...
Vous laissez parler les gens ou pas ?
C'est Groton qui vient de dire ça.
Il n'arriverait pas à me faire jouiller.
Non, je vous ai pas sympa parce que je louche et j'ai un grave problème.
Eh, je sens que le prochain qui s'amuse à dire ça...
Ça va dégager !
Il jouait pas, c'est tout.
Il jouait pas.
Il jouait pas.
Si je jouais, je suis juste resté avec lui.
Euh, Manu, quand tu vas...
Ouais, je vais, je suis en train de les chercher.
Ouais, alors...
Je suis en train de les chercher dans mon porte-pone.
Donc, euh...
Gérard ?
Donc, ouais, oui ?
Il y a Ertonio sur l'IRC qui te demande si on peut draguer avec leur regard aussi bien que...
Parce qu'il a des lunettes, en fait.
Il voulait savoir si c'est pareil que quand on n'a pas de lunettes.
Ben, je pense, oui.
Ben, il est monté sur moi, c'est tout.
C'est tout, hein ?
Et il manque plus que les doubles sons, maintenant.
Ben, quand vous aurez fini...
Quand vous aurez fini vos conneries...
Ouais, j'en ai...
On pourra demander à Ton qui va répondre.
Je passe le bonjour à tous les égords d'Israël.
Hé, Couscous !
Couscous, ça suffit !
C'est abusé, ça !
C'est abusé, là.
Elle est tensionnée, là.
Oh là là !
Mais c'est quoi, là, ce bordel, là, Manu, là ?
Tu me l'as...
Tu peux peut-être les calmer, mais je peux les calmer, tu vois, un par un, donc...
Couscous, il a abusé, là.
Alors, Ton...
Ouais, alors, moi, je te disais, je louche.
C'est un gros problème.
J'ai des doubles foyers, donc tu vois, ça m'arrange pas,
alors je vous demanderais un petit peu de pitié pour moi, quand même.
Euh, je te calme, moi.
En plus de ça, donc, j'ai une sale gueule, donc il y a rien qui m'arrange.
C'est clair.
Et, ben, du coup, je sais pas quoi faire.
D'accord.
Et en plus, ton pote, il s'est fait virer de la sécu, alors c'est la top.
Je sens que ça va...
Ça va jarcler, ça va jarcler.
Ça y est, ça y est.
Ça va...
Alors, quel mot...
Quel est le moyen de communication...
Quel est le moyen de con...
Quel est le moyen de communication quand on a n'a pas...
Donc, on va demander...
Le meilleur moyen, quel est le meilleur moyen...
Voilà, de communication quand on a n'a pas.
On va demander à Karnevar.
Euh, le P, le...
Non, la lettre ou la parole, je sais pas, moi.
Hum.
Voilà, Gérard.
Euh, Ouros ?
Bah, je sais pas, je dirais un français correct.
Ouais.
Euh, Thomas ?
Il faut crier très fort.
Comment ? Dans quel sens ?
Bah, il faut crier très fort.
Bah, si t'es autiste, hein, j'en sais pas.
Hum-hum.
Ok.
Euh...
Thomas ?
Tu veux que tu viennes répondre ?
Ton, euh...
Je sais pas, à quoi, là ?
À la Catalane.
Ton, à la Catalane ?
Ouais, bah, moi, je me sers du téléphone.
Au moins, on me voit pas.
Et puis, on peut pas imaginer le monstre que je suis.
D'accord.
J'aime bien ta voix, moi, gros boudin, là.
Oh, vous fermez vos gueules, s'il vous plaît, derrière.
Merci.
Elle est moche, elle est moche.
Ouais, euh...
Sur IRC, il y a Arnette qui dit que quand on n'a pas de moyen de communication,
elle ferme sa gueule.
Bah, voilà.
Eh, couscous ?
Le téléphone à arme.
On raconte pas n'importe quoi.
Sinon, on leur coupe les cordes vocales à coups de rachois.
Ouais, ouais, ouais, mais...
Couscous, tu réponds comme il faut à la question.
Bah, je te dis que le téléphone à arme.
Moi, je te dis le téléphone à arme.
D'accord.
Euh...
Mets-moi le doigt...
Oh, putain, non !
Ouais, Gérard.
Mets-moi le...
Embrasse-moi.
Mets-moi le doigt dans le caca.
Ouais, viens, t'assures que sur mon sexe, on est réactifs.
Bon, allez, allez.
Hop.
Terminé pour lui, il répondra même pas.
Allez, hop, c'est fini.
Il dégage.
Voilà.
Allez, hop.
Alors, euh, donc, euh...
Alors, il y a un petit sondage, là, pour ou contre les moyens de...
Bon, couscous, s'il te plaît, tu me laisses finir ?
Ouais, d'accord, mais je t'emmerde.
D'accord, mais je t'emmerde.
Euh, là, je crois que...
C'est pas moi, Gérard.
C'est un mec qui s'est émimité.
C'est qui ?
C'est pas moi.
C'est ce moule.
Ouais, mais restez quand même polis, s'il vous plaît, avec les gens qui vous emmerdent.
Merci.
S'il vous plaît.
C'est pas gênant.
Faut pas être tentaculé en cul de tâcheur.
Euh, donc, pour ou contre les moyens de communication, il y a 60% qui n'ont pas le temps de répondre à la question.
Hum.
Il y a 30% des Français pensent pouvoir le faire eux-mêmes.
Hum.
Et 10% des Français qui estiment que ce n'est pas le thème du débat.
Ben, je vois pas pourquoi que 10% disent que c'est pas le thème du débat, alors que c'est le thème du débat.
Ben, ouais.
Mais j'étais sur moi, c'est tout.
Oh, là, là !
C'est pas moi.
C'est à toi, Gérard.
Moi, euh...
Alors, euh...
Excuse-moi, Gérard.
Quand même, à la place de mon doigt, sans le caca, machin, on accueille Gilles Comoisy.
Bonsoir.
Bonsoir.
Salut, Gilles Comoisy.
Salut.
Bonsoir, tu vas bien ?
Salut.
A tous.
Salut, chat de pourri.
Alors, donc, la question, donc, Carambar, tu réponds, s'il te plaît ?
Tu peux répéter, s'il te plaît.
Alors, quel est le meilleur moyen de communication quand on n'en a pas ?
J'ai déjà répondu, j'ai dit la lettre ou la parole.
C'est vrai, il avait déjà répondu.
Ah, ok.
Où, Rose ?
Ben, j'ai déjà répondu, tu ne suis rien à ton débat ou quoi ?
Mais attends, tu restes poli, toi, parce que tu n'avais même pas répondu.
Mais si je te dis un français correct, alors tu es un peu ce qui se passe, quand même, putain.
Le roi des cons, ouais.
Thomas ?
J'ai aussi répondu, Gérard.
Ben, ton... ton, elle a...
Je t'ai déjà répondu aussi, Gérard.
Alors, pousse, pousse.
Je t'ai déjà dit, téléphone arabe, putain, t'es sourd.
Elle t'a peut-être posé cette question-là, déjà, Gérard.
Non, mais il y en a un, il y a le Comoisy, là.
Si, j'ai le Comoisy.
Ben, alors ?
Tu devrais le savoir.
Non, non, non, pas de moyen de communication.
D'accord.
Je vis dans une grotte.
Ok.
Alors, huitième question.
Les hommes utilisent-ils les animaux pour communiquer ?
Les hommes utilisent-ils...
Les hommes utilisent-ils les animaux pour communiquer ?
Ah, ben, t'es bien placé pour en répondre.
Oui, tout à fait, ouais.
Attends, tu sais qu'ils viennent parler, comme ça, là ?
Ils sont à la Catalane.
Ah, ben, répond à la Catalane, tu peux.
Tu me viens répondre à la Catalane, ça y apprendra de répondre des conneries.
Je mets pas à mine à l'huile, à la place.
Bienvenue chez les pizzas, avec la pépère au lait.
Alors, 40 bars.
On va t'en faire de la colisse de bras.
40 bars, s'il te plaît, tu réponds comme il faut.
Ah, mais vous vous salmez un peu, là, maintenant ?
La pépère au lait, là.
Ouais, Christine en est l'exemple.
40 bars, quand même.
Oui.
Pour toi ?
Euh, je suis d'accord.
Ouais, je pense que oui, oui, tout à fait, ouais.
Je tiens, ouais.
Ouais ?
Ouais.
Euh, Ouros ?
Ah, pardon, il est parti.
C'était lui, les conneries.
Ouais, ben, c'est bien, alors.
Ouais, ben, t'as bien fait ton boulot, une fois, Manu.
Ouais.
Gérard, sur l'IRC, il y a D-Light qui dit, oui, on peut utiliser des animaux pour communiquer.
La preuve, les dirigeants de Fun Radio utilisent bien Gérard pour communiquer avec les animaux.
Oh, n'importe quoi, lui.
Tomate ?
Ouais.
Euh, ben, j'ai connu un mec qui utilisait des puces savantes et des morpions.
D'accord.
Ouais, à la place de ton à la Catana, Catalane, pardon, on accueille Oasis.
S'il n'y a pas de bulles, là.
Oasis, OK.
Bonsoir, Oasis.
Elle veut te planter, c'est pas le gars.
Ah !
Oasis, c'est pas le gars.
Elle veut te planter, c'est pas le gars.
Oasis, c'est pas le gars.
Il n'y a personne qui va oser s'appeler Fildar, là, pour les chaussettes.
Je sens qu'on va conclure le débat ici.
4%, il ne faut pas déconner.
Oui.
Donc, Oasis.
Moi, si tu pourrais me répéter la question, je viens d'arriver, donc...
Les hommes utilisent...
Qu'utilisent-ils les animaux pour communiquer ?
Euh...
Ouais, ouais, ouais, c'est...
C'est un excellent moyen de communication, de...
De prendre, par exemple, un chien avec soi.
Oui.
Ça permet, franchement, de développer...
J'aimerais te dire que je t'aime avec un tatou.
T'as le cœur de l'oreille.
Je voudrais te dire que je t'aime, mais tu ne me réponds pas.
C'est où ?
C'est les feuilles, c'est ce qui s'allume en vert, Manu.
Je voudrais te dire que je t'aime, mais tu ne me réponds pas.
Bon.
C'est vrai, Manu, il est nu, ce soir.
Alors, je sens que c'est...
Non, mais ce qu'il faut faire...
Gérard, Gérard, Gérard, Gérard.
Tu fous un coup de fouet à Manu, là, hein ?
Non, non, mais ça va aller vite, c'est la...
Ça va être la dernière question.
Je ne sais pas si...
Parce que ça y est, j'ai retrouvé quelqu'un.
C'est pour ça que j'ai galéré.
Ah, ouais, d'accord.
À la place de Ouros, on accueille Préparation H.
Bonsoir, c'est Préparation H, Fably.
Préparation H.
Oui, bonsoir.
A tous.
Oui, alors...
Aïe, aïe, aïe, aïe, aïe, aïe, aïe.
Oui, tout à fait, oui.
On se calme.
Vous ne l'avez pas, celui-là ?
Aïe, aïe, aïe, aïe, aïe, c'est pas mal.
Avec qui, la chaise, là ?
Le tabouret.
Et puis le trou du cul qui saigne.
Voilà.
Non, mais quand vous aurez fini vos conneries,
les gens, ils pourront peut-être répondre.
Oui, c'est vrai.
Il y en a qui veulent répondre et faire un débat sérieux.
Alors, euh...
Est-ce que vous l'avez, ce capsule ?
Euh...
C'est qui qui demande ça ?
C'est Finger.
Je sens que tout à l'heure, on va conclure, hein ?
Oui.
Alors, préparation H.
Oui, ben, je viens d'arriver, j'ai pas entendu la question.
Alors, les hommes utilisent-ils des animaux pour communiquer ?
Les hommes, ben non, je crois que c'est interdit par la loi
d'utiliser les animaux pour niquer, donc...
Pour communiquer !
Ben, que ce soit en communauté ou pas, c'est pareil, c'est interdit, c'est tout.
Non, mais je crois que...
Non, mais discute pas, c'est tout, c'est la loi.
La loi, elle est appliquée, il faut se plier, c'est tout.
Moi, je suis d'accord.
Ben, couscous.
Non, non, moi, je suis d'accord.
Non, non, moi, je suis pas d'accord.
C'est impossible, on peut pas niquer dans la commune avec un dromadaire.
Fais pas les animaux !
Fais pas les animaux, t'écorches les moutons, salauds !
Putain, t'en as qui sautent des phacochères...
Vous allez énerver, couscous, arrêtez !
Intégriste !
Hé, Gérard, c'est pas parce que tu niques un phacochère que tout le monde a le droit, hein ?
Ça y est.
C'est le combat.
Non, mais...
C'est pour l'eau, c'est pour l'eau, c'est pour l'eau, pardon, Gérard.
J'ai le cou moisi, là.
Ouais, moi, je veux bien me sacrifier et m'appeler Fildar, t'as qu'à faire.
Non, non, c'est bon, c'est bon, ça va aller.
Pour passer la pub des chaussettes qui te puent.
Non, ça va.
Alors, moi, je peux vous dire une chose, comme vous êtes en train de déconner,
le débat, il s'arrête là.
Non, non, Gérard.
Encore une question.
Non, non, non, non.
Encore une, là.
Il était bien, il est bien, le débat.
Non, non, ils sont tous gentils, n'est-ce pas, les auditeurs, vous êtes gentils ?
C'est là pour comprendre les gens qu'on est cons.
Ouais, c'est vrai.
Non, Manu ?
Alors, les transmissions de pensées, est-il un moyen de communication en faisant l'amour ?
Et ça sera la dernière question.
Est-ce que tu peux la répéter, s'il te plaît ?
Alors, les transmissions de pensées, est-il un moyen de communication en faisant l'amour ?
Manu ?
Quoi ?
Tu fais chier.
Alors, 40 bars.
Est-ce que, à ton avis, tu sais à quoi je pense, là ?
Non, eh bien, tu vas le dire.
Ben, contenté, Jean.
D'accord, eh ben, bonne nuit pour toi, 40 bars.
Faisons-te...
Non, non, c'est bon, c'est terminé.
Est-ce que t'as une réponse à donner ?
Qu'est-ce que t'as à donner sur la question, 40 bars ?
Les transmissions de pensées.
Moi, je sais qu'avec ma copine, sans faire exprès, on dit beaucoup de choses semblables ensemble.
C'est-à-dire ?
Eh ben, c'est-à-dire, oui, avec nos meilleurs potes, c'est ça.
On a la même expression, des fois, ou des trucs comme ça, quoi, en faisant l'amour,
et tout, c'est bien.
Vous faites quoi ?
Hein ?
C'est...
Ah, vas-y, c'est bon, c'est bon, c'est bon.
C'est très bon.
Préparation H.
Je ne vais pas le dire, celui-là.
Oui, ben, moi, je suis sûr qu'après l'amour, comme tu disais, toi et ta copine, vous avez de la transmission de pensée,
que vous avez envie d'une gamelle de fresquises au même moment.
Toi, tu ferais mieux de faire des préparations pour cons.
Fildar, mets-nous un double son, là.
Ah, j'ai pas, j'ai pas envie.
Non, arrête, arrête, arrête.
Fildar, il t'a un peu le faux cul, là, ce soir.
Ouais.
J'ai pas besoin d'utiliser la pensée, parce que je crie très fort, donc je pense qu'il entend assez.
Fildar, mets les auditeurs en double son.
Tu jouis ?
Je jouis, je jouis, je jouis très fort.
Tu jouis très fort ?
Je jouis et pas.
Lui, je jouis, ça dépend.
Oh, Aziz !
Fildar, mets les auditeurs en double son.
Ben, moi, sexuellement, avec mon copain, ça se passe très bien.
Ah, t'es un copain, toi ?
Ouais, ouais, ouais.
Tant pis, Tony.
Je crois que c'est un dommage.
On est au top au niveau transmission de pensée, et puis tout va bien, quoi.
On est exactement sur la même longueur d'onde.
Moi, je vais te transmettre, moi, salope.
Tu viens de trouver quand tu veux.
Ton tampon, il vient de tomber, là.
Ça arrive.
Là, quel équerre on va faire ?
Vous êtes perpés, vous.
Vas-y, Gérard, on enchaîne.
Non, non, mais on prendra peut-être qu'il se calme.
Donc, Aziz.
J'ai absolument pas envie de faire ça.
Couscous.
Ouais, Gérard, c'est vrai que depuis que tu t'es fait enculer par une lampe torche, on t'appelle la luciole.
Couscous, tu restes poli, parce que sinon, ça va mal finir pour toi.
Ouais, tu vas gerber, hein.
Moi, je suis d'accord avec Aziz.
Gérard, je te...
Sous la console, là.
Je le coumoisille.
La transmission de pensée, pourquoi pas.
D'accord.
Alors, moi, je peux vous dire une chose.
Il y avait un truc que je voulais dire.
C'est que pour les aveugles, le moyen de communication...
Le moyen de communication...
Bon, tu es calme, s'il te plaît, Manu.
Merci.
Et après, on fait la conclusion, comme ça, ça va être terminé.
Donc, pour les aveugles, c'est sûr que c'est pas évident pour eux de pouvoir communiquer.
Et c'est...
Maintenant, je crois qu'il y a des nouveaux trucs qu'ils font.
Donc, on va demander la conclusion du débat à 40 bars.
À moins qu'il y avait une question hier, c'est non ?
Oui, il y a Sandi, la pute, qui demande qui veut lui bouffer le cul.
Mais bon, c'était pas le thème du débat.
Voilà, bon, donc, 40 bars, conclusion.
Deux choses à dire.
Déjà, tu t'es fait griller parce que 40 bars, en fait, c'était 40 bars.
Et deuxièmement, toutes les expressions de Christine, c'était moi.
Donc, j'ai pris le plaisir.
OK, ben...
À la semaine prochaine, Gérard.
C'est ça, ben, tu repasseras pas la semaine prochaine pour toi.
Et ils vont être sur moi.
C'est ça.
OK, ben, tu repasseras pas la semaine prochaine pour toi.
Préparation, préparation H.
Ouais, alors, deux choses aussi.
La première, c'est que je te mets un fulgurant pour où je pense.
Et la deuxième, c'est que tu t'es trompé.
Tu l'as appelé j'ai le coup moisi au lieu de j'ai le con moisi.
Et on savait déjà que t'avais le coup moisi, c'est clair.
D'accord, ouais, tu l'as dit, Thomas.
Enculpant qui ?
Ouais, ben ouais, c'est comme d'habitude.
Toujours aussi nul, toujours aussi à chier, toujours aussi...
Toujours aussi Gérard, quoi.
Eh ben, dans ces cas-là, Thomas, c'est simple.
Tu allais bouffer tes tomates, comme ça, tu nous emmerderas plus qu'on nous fait des conneries.
Bravo Gérard, ouazis, t'es bien calmé.
Ouais, eh ben, moi j'ai trouvé que le thème du débat, il était franchement très très intéressant.
Ouais.
Il était vraiment bien, mais c'est dommage que ce soit toi qui l'a présenté.
Ah mince.
Pourquoi ?
Ça parlait bien.
Pourquoi ?
Ben, parce que t'es toujours aussi catastrophique et rien ne change, quoi.
Ben, dans ces cas-là, tu fais pareil, tu la gardes ton ouazis.
Ouais.
Gossos.
Gossos.
Ouais, ouais, ben, le débat, il était pas trop mal.
Bon, il y avait un petit peu de bordel dans la maison, mais sinon, c'est toujours de la merde.
Ouais, mais de toute manière, eh, Gossos, non, n'empêche, on aime bien t'avoir dans...
J'aime bien t'avoir quand même dans les débats.
Tu le sais bien, on rigole bien avec toi.
Ah, d'accord, je te réserverai une petite égorgerie de...
C'est ça.
Ok, allez, bonne soirée à toi, Gossos.
J'ai le coup moisi pour finir.
Ah, mais je rouillais pas.
Bah oui, je sais, on fait tous ça.
Ouais, moi, je voulais seulement dire, enfin, je voulais seulement te demander si je pouvais avoir la grosse vilaine au standard, après.
La grosse vilaine, c'est qui ? C'est laquelle ?
C'est quel mystère ?
Euh, non, tu vois, tu l'auras pas.
Donc, voilà, donc, c'est tout, c'était ta conclusion ?
Ah, bah ouais.
Eh ben, c'est bien.
Je te souhaite une bonne nuit aussi.
Eh ben, moi aussi.
Je te kiffe, l'ascar.
Eh ben, moi, je veux pas moi, ok ?
Donc, c'est dommage qu'il y ait eu des petits...
Petite conclusion de l'IRC, quand même, avant de finir, de Yankee.
Quand on se balade avec un tekelborg et qu'on n'a pas d'amis, on fait pas des débats sur la communication.
Euh, Gérard, c'est une pute.
Non, on va pas dire ça, quand même, c'est pas gentil.
Et, euh, bah, c'est... Apparemment, il y a que des trucs méchants.
Eh, on était combien, quand même, là ?
On est remontés à combien ?
Là, on est quand même remontés à 3867.
Combien ?
3867.
C'est le record, non ?
Je sais pas.
Bah, si, c'est le record, 3867, je crois.
Je crois qu'à la dernière fois, on avait fait 3400, là.
Donc, là, à mon avis, on a battu le record, ouais.
Eh ben, on aura les sondages, les mecs, ça va faire plaisir, hein.
Bravo.
Bravo, bravo.
On aurait peut-être été un peu plus s'il n'y avait pas eu le problème avec Manu, en ce temps-là.
Ouais.
Ouais, ça, c'est vrai que Manu, cette semaine, t'as fait chier le monde.
Ouais, mais toi aussi, t'as quand même fait un peu ta merde.
Non, je t'ai...
C'est ça, ça fait quand même un peu ta merde aussi, toi.
Faut pas l'oublier.
Donc, voilà.
Oui, Rigo, pour finir ?
Non, rien, j'attendais une félicitation de papa.
Non, mais c'est bien, de toute manière, il a bien bossé, Rigo.
Il y a que lui.
Il y a que lui qui bosse bien, en ce moment, alors.
C'est bizarre, quand même.
Ouais, non, mais il y a que lui.
Ça cache quelque chose.
Non, non, mais il y a que lui.
Il y a que lui qui bosse comme il faut.
J'ai remarqué aussi.
Parce que lui, on ne l'entend pas.
Quel plaisir de te retrouver, en tout cas.
Donc, pour moi, la conclusion des moyens de communication,
dommage que ça foirait,
mais sinon, je pense que dans l'ensemble, c'était pas...
Bon, écoute, je crois que tous les records ont été battus.
Bravo.
Un fil d'art, tu continues, ça se voit que c'est terminé.
C'est terminé pour toi, un fil d'art.
Tout ça, la semaine prochaine, on trouvera peut-être quelqu'un d'autre.
Ouais, j'ai l'impression, parce que là, le double son, j'aime pas trop.
Par contre, je voulais signaler
que celui qui s'amusa à envoyer un truc bidon sur l'IRC
en mettant avec 10 poules...
Oui, donc c'est faux.
Voilà.
Donc, je vous souhaite une bonne nuit.
Vous allez retrouver Rousseau pour la nuit sans pub.
Et demain, 6h-9h, Barthes.
Et puis, Max à partir de 22h.
Arrête.
Tu vas prendre une gaufre avant la fin, toi.
Et vous allez retrouver Max
à partir de 22h.
Il y aura des surprises, d'ailleurs.
Il y aura des surprises.
Déjà, il y aura Jean-Denis Debert, puis il y aura plein de petites surprises, peut-être.
Non, mais pas par rapport à toi,
mais des trucs nouveaux.
Et moi, je vous retrouverai la semaine prochaine,
si tout va bien.
Bon, à la bonne nuit à tous.
Et je voulais faire un petit cadeau,
je voulais me faire plaisir,
parce que tu as 10 minutes avant,
avant de reprendre le programme officiel de l'antenne,
où il y a une compilation qui s'appelle
F-Communication, la belle français.
Ils ont sorti des compilations
Musique pour Plante Verte.
Ils avaient également sorti déjà une compilation
Megasoft Office 97.
Ils viennent de sortir la compile 98,
avec dedans Nova Nova, LJIA,
Frédéric Galliano, Readymade.
Que les artistes français ont fait un compte
avec des noms un peu étrangers.
Et là, sauf un ou deux,
et là on va écouter Aquabassino
qui s'appelle The Melokey
Voilà.
== Le débat sur New York ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Les débats pas de radio et pas d'insultes de Gérard
Et voilà, donc bienvenue pour, donc Gérard 35, donc bienvenue pour le premier débat
Alors ça, ça, une fille d'art, tu vas te prendre une claque
Tu vas te prendre une gaufre, mais méchante tout à l'heure
Pourquoi ?
Tu me refais ça
Mais attends c'est propre
Non mais je lui avais dit qu'elle avait un surnom
Elle ne me l'a pas dit donc je ne peux pas le démerder
C'est moi qui vais me démerder, c'est pas grave
Donc premier débat qui va porter sur New York
Donc vous pouvez toujours nous appeler au 0875 000
0803 08 5000 et toujours IRC, donc www.fr, jeune radio
Et ça n'arrête pas de monter, on est déjà à 2413,8 connectés
Eh ben c'est joli Gérard
Alors on va accueillir Cutepool, 24 ans, qu'on écoute Fun Radio à New York sur 93.4
Bonjour Cutepool
Salut Gérard
On va accueillir Saucisson à l'ail, 101.9 Paris
Allo
Allez y'a toi, c'est bon
Allo
Salut Gégé
Salut
Non mais c'est parce que je t'entendais pas, donc c'est pour ça
Allo
Allo
Allo
Allo
Allo
Allo
Ça commence
C'est quoi ça ?
C'est à côté, là, ils font des essais, là
C'est ce truc, là
Non
Ça y est, merci
Euh, Sufboun, 21 ans, 103 points, 100.3 à Le Mans
Bonsoir Bill
Big Bill
Big Bill
Euh, tu dis bonsoir correctement et tu l'as pas commencé
Parce que sinon tu vas pas faire la première question, je te le dis tout de suite, ok ?
Bah tu viens de dire que c'était toi qui faisais Bill dans le Big Bill
Bon, je t'ai pas demandé si...
Je t'ai pas demandé à quelle heure elle était, si ta sœur faisait du vélo
Ok
Alors euh...
T'as l'air prêt ou pas ?
Ouais, toi, je te signale que tu es allé voir Pildar tout de suite au standard
Jérard, t'accueille les gens, s'il te plaît
Hé, Gérard, Gérard, Gérard, le...
Non, non, non, j'ai rien
J'ai rien
J'ai rien
J'ai rien
Ah bon ?
Donc euh...
Non, j'ai rien dans le froc
J'ai rien dans le froc
Donc 22 ans, une écoute 94.6 à Salo
Allo
Exactement, bonsoir
Salut, Tony, ça t'apprendra ce qu'on t'avait vachement reconnu
C'est pas grave, c'est pas grave
Ah mais j'ai rien dans le froc, Tony, tu vois
Voilà, donc euh...
Non, mais on va mettre Tony
C'est mon nom de famille
Tony, c'est Arnett
Ouais, c'est ça, t'as raison
Avec cuisses de blours
Salut, Gérard
On écoute à hausse 98.7, hein
Et peau de chambre à dinant 103.5
Ouais, salut, Gérard, ça va ?
Salut
Donc, alors, première question qui porte sur New York
Alors, êtes-vous allé à New York ?
Bon, celui qui commence à rôter déjà, il va commencer à fermer sa gueule
Parce que ça va aller vite avec lui
D'accord ?
C'est du calme, Gérard
Ok, ben celui qui rote aussi
Alors, première question : êtes-vous allé à New York ?
Si oui, quel type de transport avez-vous pris ?
On va demander à Saucisson à l'ail
Ouais, j'y suis déjà allée
Et donc, le transport que j'ai pris, c'est bien sûr l'avion
Et quand j'ai pris l'avion, j'ai énormément faim
D'accord
Question de Gérard, je suis en train de parler
Il y a Davey1 sur l'IRC qui te demande : c'est quoi la fréquence de fun à New York ?
Alors là, je ne sais pas
Et il faudra demander ça à Pildar
Attends, je vais vous donner ça dans deux minutes
Alors, cul de poule
Oui, moi j'y suis allée
J'ai pris des gros taxis jaunes
D'accord
Sous ce boule
Moi, je n'y ai jamais été, mais ça me dirait bien
Tony ?
Non, je ne suis jamais allé à New York
D'ailleurs, j'ai été un petit peu vexé que tu ne m'aies pas invité à aller en avant-première
Attends, ce n'est pas moi qui ai décidé, c'est la radio, d'accord ?
Désolé
Cuisse de blour
Oui, moi j'ai décidé d'aller et j'ai pris l'avion
D'accord
J'ai la fréquence, Gérard
Oui
A hundred four four five
Six point five seven
Non, mais tu parles français, s'il te plaît
You got a man in the film
Oh, derrière vous, vous vous calmez, s'il vous plaît, merci
Non, non, non
La fréquence
A hundred five four point seven
Bon, alors quand tu parleras en français, je te répondrai
Cent quatre point sept
Cent quatre point sept, ça m'étonnerait
Il parlait pour les New Yorkais
chambre oui oui non pas de chambre tu apprends la question qui m'a dégagé bon j'étais en état
plein avec le micro d'accord je crois que t'as pas tellement compris d'aller la question je crois
que non mais je crois que t'as pas tellement compris êtes-vous allé à new york si oui quel
type de transport avez-vous pris tu lui expliques comment ça se passe en débat il comprend mais je
lui dis tu y expliques tu y expliques tu y expliques parce à mon avis il n'a pas tellement
compris le truc donc alors moi tu utilises à brèze d'un gérard pose des conditions et
d'abord
c'est n'importe quoi
avant la fin de l'émission tu pourras peut-être recevoir le restant du café surtout sur ta gueule
ok donc qu'est ce que je voulais dire ouais je voulais dire que donc bon ben j'ai été à
new york on était j'ai été avec samedi donc on a pris l'avion c'était
super bien alors les habitants de new york paye-t-il moins d'impôts qu'à paris on va demander à
peau de chambre bon alors et peau de chambre on t'a sélectionné c'est pour quoi faire
seulement on t'a sélectionné c'était pourquoi faire pour participer au débat ou pour te foutre
de ma gueule je peux vous pas de ta gueule je réponds même pas new yorkien je suis à paris moi
non mais moi je te demande à paris c'est pour ça que j'ai 103.5 dix noms ah oui ah ouais dix noms tu
prendrais pas les gens pour des cons celui qui s'amuse à seul qui s'amuse à dire que je suis
dehors tout à l'heure avait dégagé et je veux pas chercher je vous préviens soit vous répondez
correctement question soit vous vous foutez de ma gueule et vous n'avez pas envie de participer
au débat ça sert à rien qu'on vous sélectionne ok c'est clair et net oui il y a encore des v1 qui 2
qui te demandent si les nouilles york c'est un plat surrénien à la fin pour l'instant on n'est
pas arrivé à la question qu'est-ce qu'on mange là bas alors on va demander un peu de chambre
s'il est réveillé alors tu as commencé à tout de ma gueule là ou quoi je n'ai pas entendu la
question alors que j'ai demandé la première fois apparemment il a dit j'ai pas envie d'y répondre
alors s'il a pas envie d'y répondre du parti c'est pas au débat ça sert à rien de se laisser
s'il vous plaît c'est moi qui commande je vous préviens si on vous sélectionne
on se calme si on vous sélectionne c'est pour participer au débat si vous voulez
pas participer ça sert à rien qu'on vous sélectionne c'est clair et net alors pas
de chambres les habitants de new york fait une moins d'impôts qu'à paris
d'accord pourquoi aussi il faut peut-être expliquer un peu alors tu peux expliquer
non mais attends non mais là je crois que tu as compris ta question mais je ne sais pas
y répondre j'habite pas à new york et voilà je crois pas trop mieux maroc et cuisses de
blour tu peux répéter la question elle vous commence à me les gonfler là mais non mais
j'ai pas entendu mais les oreilles c'est comme le cul ça ça vous avez très bien compris la
question maintenant j'arrête et tu me suis pas avec une semaine alors si j'ai si tu n'as pas
compris la question je passe à tony merci je crois qu'il comprenne pas le sens de tes questions mon
gg alors tony moi je voulais dire que les habitants de new york ils doivent payer un
petit peu plus d'impôts parce qu'il me semble que le dollar c'est plus fort en amérique qu'en
france en fait ouais mais d'ailleurs tu pourrais témoigner même toi parce que tu as vu que mon
c'est qu'ils ont payé plus plus d'impôts parce qu'il paraît qu'il ya un gros monstre qui a tout
détruit dans la ville ça fait qu'en fait ils ont payé plus d'impôts mais attendez il ya une question
il ya booster qui te demande enfin il te demande pas il explique que les habitants de new york ne
paye pas souvent de pot c'est pour ça que les bistrots sont vides non mais non mais je vois
pas du tout le rapport gérard thiel et dans les histoires la bataille qui peut nous en parler non
non pour l'instant on n'est pas en train de parler des cafés d'accord si je boule je pense que le gros
monstre de payer beaucoup d'impôts parce que les gens vont fuir l'art tu me cherches celui qui fait
le con était un ton micro parce que tout à l'heure je vais ça va même se terminer pour
ton matricule alors si vous pour toi moi je pense que il fait beaucoup d'impôts parce que le gros
monstre à l'oeuvre de new york il doit avoir une grosse maison quand même ok saucisse en
l'aïe sérieusement moi je pense qu'à new york que les gens ont plus d'avantages que la france
parce que notamment les problèmes des impôts comme on parle non mais tu peux préciser le fond de ta
mais pourquoi pourquoi parce que il faut qu'il paye des impôts et c'est comme ça d'accord c'est
en dollars gérard non sans de son dollar pour l'instant c'est lui de chercher qui c'est qu'on
est en train de faire le compte de l'euro pour l'instant c'est lui de chercher qui c'est qu'en
train de faire le compte de l'euro pour l'instant c'est lui de chercher qui c'est qu'en train de faire
le compte c'est pas demandé de filard ce signal au lieu d'allumer ta club tu essaies de savoir qui
fait le con parce que sinon c'est toi qui déroule je te préviens tu la cherches tu de suite jamais
toi ce qui fait un l'aïe mystère permet ça suffit d'accord alors tu poules oui ça dépend de ta vie
dans new york et à côté du tower bridge tu payes tu peux répéter la piste et j'ai pas compris le
tu peux répéter la piste et j'ai pas compris le
je peux pas vous dire parce que comme nous on a été on a été dans new york tout ça va être à
new york trois jours tu peux pas dire tu connais le york non maintenant en trois jours tu peux
visiter new york je suis désolé gérard tu as été dans le groupe quoi tu as été dans le groupe c'est
où ça c'est à côté de harlem normal à temps il ya des grands négros avec des couteaux de châssis
c'est tout ce signal qu'on a on a visité certains quartiers et je peux vous dire une chose que c'est
quand même pas évident de se balader là dedans pour vous dire ça tu dis au fil d'art oui mais
je peux pas deviner je n'avais tu peux pas dire c'est ton boulot tu veux faire le sondage maintenant
tu fais ton boulot correctement pas du tout d'accord ok gérard en attendant à propos du
bronx sur hier c'est on me demande si tu as coulé un bon non non donc j'ai pas vous dire s'il paye
plus d'impôts que nous à paris ça je peux pas vous le dire parce qu'on n'a pas eu à faire des
recherches non on n'a pas eu l'occasion de trop discuter avec les gens et tout donc en porte que
on ta gueule à toi je t'emmerde et est-ce que tu as rencontré à bittelborg de quoi tu as rencontré
à bittelborg n'importe quoi toi tu es en train de planer à 24 alors j'ai un tel et à new york pour
voir un film c'est ça bah oui c'était quoi le film de cul à zobzila contre les présences n'a
rien fait gaffe à toi tony parce que tu as l'heure tu as dégagé je te signale tentera de rester à
carreau si tu veux finir les dix questions non mais moi je te dis t'as intérêt à te calmer ok
pas de problème mais pour l'instant on n'en est pas arrivé là d'accord d'accord alors on
commence quand on est à new york leur spécialité d'abord pour vous donc on va demander à
un mec en moto
toi tu cherches d'une sorte un trou bleu il est un portable en plus c'est sûr
allez-y continuer et attend parce que lui veut pas faire son boulot au
c'est bon apparement apparemment il s'est arrêté apparemment il s'est arrêté basique
à tout à l'heure je vais me lever j'ai tant que les mines ça va faire tout drôle à vendre
avant la fin toi je te le dis merci alors pour calmer le débat oxy qui dit qu'un jour il ira à
new york avec toi on y jouera tu verras non mais ça c'est une chanson donc je m'en fous alors que le
mensonge c'est pas gentil de ta part m'a ainsi votre manière j'irai pas à new york avec lui j'irai plutôt
avec ma femme non personnellement j'ai pas trop on comprend pas trop bien ce qu'ils nous disent à
part excuse me excuse me ou qu'un tueur et ça c'est ça là donc on revient sur la 6 à l'aïe
il n'a rien fait gérard il ya jupilère qui te demande si à new york a vu starsky hutch non alors
on revient à la troisième question que m'en sont quand on est à new york leur spécialité on va
demander ça à peau de chambre vous commencez vous commencez à me casser les couilles sérieusement
on est déjà la troisième question vous commencez à foutre un foot boîte merde c'est pas bon une amie si
ça va pas être bon pour le deuxième débat je le sens alors peau de chambre
tu crois qu'ils mangent des frites à bas
tous en même temps s'il vous plaît cuisse de velours je viens de répondre à la question
non mais je demande à peau de chambre c'est pas qui répond c'est pas mal
tony
il me semble aussi que c'est beaucoup d'aval de sauvetage de viande rouge et de frites d'accord
ce boulot moi j'étais dans un fast food et j'ai pris un menu mcgaver
anthony tony tony tony laisse le parler donc j'ai pris un menu mcgaver un couteau suisse
d'accord tu vois mon pote à temps qu'il y a un couteau suisse une boussole et un sandwich au paté
d'accord tu vois mon pote attendez j'ai un couteau suisse j'ai un couteau suisse et un sandwich au pâté
d'accord tu vois mon pote attendez j'ai un couteau suisse et un sandwich au pâté
ça c'est pas comestible dans ce cas tu sais ce que tu vas faire tu vas aller voir fildar
tu vas aller voir fildar au standard maintenant ça va être terminé pour toi
je peux pas l'aider hein non non mais c'est bon tu prends quelqu'un d'autre parce que j'aime pas les cons qui s'amusent à dire des conneries
donc on n'a pas le droit d'être drôle saucisson à l'ail
alors la nourriture la plus répandue je dirais les hamburgers les hot dogs les frites et les oeufs brouillés
et comme c'est ça je prendrais une pomme d'accord cuttool
bah moi j'ai entendu dire qu'ils faisaient des hot dogs avec des chiens écrasés mais bon
alors cuttool cuttool oui je crois que t'as pas tellement bien compris la question
bah si arrête pas vas-y non mais attends tu crois que je m'amuse à faire que ça toute la soirée
je vous demande ce qu'ils mangent je t'ai dit ils mangent des hamburgers faits avec des chiens écrasés
ouais bah ça ça rend signe qu'on mange des bêtes
non mais pas du tout j'ai l'impression que moi j'ai l'impression que tu saurais ce qu'ils font des hot dogs avec des chiens écrasés
d'accord alors moi je peux te dire une chose que c'est beau donc le
les plats le plus qu'il y ait demandé
attends c'est le qui s'amuse à
à rnipler comme un comme un un bœuf
c'est Sandy alors Sandy à ton merde toi d'accord pétasse
ça ça va aller vite maintenant
je vous préviens je modère pas mes mots alors
ah bon on a vu là
gare au gorille
donc donc qu'est-ce que je disais donc ouais je voulais répondre donc bah c'est sûr que
la spécialité d'avoir c'est hamburger brouillé voire même café du café souvent c'est hamburger café là-bas en règle générale donc
ouais non mais c'est vrai qu'ils mangent aussi des glaces mais je pense que merci pour le larsen quand je parle c'est sympa donc je peux dire que c'est vrai qu'il y a aussi il y a des glaces mais quand il fait froid ça m'étonnerait
c'est vrai qu'il y a beaucoup Gérard c'est vrai qu'il y a beaucoup d'obèses aux états unis
non non mais je peux je peux dire que en règle générale là dans dans dans les quartiers attendez s'il vous plaît merci déjà je vais couper je vais te répondre Tony après mais il y a une question hier c'est que peut-être important oui il y a Jardis Couture qui te demande quand tu es allé à New York est-ce qu'il y avait encore le vaisseau d'indépendance B au-dessus de l'Empire State Building non qu'est-ce que je voulais dire
merci c'est pas à Manu qu'il faut les envoyer c'est à moi d'accord
alors pour la première question êtes-vous déjà allé à New York alors il y a 50% des gens qui ne connaissent pas New York dans la Manche alors ça la Manche c'est dans le département 50 donc je vois pas du tout l'Europe
il y a New York là-bas non mais il faut passer par la Manche pour la New York c'est la mer la mer tu connais pas la Manche non mais attends tu me dirais il faut traverser la Seine pour aller à Suresnes c'est pareil à Broutille
32% des gens répondent ne répondent pas aux mondiaux donc je vois pas du tout le rapport avec êtes-vous déjà allé à New York qu'est-ce qu'il y a encore 18% sont allés à Euro Disney alors je sais pas si Euro Disney ils veulent parler d'Euro Disney celui qu'il y a à Paris mais à New York ça s'appelle pas Euro Disney
c'est même pas Disneyland
c'est Disney World
c'est Disney World
je crois que
le parc d'attractions là il est en
il est en voie de disparition
oui Rigo
il y a Raptor qui te demande
vu qu'il n'y avait pas le vaisseau d'indépendance D
est-ce qu'il y avait King Kong sur l'Empire State Building
non plus
donc je répondais à qui c'était
donc Tony tu peux me
je répète pas la question
donc tu voulais me parler s'il y avait des obèses
voilà j'ai très bien compris
je répète pas la question
si ça te plaît pas mon pote tout à l'heure tu vas dégager
et puis je vais pas te répondre tout de suite
vas-y on te réponds quand même
alors donc pour te dire s'il y avait des obèses là-bas
je sais qu'on en a vu pas mal
et c'est vrai qu'il faut voir aussi ce qu'ils mangent
parce que quand tu vois le nombre de restaurants
qui sont les uns à côté des autres
ça fait un restaurant tous les 20 mètres à peine
grosso modo
et je peux te dire une chose
grosso modo
il y avait un restaurant tous les 20 mètres
oui Rigaud avant qu'on fasse une pause
non il me demande si
attends
c'est méchant il parle de Sandy
bon alors c'est pas la peine
donc alors
j'ai une question
est-ce qu'ils ont toujours le syndrome de la vache folle au McDo
non mais attends je vois pas du tout le rapport
avec New York là
dans les hamburgers
non mais attends je vois pas du tout le rapport
parce que le temps c'est pas le temps
je vois pas du tout le rapport parce que le temps c'est pas le temps
je vois pas du tout le rapport parce que le temps c'est pas le temps
je vois pas du tout le rapport parce que le temps c'est pas le temps
le truc sur la vache folle
ça vient pas de New York
ça vient d'Angleterre
donc
vas-y toi
parle plus fort comme ça
on comprendra bien
donc
oui
moi j'aimerais te poser une question
est-ce que tu crois que la viande qu'ils mettent dans les hamburgers
est-ce que c'est la même viande qu'on prend
attends 5 minutes
tu parles encore plus fort je comprends pas
c'est de la viande de riz
c'est de la viande de riz dans les hamburgers
attends mais je pense à les 24 lignes
je suis en train de me faire une question je suis méchant
attends 5 minutes
je vais bouffer ton saucisson en lait
attends tu fermes ta gueule toi connard
ok connard
écoute je fais les 24 lignes
ouais tu fais les 24 lignes et tu parles moins fort
quand les gens ils parlent ok
allô
non Gérard arrête arrête
arrête de le frapper
Gérard arrête
il continue ton débat
bon alors saucisson en lait
vas-y je t'écoute
vas-y
avant qu'on fasse ta pause
oui donc je voulais te poser la question suivante
est-ce que tu crois que la viande qu'ils mettent dans les hamburgers
est-ce que tu crois que c'est la même viande qu'en France ?
si je pense si parce que c'est
faut dire une chose que les hamburgers
donc c'est des trucs qui sont apportés d'un peu partout dans le monde
donc c'est de la viande hachée
donc je pense que
ça peut être de la viande fabriquée aussi
ouais mais je pense
bon on arrête pour cette question
maintenant tout le monde a répondu
alors que représente New York pour vous
et on va s'écouter
on va s'écouter quoi ?
la croûte des pieds de ma femme
sont bonnes avec du caviar
et on se retrouve tout de suite après
au 0800 308 5000
et 0870 5000
et toujours www.inter.radio
sur le site internet
que Rigo vous attend
à tout de suite
à tout de suite
à tout de suite
au revoir
bonne radio
et donc il y a toujours Rigo
qui vous attend sur le site
internet www.fr
j'ai une grande nouvelle
on a déjà dépassé les 3000 personnes
alors qu'il est qu'une heure du matin
on est en train de voir tout l'heure ce qu'on a
3104,3
ouais mais j'espère qu'il y en a pas
qui vont s'en aller à cause de fil d'arbre
on vient de s'écouter quoi Gigi ?
on vient de s'écouter
les croûtes de pieds de ma femme sont bonnes
avec du caviar
vous pouvez toujours nous appeler
au 0800 308 5000
il y a toujours monsieur fil d'arbre
quand il sera décidé à faire son boulot correctement
parce que les 24 lignes sautent
mais il prend personne au standard
donc ceux qui essayent d'appeler
n'ayez crainte
c'est fil d'arbre qui déconne
allô ?
hein ?
on retient les lignes qui sautent
alors donc on récupère cul de poule
c'est bien si Manu ?
oui
je peux avoir les gens ?
ah bah excuse-moi
merci
donc on récupère cul de poule
oui je suis là
rebonsoir
rebonsoir
saucisson à l'ail
salut
salut
euh sudboule
toi tu viens d'arriver
bonsoir
euh Tony
salut ma couille
salut
cuisse de poule
cuisse de blour pardon
moi je suis là
euh pot de chambre pour terminer
allô Gérard
ok
alors donc la question c'est
que représente New York pour vous ?
alors on va demander ça
bah on va demander ça
bah bah bah
cuisse de blour tiens
bah pour moi ça représente un lieu historique
enfin je parle de la société de liberté
ouais
et
et
voilà c'est tout
ça euh
pour toi euh
ah ouais mais toi tu y as jamais été
ouais ouais je parle de
ouais ouais
donc euh
avec les boutiques en fait
hum d'accord
mais euh t'as pas eu l'occasion de
d'aller dans
dans dans le centre de
dans le centre ?
non non
d'accord
euh pot de chambre ?
ouais bah moi ça me fait penser aussi à ce qu'il y a de la liberté
et puis au cinéma
mais attends
mais pourquoi le cinéma ?
euh je sais pas si t'as vu Dimorphi dans la presse à New York ?
mais non mais mais attends
mais mais attends pot de chambre
non mais je vois pas du tout le rapport que représente New York pour vous
toi tu me dis la statue de la liberté et les cinémas
mais attends mais je vois pas du tout le
il a raison moi j'ai vu aussi euh perversion
non mais attends Tony pour l'instant je demande à pot de chambre
oui oui
bon alors vas-y Tony si tu... bon toi pour toi c'est le cinéma et la statue de la liberté c'est ça pot de chambre ?
hum
hein
euh Tony
non mais je voulais dire qu'il avait raison parce que moi j'avais vu perversion anal à New York aussi
et ça parlait de New York et puis il y avait Antoine Lefond de New York
ah Delphine excuse moi
allô ?
ouais salut chérie ça va ?
ça va ?
ouais
non mais euh Tony
ouais
Tony tu arrêtes s'il te plaît ?
je te rappelle plus tard là je parle à Jean-Loup
non Tony s'il te plaît
je parle au bouffe de l'antenne
ok ok
Tony !
euh ouais et puis aussi ce que ça m'inspire aussi New York c'est des filles blondes qui vont se baigner à moitié à poil en baillot de bain rouge dans la tamise
non mais attends parce que là je vois pas le rapport
tu veux dire la série ?
euh Suzeboule
ouais ça me fait penser à King Kong et Godzilla
d'accord
ouais tu vois tu peux...
je vais répéter la première question du débat je vais y répondre
non non je répète plus les questions
euh saucisson à l'ail
alors ce que ça représente bah la statue de la liberté les vacances et évidemment les beaux garçons
d'accord ah ben
donc voilà
cul de poule
ouais moi ça représente 6 mois de ma vie
je suis partie 6 mois là-bas j'ai fait la fête pendant 6 mois quoi
ouais mais alors pas con alors comme toi tu y as été pendant 6 mois
ouais
donc tu peux me dire qu'est-ce que t'as visité ?
j'ai visité plein de trucs mais j'ai surtout fait la fête
en fait j'étais dans les boîtes
j'étais pas là-bas pour visiter vraiment quoi
j'allais à la statue de la liberté dans l'Empire State Building
pourrais-tu nous inviter quand même ?
voilà
pourrais-tu nous inviter ?
mais attend
non mais la prochaine fois j'y retourne bientôt
y'a une question hier c'est Rigaud non ?
ouais y'a Davy Wan
laisse tomber Rigaud laisse tomber
non mais attends
euh Rigaud
impose-toi Rigaud
assieds-toi Gérard
toi fais gaffe parce que tout à l'heure j'étais éclaté toi
Gérard y'a juste Davy Wan qui te demandait si New York c'était la capitale des Etats-Unis
euh je... non c'est Washington
pour le remettre à sa place
voilà alors euh donc tout le monde a répondu donc euh
pour moi que représente New York ?
donc bah bien sûr y'a la statue de la liberté
y'a le stadium building
y'a le central park
y'a la cinquième avenue qui est super belle à visiter avec euh
Manhattan
hein ?
Manhattan
c'est où ça ?
c'est New York
ouais mais euh attends tu peux préciser le fond de...
Manhattan bah euh
Manhattan ?
ouais
ouais bien sûr on a visité tous ces coins là
on a même visité
le Wood Boulevard ?
mais on a même visité le... les quartiers euh chinois, italiens et... et autres
t'as visité le Wood Boulevard Gérard ?
hum ?
t'as visité le Wood Boulevard ?
bah bien sûr on... je t'ai... qu'est-ce que je viens de dire ?
on a fait la cinquième avenue on a... on a fait qu'une marché de... durant les... les trois jours
mais qu'est-ce que t'as dit en le...
attendez attendez tout le... tout le monde... bah pas tous en même temps
ouais mais Tony je voulais te demander si t'étais allé dans le quartier euh Black à Amsterdam
bah je viens de... eh qu'est-ce que je viens de dire dans les quartiers noirs espèce de... d'abruti ?
ah excuse-moi j'ai pas entendu un pralem donc
c'est un pralem ?
bon euh celui qui... celui qui reçoit du monde là c'est plus la peine qu'il... qu'il participe au débat parce que ça commence à m'énerver
eh dégage de chez toi tu les fais pas rentrer
ok
ok
on veut pas... on veut pas... on veut personne
arrêtez de rigoler là
tu gères un peu ?
eh tu fais quoi ?
oh non je fais...
tu fous ta merde
mais non
mais j'ai pas que j'ai une émission à faire avec le boeuf de soin de...
oh non
mais t'es en train de foutre ta merde ou quoi toi ?
oh là là c'est nous
New York
euh donc qu'est-ce que je voulais dire moi c'est tout
Gérard ?
oui
il y a Ethan sur IRC qui te demande si t'as rencontré des stars à New York
euh alors qu'on... non on a pas eu l'occasion d'en voir à part que ils puissent... ceux-ci sont à l'aïe il y en a dû voir euh...
euh moi j'ai vu Al Pacino et... et Jean Reno
bon alors celui-là c'est plus la peine maintenant Fildar tu fais ton boulot correctement
président de la république des Etats-Unis Bill Clinton
d'accord euh Fildar
écoute ton micro et tu me gères celui qui est en train de recevoir du monde parce que ça m'énerve
je voulais te poser une question Gérard je voulais te poser une question
est-ce que t'as été dans la... dans la rue tu sais où ils font leurs... ils laissent des empreintes de pieds là c'est avec leur nom ?
euh ouais on l'a visité aussi ça on y est passé
c'est Hollywood ?
ouais c'est dans Hollywood boulevard
bon Fildar tu gères maintenant ça commence à bien faire
je vais ouvrir alors
d'ailleurs je vais t'ouvrir mon poing dans ta gueule toi
t'es allé à South Fork ?
non
euh les touristes vont tu le puces ?
je vais plus facilement à New York qu'à Roubaix
c'est pas la même ambiance
ouais ouais c'est sûr
c'est pas pareil
elle est bien elle est bien la question
donc euh on va demander à Tupoul
ouais bah ouais moi je vais plus facilement à New York ouais
je suis désolée pour les gens qui habitent Roubaix mais euh non non je peux pas là
d'accord euh... ceux-ci sont à l'aïe ?
non moi je pense que les touristes peuvent se rendre plutôt à Roubaix plus facilement
ouais non mais attends
parce que y'en a un qui est en train de faire le con tout à l'heure si je me lève il va s'en prendre une il va dégager des studios vite fait lui
ouais donc je te disais je pense que les touristes peuvent se rendre plus facilement à Roubaix
je vais t'expliquer pourquoi
parce qu'à Roubaix ils peuvent s'y rendre en voiture ou en train et que c'est moins cher que l'avion
c'est à quoi avoir à Roubaix ?
à l'avion quand tu payes ton billet de train déjà que ça te fait cher
en plus tu fais la queue pour avoir ton billet de train donc euh...
mais t'as pas la statut de la liberté à Roubaix
mais y'a des "bouldings" à Roubaix ?
y'a pas de "bouldings" là-bas
non mais vous la laissez parler c'est tout
ok, bon merci
euh... Susboul ?
bah moi je pense que c'est quand même plus facile d'aller à Trifouille et Jours parce que c'est en France et c'est plus près
n'importe quoi toi
Tony ?
ouais moi tant qu'à faire je préférerais aller à New York avec plus de poules qu'aller à Roubaix
ouais ouais ouais ouais
euh... Cuisse de Blour ?
bon bah je préfère aller à New York c'est clair
on t'emmènera
on fera des trucs à Troyes
attends attends
y'a D-Light sur IRC
ils demandent quelle langue on parle à Roubaix
bah à Roubaix on...
Roubaix quoi ?
euh... non on parle le ch'ti-mi
donc comme Roubaix c'est dans le nord donc on parle le ch'ti-mi
voilà euh...
Potcham pour terminer
ouais mais on s'intéresse plus facilement à New York aussi ouais
on part tous les 5 là
d'accord, bah moi je peux vous dire
je préfère aller à New York qu'à Roubaix
parce que à New York au moins c'est...
on t'en met un peu comme moi alors ?
moi je préfère aller à New York parce qu'il y a plus de trucs à visiter que dans le nord de la France
voilà voilà voilà
donc alors y'a peut-être un...
un petit sondage là mais je pense que
ça m'étonnerait que ça fasse plaisir aux gens
non monsieur Edou...
Edou New-Yorkais de naissance
60% ont répondu euh...
euh... 60%
des gens le sont depuis le 1er janvier
je vois pas du tout le rapport
ça ça a rien à voir
euh... après j'ai 30%
des gens sont...
des gens le sont depuis
que Dieu est là
alors là je vois pas du tout le rapport
10% des gens se...
se sont fait vacciner
contre New York cet après-midi
n'importe quoi
ça c'est des conneries au PD de...
au PD de Fildar
donc ça a rien à voir avec les questions
donc je sais même pas pourquoi qu'on me donne
des sondages comme ça, ça sert à rien
du tout
la sixième question celui qui s'amuse
à vouloir répondre qui est pas sur l'antenne
il va s'écraser merci
bonjour Gérard
alors qu'est-ce qui vous fait le...
qu'est-ce qui vous a fait rêver à New York
bonjour Gérard
hé ça y est t'as fini
ça y est t'as fini toi de dire allô Gérard là le connard
putain c'est bizarre on l'entend plus
alors euh...
bonjour Gérard
bah moi je sais pas aller à New York alors euh...
je peux pas savoir ce qui peut me faire rêver le plus quoi
non mais attends tu peux imaginer parce que t'as...
ils en parlent quand même...
non mais tu peux imaginer ils en parlent quand même à la télé
non mais tu peux imaginer ils en parlent quand même à la télé
non mais tu peux imaginer ils en parlent quand même à la télé
ouais d'accord je crois que euh...
il est blasé il est blasé
non non pas du tout mais euh...
j'ai une idée je crois que je vais le dégager
ouais je pense
plus de blours
bah les beaux garçons le soleil
t'as pas besoin d'aller à New York ma petite
t'as pas besoin d'aller à New York ma petite tu viens à Paris
bon Tony s'il te plaît tu te calmes
non mais Tony tu te calmes ou sinon tu vas faire comme pas de chambre
non mais Tony tu te calmes ou sinon tu vas faire comme pas de chambre
non mais pourquoi aller si loin
on la laisse parler ok
vous la laissez vous la laissez
Tony s'il te plaît tu laisses parler les gens
après on te laissera parler d'accord
alors tu laisses parler un peu les gens aussi
ok merci
donc cuisse de blours
c'est bien ce que je dis
mais je suis allée que 3 jours donc euh...
tu y as été 3 jours ? ouais
et de quand à quand ?
bah j'en sais rien moi il y a 2 ans au moins
d'accord Tony donc maintenant
ouais mais New York j'ai eu l'occasion de connaître
ouais mais New York j'ai eu l'occasion de connaître
mais en fait que par la télé
et puis ça me dit rien en fait je viens à Paris
oui oui
donc New York pour toi
personnellement ça
ça me dit rien franchement
d'accord euh...
suisse boule ?
bah moi j'aurais voulu rencontrer Jock Ewing
mais il est mort
non mais attends
qu'est ce qui vous a fait
rêver à New York ?
bah c'est Jock Ewing dans son orange
non mais attends je vois pas du tout le rapport
avec la question
Tony s'il te plaît
merci
bon alors suisse boule ?
et bah c'est Jock Ewing parce que...
bah vous vous réveillez un peu parce que là c'est mort quoi
oh punaise bon allez
au revoir pour les saucissons à l'ail
oui alors moi je vais te dire
franchement ce qui me fait vraiment rêver
c'est d'habiter dans un grand building
et de voir les habitants de haut
n'importe quoi
non mais ça euh...
même si on monte au 40ème étage on te voit
non là je vais te dire une chose
que ça m'étonnerait Tony
non non Tony
je vais te dire une chose
Tony
non mais moi j'ai pas d'odeur
Tony s'il te plaît
merci
tu te poules
bah moi en fait j'ai rêvé de tout
et puis en fait si tu claques un peu de frites
tu peux assouvir tous tes fantasmes là bas quoi
d'accord je répondrai après
oui Rigo
sur l'IRC qui te demande
si tu t'es bien bourré la gueule à New York
là je vais te dire une chose tu vois
là c'est que
le plus gros problème à New York
c'est que si tu te fais piquer avec de l'alcool
tu vas directement en cabane
donc il faut
mais il n'y a pas beaucoup de cafés à New York
euh non c'est plus des
c'est plus au nord hein
on va préciser même avec saucisson à l'ail
comme on y a été donc on peut préciser
c'est que là bas c'est rare que tu as le droit de boire de l'alcool
ou sinon faut que tu la planque dans un espace
moi je crois pas y avoir été avec toi
c'est moi qui y suis allée
c'est pour ça que là tu dois faire
arrête arrête c'était avec toi
vous êtes allé voir Zodzilla ?
saucisson à l'ail ?
tu te fous de moi là ?
bah oui je me fous de toi
attends toi je te jure
t'as intérêt de répondre aux prochaines questions correctes
il y a Rennes sur l'IRC
qui te demande si tu te fais piquer avec de l'Adidas
tu vas en prison aussi
parce que le parfum tu as le droit d'en acheter
mais pour revenir à la question d'Ethan
donc pour l'alcool
il faut que ça soit planqué
et ça je pense que personne
pourra me le contredire
c'est qu'ils mettent ça dans des
dans des poches
dans des trucs
qu'on fasse pas les gars
ah mais quand tu vas dans les cafés
c'est pas dans les cafés
arrête
arrête de lui mettre des coups de pied
arrête de lui mettre des coups de pied
tu vas te prendre le poing dans ta gueule dans peu de temps
allez enchaîne le
alors donc moi qu'est-ce qu'il m'a fait
qu'est-ce qu'il me fait rêver
oh vous fermez votre gueule ou quoi là maintenant
ah ouais Gérard ce que tu aurais dû faire c'est
mettre de l'eau de vie dans une bouteille d'évian
comme ça tu aurais eu ta douce quotidienne d'alcool
oh Gérard
ah oui
j'ai fait un like et il m'écrit pas du tout
il est parti ?
non d'accord vous allez arrêter de punir votre connerie
maintenant vous allez peut-être reprendre le débat correctement
I'm leaving today
branche ta gueule toi connard
un jour Gérard sera à New York avec toi
Gérard Gérard Gérard Gérard
Gérard Gérard Gérard Gérard
Gérard ton débat toi Gérard
assieds-toi
Gérard assieds-toi
et reprends dans le calme avec les auditeurs
c'est bon un jour Gérard sera à New York avec lui
allez allez allez
ouais marque toi bien toi
espèce de connard va
c'est une question
bon les auditeurs
oui
la question de Gérard
on écoute
alors pensez-vous qu'il fait jour
et qu'il bouge salope
bon
et ben c'est simple on va s'envoyer un livre
non mais on peut pas
non non tu peux pas je veux pas le savoir
moi Fildar il fait pas son boulot
on va reprendre le calme Gérard
on arrête on arrête
il y a un petit débat calmement
il y a D-Light sur l'IRC qui te demande
si tu étais en première classe dans l'avion
et où étaient la piscine et les cours de tennis dans l'avion
déjà pour lui dire
il n'y a pas de piscine et il n'y a pas de cours de tennis
en première classe c'est réservé aux hôtesses de l'air
donc on n'a pas eu l'occasion
d'être en première classe
il n'y a pas de première classe dans les avions
il y a un écran Gégé
comment ? il y a un écran
ouais il y a un écran télé
donc qu'est-ce que je voulais dire
du béton et du macadam
la plus belle piscine
c'est la plage
tu sais ce qu'on va faire
si tu veux poser la question
on va mettre un petit disque
je crois que c'est mieux
toi tu vas me gérer ça
parce que tout à l'heure je vais t'éclater
je le sens
combien on est ?
on est toujours plus de 3500
ça va alors je peux faire le con
je crois que tu vas faire le con
on va le faire avec mon pied dans le cul
pose la question Gérard
alors pensez-vous qu'il fait jour
à New-York quand il est 18h à Paris
et qu'il pleut et on s'écoute
les petits pousseaux en Paname
avec les chiens d'Henri en break
je te signale
et voilà donc on vient de s'écouter
les petits pousseaux de Paname
avec les chiens d'Henri en break
il est toujours 1h22
exactement
donc vous êtes toujours sur Fun Radio
donc vous pouvez toujours nous appeler au 0803 085
ou au 0875
où il y a Fildar
qui vous y accueille
qui ne veut pas vous répondre
c'est pas de notre faute
et puis Rigo toujours
toujours l'internet
lui il bosse bien
donc www.fairfunradio.fr
et
ouais ? donc tu me disais ?
il y a rien là maintenant ?
on est un peu moins de 4000
3856
moins 3 parce qu'il y en a 3 qui viennent de partir
bah ouais à cause de Fildar
bravo
ils allaient se coucher ils connaissent New-York
et ils s'en foutent de ton débat
tant pis pour eux donc on est quand même à 3800
c'est quand même pas mal
à 1h23 du matin
donc c'est bien
donc on récupère Cutpool
bonsoir Gérard, bonsoir Manu, bonsoir Fildar
bonsoir
bonsoir à tous
je te prends
par devant et par derrière
y'a pas de problème
t'es salope
t'es salope à ton merde toi pétasse
c'est quand tu veux hein
oh ceci soit à l'aïe attend
je réponds à celle qui vient de dire
y'a pas de problème Gégé
non mais moi je t'emmerde salope au pied
c'est gentil hein
d'accord ? alors celle qui s'amuse à dire des conneries
va dire tout de suite d'accord ?
c'est clair et net
plus de blour
j'ai le boule
j'ai les boules
j'ai les boules
attends j'ai les boules
c'est pas moi
c'est bien c'est bien
pour en venir au débat
pour en venir au débat
tu le dois
1h24 on recommence
juste après la pause
toi tu fous ta merde
tu les laisse dire les auditeurs
c'est bien ils ont raison continue
à cause de toi ça va descendre
celui qui s'amuse à recevoir du monde
c'est pareil
donc j'accueille le dernier auditeur
c'est Géléboule qui gratte
bonsoir
dis donc tu pourrais mieux écrire
on t'a pas appris à écrire
bonsoir à tous
bonsoir
bonsoir
bonsoir
bonjour
bonjour
enchaîne Gérard
alors 7ème question
le menu il est vélaire aujourd'hui
bon toi tu le teues s'il te plait
pensez vous qu'il fasse
pensez vous qu'il fesse
oh tu la viens une salope
ok quitte poule
ou puce de blour
là je vous préviens vous allez vous calmer
les deux salopes qui nous restent
Gérard pour en revenir au débat
il y a Yankee sur l'IRC qui te demande
si on peut payer les putes de New York en euros
alors là pour l'instant
je peux pas répondre parce que
l'euro c'est pas avant janvier 99
et les billets sont pas avant
ça sera que les pièces qui seront sorties maintenant
toi je t'emmerde
ok
bonsoir lui
bonsoir
allez pour Tony c'est terminé
Tony c'est terminé pour lui
allez hop
tu le bires tu prends quelqu'un d'autre
allez hop terminé
comme ça on entendra pas
le téléphone sans arrêt
Gérard c'était pas la même sonnerie
que le téléphone de Tony
c'était chez moi mais j'ai décroché
ça commence à bien faire
ça y est j'ai décroché le téléphone
Manu tu m'éteins le double son
j'ai rien mis Gérard
mais j'ai rien mis
je m'en fous
je pense pas à la 7ème question
vas-y vas-y
bon alors fil d'art
tu gères ou sinon je t'éclate
écoute je cherche des auditeurs je peux pas tout faire
autrement je fais la vaisselle aussi
pensez-vous qu'il fasse jour à New York quand il est 18h à Paris
et qu'il pleut
on va demander à ça à cul de poule
ça dépend
ça dépend
ça dépend qu'il soit laissé lever ou pas
non mais
tu m'as arrêté de dire allo constamment
parce que ça commence à me faire chier là
d'accord
bon alors tu t'écrases toi pour l'instant
quand je t'appellerai poitrine
tu sortiras de sous le lit toi
excuse moi à la place de Tony
j'ai trouvé un auditeur très sympa au demeurant qui s'appelle mon chéri.
Salut ! Salut mon chéri ! Tu peux foutre où tu veux, tu le sais. Salut ! Salut ! Je te signale,
Fildar, fais gaffe à ce que tu me prends comme auditeur parce que c'est toi qui es responsable
si tu ne me prends pas au-dessus des 24 lignes. D'accord ? On verra toi. Alors saucisson à l'ail.
Alors te dire qu'il pleut quand il est 18 heures, je ne crois pas. Pensez-vous qu'il fasse jour à
New-York quand il est 18 heures ? Et qu'il pleut ? Je n'ai pas compris la question. Alors je te dire
qu'il pleut là-bas, je ne crois pas. D'accord. Je ne pense pas non plus. Attends, saucisson à l'ail,
je te préviens, tu es de poule ou tu es de mort, vous avez vu ce que j'ai fait ? Vous avez vu ce que
j'ai fait ? Je te préviens, tu es de poule ou tu es de mort, vous avez vu ce que j'ai fait ? Je te préviens,
tu es de poule ou tu es de mort, vous avez vu ce que j'ai fait ? Vous fermez-vous sur vos gueules,
vous fermez-vous sur vos gueules, les deux pétasses. Ce n'est pas moi. Tu ne nous insultes
pas comme ça, alors ce n'est pas moi. Alors vous fermez vos gueules. Ce n'est pas nous. Mais
effectivement, je crois qu'il peut faire jour quand il est 18 heures à Paris, voilà. Et quand
vous avez fini de prendre de la poudre de ma gueule, là. Je sens qu'il va prendre mon poing dans
ta gueule. Tu n'écoutes même pas ce que je te dis, là. Pour l'instant, il y a des connards. Moi,
tu n'écoutes même pas les questions qu'on te pose.
Gérard, t'as payé combien pour faire la big pile ?
Et ta soeur, elle a payé combien pour faire une pipe ?
Bon, Gérard, tu continues ton débat, là ? Tu sues, franchement ?
Bon, s'il vous plaît, s'il vous plaît, les auditeurs, on se répond à la question.
Alors, on continue, je repose la question. Saucisson à l'ail, pensez-vous qu'il passe
jour à New York quand il est 18 heures à Paris et qu'il pleut ?
Je viens de te répondre, je viens de te dire qu'il ne pleut pas et que là-bas, effectivement,
il peut faire 18 heures quand il fait jour, là-bas.
D'accord, je te prends.
Moi aussi.
Bon, alors, toi, tu dégages comme ça, t'as tout de suite répondu.
Mais il n'a pas répondu, Gérard, laisse-le répondre.
Mais attends, pour l'instant, il est en train de me prendre pour un con.
J'ai dit que tu voulais que je te prenne, c'est pour ça.
Toi, Manu, tu fermes ta gueule et tu fais ton boulot correctement.
Je n'ai rien dit.
Quand je te prends, tu réponds à la question pour la dernière fois.
Mais bon, moi, je pense qu'il fait nuit à New York.
Quand il fait jour, à Paris, du Luxembourg.
Bon, alors toi, tu n'as pas compris la question, tu dégages ça.
Réexplique-lui, Gérard, plutôt.
Pensez-vous qu'il passe jour à New York quand il est 18 heures à Paris et qu'il pleut ?
C'est clair, net, précis.
Non, moi, je pense qu'il fait nuit à New York et qu'il neige à 18 heures à Paris.
A 18 heures, il fait déjà jour à New York et à Paris, il fait nuit.
Je te signale.
Oui, mais ça, c'est pas vrai.
Parce qu'il y a un décalage d'horaire de 6 heures.
Pourquoi tu ne l'expliques pas, ça, au lieu de leur poser une question ?
Toi, tu fais ton boulot, tu la perds.
Ce n'est pas au Big Bill, là.
Ce n'est pas à toi que je m'adresse.
Ce n'est pas au Big Bill, tu ne poses pas des questions pour gagner des cadeaux.
Ce n'est pas à toi que je m'adresse.
Gérard.
Oui ?
Ça dépasse, ça dépasse, quoi.
C'est qui ?
C'est les saucissons à l'ail.
Oui ?
Gérard, pour revenir au débat, il y a un VNS sur l'IRC qui te demande si les New Yorkais dorment sous la pluie le jour à cause du décalage d'horaire.
Ça, je ne peux pas dire parce que le décalage d'horaire, je ne sais pas s'ils le font aussi ou pas.
Donc, je ne peux pas lui dire.
Est-ce que toi, tu en as vu qui dormait le jour sous la pluie ?
Là-bas, on n'a pas eu l'occasion d'avoir de pluie, donc je ne peux pas le dire.
On n'a pas eu l'occasion d'avoir de pluie.
OK.
Alors, tu es en série ?
Oui.
Moi, je pense qu'à New York, déjà, il pleut tout le temps.
Ah oui ?
C'est un phénomène qu'on peut se trouver.
Et en fait, à cette heure-ci, à New York, il doit faire jour.
Il est quelle heure ? Une heure plus ?
Il est 18h17 à New York, exactement.
Oui, il y a...
Oui, oui, oui, 18h17.
OK.
Cuisse de blour ?
Je n'en sais rien du tout.
Attends.
Tu n'en sais rien ?
Oui, c'est vrai.
Non, mais ça va, tu ne veux pas que Sam t'achète un lit non plus, non ?
Oui.
Tu fais bien ton boulot, là ?
Bah ouais.
Oui.
Ah bah, dis donc.
Tu ne me dirais pas.
Bonne nuit à toi.
Ouais, bah, l'autre, il est vautré sur les deux sièges.
Monsieur, il n'est même pas capable de prendre les gens au standard.
Alors, les 24 lignes sonnent.
Les gens, ils s'amusent à appeler.
Monsieur ne veut rien prendre.
Monsieur, il est fatigué, il faut le comprendre.
Non, mais il est fatigué pour rien de la journée.
Bon, Gérard, pour en revenir au débat, il y a Ethan sur IRC qui demande si tu as visité une radio à New York, genre Fun Radio.
Non, là-bas, on n'a pas eu l'occasion de visiter.
Tu as visité des radios.
Si, à ce qui paraît, tu as été invité pour l'émission de World Siam.
C'est ça, tu as raison, toi.
J'ai les boules qui grattent.
Il y a des champagnes pour ça.
Oui, Gérard.
Moi, je suis, je suis d'origine New Yorker.
OK.
Et je pense que, enfin, je pense que, enfin, le temps, le temps, oui.
Oui, oui.
OK.
D'accord.
D'accord.
Tu as vu Big Bill ?
J'ai les boules qui grattent.
Tu dégages.
Au revoir.
Au revoir.
Au revoir.
Tu ne veux pas dégager.
Il vient de New York.
Non, je ne le dégagerai pas.
Au revoir.
Au revoir.
Je ne le dégagerai pas.
Il est de New York.
C'est intéressant.
Il prend son boulot comme il faut.
J'ai vu la Big Bill Tower.
OK.
Bon, ben, moi, quand Pilar prend son boulot, je continuerai le débat.
Attends, j'essaye d'avoir des New Yorkais parce que tu fais un débat sur New York.
Je me suis fait chasser ta journée.
Le New York.
Quand ?
Quand ?
Quand ?
Quand ?
Tu n'as rien foutu.
Tu n'as rien foutu.
Tu n'as rien foutu.
Alors, on le dégage.
Non, on le garde.
Non, non, non, non.
Gérard, il y a Turpentine sur l'IRC qui te demande si tu es monté sur la statue de la
liberté.
Est-ce que d'en haut, tu as vu la tour Eiffel ?
Non.
La statue de la liberté, de toute manière, elle était trop loin et on n'a pas pu monter
dessus.
Elle était partie ?
Non, elle est trop loin par rapport à là où on était du 102ème étage du… je ne
sais plus où.
Vous étiez au 102ème étage ?
Je ne sais pas si il n'y a que 100.
Il n'y a que 50 étages.
Alors, Tony, je te signale que je viens de te faire connaître encore.
Non, Tony n'est pas là.
Il n'est pas là.
Tony, il s'est couché.
Oui, oui.
Enfin, bref.
Fildar, il fait vachement bien son boulot.
Ça se voit qu'il va vite dégager de ce qu'on a.
Il fait bien son boulot comparé à certains.
Oui, il ferait mieux son boulot.
Ça irait peut-être mieux pour gérer le débat.
Pour l'instant, il fait que de la merde.
Oui, c'est ça.
C'est ça.
Bon, Gérard, c'est mieux ton boulot.
Il pose ta question, là.
Enchaîne.
Attends.
Toi, si tu n'es pas content, tu vas dégager.
Ok, super.
Ok ?
Ok, super.
Bon.
Alors, huitième question.
New York est-elle une ville plus dangereuse que Paris ? Si oui, pourquoi ? On va demander
à Saucisson à l'ail.
Oui, absolument.
Parce que New York, je pense qu'il y a plus de problèmes avec la police.
Oui.
Et on entend que c'est plus dangereux que Paris.
Oui, oui.
Parce que New York, c'est moins dangereux que Paris.
Et New York, c'est moins dangereux que Paris.
Et on entend souvent les sirènes.
Les sirènes des polices, si tu veux.
Oui, il y a la police et les ambulances.
Et il y a souvent des meurtres aussi.
Mais ce qu'il y a, c'est que, comme on y avait été, c'est bête qu'on n'a pas
pu voir les…
Oui, mais voilà.
C'est un genre de sirène comme ça.
Voilà.
Non, non, non.
Pour l'instant, c'est un genre de sirène.
pour l'instant celui-là c'en est un qui s'amuse
donc ok
c'est bien comme réponse
mais parle un peu plus fort devant ton combiné s'il te plaît
s'il s'en aille parce que
c'est ce que je fais mais je peux pas faire autrement
ok, cute poule
non non c'est pas plus dangereux
New York, il suffit de pas sortir la nuit
bah de toute manière
il y a des gens qui sortent
quand même la nuit
tu sors dans la journée, tu crains rien
même dans la journée je peux te dire
on peut te confirmer avec saucisson à l'ail
on pourra te...
je t'ai dit Gérard que je ne te connaissais pas
donc pourquoi tu crois que je te connais
moi je te connais pas
ouais ouais, friconne ma gueule toi
je me fous pas, tu dis ça pas mal que je ne te connais pas
c'est ça, t'as raison
je te prends
quand tu veux
y'a pas de problème
non tu réponds
bon d'accord, c'est terminé pour lui
je te prends, t'es là
tu réponds
allô
on entend très mal
ouais, c'est vrai ça
c'est bon, je me prends
je te prends, tu réponds à la question, s'il te plaît
je me prends par la barbichette
le premier de nous deux qui...
ne me fais pas comme Fildar, d'accord ?
je me prends contre lui
sinon tu seras pas celle du standard, toi
ah merde
DG ?
je te prends par la bistouquette
moi je t'emmerde
t'emmerde parce qu'ils sont à l'ail, c'est bien ?
t'emmerde ?
je te prends, tu m'emmerdes ?
bravo, bravo
j'ai le débat
ok connard
bon allez hop, terminé, moi je fais conclusion, je retourne à la septième
terminé, grâce à Fildar, on arrête ici
mais non, c'est pas de ma faute
attends, tu traites saucisson à l'ail et c'est de ma faute ?
t'es égal, tu fais même pas ton boulot
mais je le fais mon boulot, il est fait
non, attends, il est mal fait
t'es même pas capable de dire à l'autre
t'es à l'antenne, tu réponds à la question
mais si, t'attendais
non, même pas, même pas
attends, t'es pas capable de répondre
si tu réponds à la statue de la liberté tu sais même pas répondre
ta gueule
ferme ta gueule et c'est tout
alors je te prends pour la dernière fois
ah la derbichette
ok
ok ok
ah Gérard, j'ai perdu 200 personnes sur l'IRC parce que t'as dit trop de gros mots
non mais c'est bien, merci Fildar aussi
non mais c'est toi qui les a dit les gros mots Gérard
ouais mais Fildar il fait même pas son boulot, il est même pas capable de gérer un stand-up
bon je te prends
bon je te prends
à part travailler pour Max à partir de 11h30
lui trouver des auditeurs potables
le débat c'est sur New York
il y a que Manu qui est capable de bosser
en plus ça continue c'est Manu qui va prendre le standard
ça commence à bien faire
alors je t'en prends pour la troisième fois
tu réponds à la question ou tu dors
je t'en prends pour la troisième fois
mais faut que tu me prennes moi
mais c'est qui celui qui dit allo ?
putain mais tu commences à me cacher toi
allo
allo
je t'écoute Gérard
je t'écoute Gérard
2276 ça va ?
bon allez les gars vous me faites chier j'arrête
mais non mais non
je te prends tu es tout seul à l'antenne
comme ça Gérard t'entendra vas-y
je t'écoute Gérard
non tu réponds à la question je ne la répète plus
peux-tu la répéter s'il te plait
putain mais
Fildar tu commences à me cacher les couilles sérieusement
tu commences à me cacher les couilles sérieusement
c'est pas de la faute de Fildar
sérieusement tu commences à me cacher les couilles
allo ?
il y a tellement de boxons que j'ai pas entendu la question
alors New York est-il une ville plus dangereuse que Paris si oui pourquoi ?
alors New York est-il une ville plus dangereuse que Paris si oui pourquoi ?
bah oui parce que je pense qu'il peut y avoir des criminels à New York comme à Paris
bah oui parce que je pense qu'il peut y avoir des criminels à New York comme à Paris
d'accord
alors mon chéri maintenant
ouais bah moi je pense que New York
c'est bien plus dangereux que Paris
une question IRC
une question IRC
est-ce que tu t'es fait arrêter à la douane
pour transport de substances illicites dans ton froc ?
est-ce que tu t'es fait arrêter à la douane
pour transport de substances illicites dans ton froc ?
non parce que à la douane
donc pour répondre à cette personne
donc à la douane on est passé
ils nous ont simplement souhaité un bon séjour
ils nous ont simplement souhaité un bon séjour
donc c'est tout
voilà ce que je pouvais dire
ouais bah toi détecteur
détecteur de bagages
détecteur de bagages je voudrais bien savoir
qui c'est qui vient de me sortir ça encore comme connerie
Gérard il y a Turpentine qui te demande
est-ce que c'est vrai qu'à côté de la statue de la liberté
ils ont mis le gargantua de Mirapolis ?
non
non pas du tout
alors cuisse de blour
c'est bon
cuisse de blour
bah je viens de répondre là
ok donc qui c'est qui nous reste
l'autre joli boutique
moi je pense que c'est plus dangereux
parce qu'il y a plus de circulation dans la ville
parce qu'il y a plus de circulation dans la ville
j'ai vécu à New York
j'ai vécu à New York
j'ai vécu à New York
et je pense que c'est plus dangereux
et je pense que c'est plus dangereux
et j'ajoute
et j'apprécie beaucoup
ok donc
celui qui recommence à faire ça va dégager
celui qui recommence à faire ça va dégager
si vous pouvez arrêter de jouiller merci Ça commence à me gonfler, là. Déjà, le premier débat, ça va aller vite. Je fais la dernière question, là. Il est 1h40. Je fais la dernière question. Alors, à votre avis, quelle est la différence entre Paris et New York ? Oui, c'est bon. Vas-y, vas-y. C'est qu'est-ce que j'aime bien ? Non ? Mais t'as contenté, j'en sens plus. Oh là là ! C'est énorme, je le dirais.
C'est énorme, mais c'est bon. Alors, je répète. On a compris Paris et New York. Je n'y voyais pas. Donc, quelle est la différence entre Paris et New York ? Voilà. Donc, je peux répondre, c'est saucisson à l'ail. Vas-y. Donc, là-bas, à New York, l'avantage, c'est que les gens, en particulier en été, sont plus habillés cool que les Français à Paris. Et l'inconvénient, c'est qu'il n'y a pas de papier par terre, évidemment.
Tu as une amende, quoi. D'accord. Et en plus, tu te fais arrêter par la police. C'est dangereux. Vas-y, c'est bon, c'est bon. Alors, vous arrêtez quand je parle. OK, super. Celui qui s'amuse à faire des conneries quand les gens parlent, tout à l'heure va gerber. Je ne vais pas le chercher. Alors, cul de poule. Oui. Il y a 6 000 bornes entre Paris et New York. Non, mais attends. Allô ? Allô ? Bonjour. Allô ? Allô ?
Ah là là, on n'entend rien. TF1, bonsoir. A votre avis, quelle est la différence entre Paris et New York ? Cul de poule. S'il te plaît, tu réponds. Oui, je viens de te répondre. Vas-y, vas-y, vas-y. Oui, il y a 6 000 kilomètres. Alors, je te prends. Non, mais non, je ne veux pas que tu me prennes. Tu réponds à la question ou tu dégages ? Bonne nuit pour lui. Alors, ce coup-là, c'est terminé. Le fil d'air, c'est fait.
Mon chéri. Fais gaffe parce que toi aussi, tu vas faire comme lui. OK. Alors, la différence entre Paris et New York, je pense qu'il n'y en a pas beaucoup. Alors, tu peux expliquer pourquoi ? Parce que la Tour Eiffel, la Statue de la Liberté, déjà, ce n'est pas pareil. Non, attendez. Tu n'as jamais vu la Statue de la Liberté à Paris, toi ? Non. Il y a une mini-Statue de la Liberté à Paris. Tu l'as déjà vue, Gérard, quand même, près de la Seine. Non, mais je ne vois pas du tout le rapport. Je te demande, à votre avis, quelle est la différence.
C'est cassé, c'est tout. Voilà. D'accord. Regarde, Gérard, il y a Choc Norris à la télé. Fils de bleu, toi, tu fais ton boulot et tu fermes ta gueule. Quel chêne, quel chêne ? Non, mais l'autre, il est complètement charbé. Il est à moitié fou, lui. Fils de bleu. Oui, je pense qu'à New York, c'est toujours beau. Et à Paris, je ne peux pas. Vous vous tenez derrière. Sans déconner, vous êtes trop lourds. Oui, on est comme nous.
Oh là là, je sens. Fils de bleu, tu réponds et c'est terminé, on fait conclusion. Non, non, non. Le premier, c'est de la merde. Grâce à lui, le deuxième, ça va être encore pire. Alors, je crois qu'autant conclure sur la neuvième et terminer. On attaque le deuxième. Excuse-moi, Gérard, avant qu'on fasse ta conclusion, à la place de Je te prends, on accueille Chias de Noël. Bien sûr. C'est encore des mecs. C'est encore des mecs.
Ça fait une heure que j'appelle au standard. J'ai galéré, arrête. Je veux bien croire. On verra. Gérard, il y a René sur IRC qui te demande si à New York, les gens qui crient sont considérés comme des criminels. Alors, les gens qui crient sont-ils considérés comme des criminels ? Je ne pense pas. Tu n'entends pas condamnément crier dans New York, à mon avis. Gérard ? Oui ? Ces soucis sont là et j'aimerais te poser une question. Oui ?
Gérard ? Oui ? Do you speak English ? C'est bon, vas-y, c'est bon, vas-y. Non, mais ça suffit. Vous arrêtez maintenant. Moi aussi, je vous parle. D'accord ? Donc, je vous pose une question à Gérard. Do you speak English ? Yes. Donc, yes, tu parles anglais. Voilà. Voilà, c'est tout ce que je voulais savoir. Tu es de l'homme lourd. Pour finir. Je disais qu'à Paris, c'est jamais beau. Pas le temps de merde. Et à New York,
c'est bien. D'accord. Donc, je tiens sur... Hello ? I don't know if I have a question. If you speak English, I don't have a question. Just to answer the question, please. Vas-y, Rick. Yes, I think the difference between New York and Paris is because there are more circulation in New York. And that is between the person dancing. Non, mais attends, mais lui, de toute manière, c'est même plus la peine que tu le dis.
Regarde dans l'équipe. Bon, euh... Gérard, t'as dit que tu parlais anglais. Tu peux traduire, s'il te plaît ? Non, va pire tout, toi. Tu vas te faire enculer. Chiasse de... Je sais pas quoi, là. De Noël. Chiasse de Noël, ça va arriver bientôt. Vas-y, toi. Écoute, c'est dommage, parce que moi, j'arrive à la fin du débat et, en fait, j'aurais pu te faire plein de trucs parce que mes parents sont américains. Donc, voilà, c'est dommage que j'arrive à la fin. Ben, je suis désolé. Voilà, ben, écoute... C'est pas de ma faute, parce que... Non, non, non, attends, je vais te dire chiasse de Noël.
C'est pas de ma faute. Ah, bien sûr, bien sûr. Non, non, c'est pas moi. C'est pas moi qui... C'est jamais, jamais, jamais. C'est vous, pas les auditeurs. Moi, je peux soumettre une idée, c'est qu'étant donné qu'il vient d'arriver, Gérard, on peut le garder pour le deuxième débat. Non, c'est pas toi qui commandes. C'est moi. Je te demande. C'est moi qui commande. Je te demande. Tu me donnes l'air au deuxième débat, t'es pas là, tu te casses. Non, non, t'es plus là. T'es plus là. T'es plus là, toi. C'est ton chéri. Vu que je suis à l'arrivée, je peux rester aussi. Non. Ben, ouais, je peux rester. Non, pas de rien.
S'il te plaît. Bon, vous, je vais répondre à votre avis. Quelle est la différence entre Paris et New York ? C'est que, comme Saucisson a dit, là-bas, les gens sont plus cools, sont mieux habillés que dans Paris et que là-bas, c'est plus propre parce que dès que tu jettes un papier par terre, de toute manière, t'es tout de suite sanctionné. Tandis qu'à Paris, c'est dé-gueu-lasse. C'est quoi, c'est la ville la plus dégueulasse que d'autres villes. Moi, je peux vous dire que New York, par rapport à Paris,
c'est vachement plus propre et les gens sont vachement plus cools que Paris. C'est pas que tu y es resté moins longtemps qu'en France, non ? Non, non, mais même, les gens sont vachement plus cools. Deux petites bouscules. Attends, tu permets que je réponde à Manu, OK ? Les gens sont vachement plus cools parce que dès qu'ils te bousculent, ils te disent excuse-moi. Tandis qu'à Paris, dès qu'ils te bousculent ici, ils n'en ont rien à foutre. J'en ai eu l'expérience, je ne sais plus quand, avec Saucisson à l'ail. Elle a été bousculée. On n'y a même pas dit pardon.
Elle a été bousculée complètement. Elle n'est pas tombée enceinte, quand même. Non. Donc, voilà. Je le demandais par rapport à New York. Tu dis que c'est différent de Paris. C'est quoi les sanctions que tu peux avoir à New York si, par exemple, tu jettes un papier par terre ? Là-bas, tu te chopes une amende et tu peux te retrouver au commissariat de police. Carrément. Tu peux faire de la prison ou pas ? Ça dépend. Si tu es pris pour la première fois, tu te chopes une amende. Si tu es pris pour la deuxième fois, tu te prends une deuxième amende et puis tu es en garde à vue pendant 48 heures. Mais il n'y a pas des noirs ? Et si les amendes peuvent aller,
très loin, plus cher que Paris par rapport aux voitures. Si tu es pris pour la troisième fois, tu te chopes une amende et puis là, tu passes au tribunal et tu te retrouves en taule. Gérard, tu parles de la propreté dans les rues. Moi, je voulais savoir, vu que tu as été à New York avec ton chien, qu'est-ce qui se passe si ton chien fait caca sur le trottoir ? C'est pareil. Sauf que, bon, à Paris, maintenant, tu as des... C'est quoi, la de chute of the dog ? Donc, je réponds à celui...
Tu aurais pu préciser ce mot. Donc, je te réponds. Donc, là-bas, bon, c'est pareil à peu près qu'à Paris. Je pense que tu as des petites poches pour te ramasser et puis tu prends ça dans une poubelle. Donc, voilà. Donc, conclusion de ce débat. On n'ira pas plus loin. On pourrait la faire, notre conclusion, quand même. C'est un peu le solitaire. Vous allez attendre. Il y a encore... Qui c'est qui veut poser une question ? J'ai un sondage sur l'IRC, Gérard. Oui. Alors, un sondage effectué auprès des habitants de New York. A la question.
Quelles souvenirs gardez-vous du passage de Gérard ? 2% réclament l'annulation de la dette que la ville avait... Alors, attends. ...que la ville avait envers les autres pays pour cause de catastrophes naturelles. 5% déclarent être opposés à son éventuel retour. Et 100% du personnel de son hôtel durant son séjour lui rappellent que c'est inadmissible non seulement de venir avec un chien... Oh là là ! Non, je continuerai pas. D'accord. Mais de manière... Moi, je vais... Avant que vous fassiez la conclusion, donc, je vais marquer à la question. MFV ou New York ? Il y a 70% des gens...
...répondent qu'ils ne trompaient jamais leur conjoint. Donc, je vois pas du tout le rapport. 20% des gens qui préfèrent les pizzas au... au pépéronis. Alors là, je vois... Ça, c'est même pas la peine que je continue. Et 55% des gens n'aiment rien. Et 55% des gens, j'ai dit qu'on terminait pas. D'accord. C'est toi qui fais des... des trucs de con. Alors, cul de poule, conclusion du débat.
Alors, cul de poule, je te dis une chose. Si t'es pas contente, le prochain coup, tu restes chez toi. Donc, je vais parler de New York comme on l'a vécu, et c'est tout. D'accord ? D'accord ? Oui, oui, non, mais c'est n'importe quoi. Alors, euh... J'ai les boules qui grattent. Volga, derrière !
Allô ? Je pense que ce soir, c'était un débat très intéressant. Et d'autant plus que ce soir, avec ta coupe de cheveux, tu serais plutôt le... le... comment dire ? Le Ducon Blero du Tétanos. Et je pense que c'est toujours aussi un peu de la chute, le débat. D'accord. Eh ben, si c'est un chien, le prochain coup, tu restes chez toi. Tu se dobes lourd pour continuer. Ouais, ben, tout le monde devrait y aller pour voir la Statue de la Liberté, parce que c'est assez important, quand même. Bah oui, mais ça, de toute manière, la Statue de la Liberté, de toute manière, il faut prendre les bateaux,
la cervelle en hélicoptère, mais je ne sais pas... C'est faux. Quoi, c'est faux ? Tu sais même pas ce que tu dis, toi. Alors, écrase, occupe-toi de ton standard. Occupe-toi de prendre des gens pour le deuxième débat, espèce d'abruti. Non, mais tu m'as dit... Tu peux répéter la première question du débat ? Je voulais répondre. Non, non, je ne répète plus. Tu se dobes lourd, donc pourquoi ? Ben voilà, donc, j'ai dit. Mon chéri, pour conclure... J'aime quand tu me parles comme ça. Ouais, ben, moi, j'aime pas. Alors, tu fais la conclusion et tu t'écrases. Tu m'appelles comme ça. Bon, ben, ton débat,
je dirais, franchement, tu fais mal ton boulot, Gérard. Et puis, voilà, quoi, tu devrais être plus sympa avec ton équipe. C'est ça, c'est ça, c'est ça. Chiasse de Noël. Ouais, alors, ben, écoute, c'est chiasse de Noël. Alors, ce que je voulais te dire, c'est que, je sais pas si tu sais, mais New York, on appelle ça The Big Apple. Toi, je trouve que ça tombe bien parce que t'es quand même The Big Poirot. Et deuxièmement, est-ce que c'est vrai que tu vas servir de modèle pour la Statue de la Propreté ? Et toi, est-ce que c'est vrai que tu sers comme un... que t'es un con quand on te demande une conclusion ? Ben, c'est une conclusion. Ben, moi, je te dis que t'es un con.
Voilà. Ceux-ci sont là, ils peuvent finir. Alors, moi, je veux te dire que c'est un excellent débat, mais le problème, c'est que t'as pas posé la deuxième question. Et je voulais te poser une question. Est-ce que tu veux partir à New York avec... Arrête ! Gérard, Gérard, Gérard ! Mais t'es fou ! Gérard, arrête ! Arrête ! Arrête ! Arrête ! Arrête ! Oh, fils de pute ! Oh, l'enculé ! Oh, l'enculé !
Qu'est-ce qui s'est passé ? Qu'est-ce qui s'est passé, Gérard ? On a rien vu ici. Qu'est-ce que t'as fait, Phil ? Oh, l'enculé ! Elle a fait quoi, là ? Gérard, reste dans le studio. Qu'est-ce qui se passe ? Je veux plus de vie, là. Qu'est-ce qui se passe ? Tu me dégages de l'équipe pour tout le temps. Tu me dégages ! Allez, sors, Phil, là. Ah, là, toi, tu dégages ! Là, t'es vraiment un enculé ! Alors, tu dégages, je vais te faire râper. C'est bon, on va la râper, Bernard. Ah, l'enculé, les barres ! Bon, Gérard, reprends, là.
Non, mais de toute manière, il a coupé une saucisson à l'ail. Donc, moi, conclusion. Il s'est coupé une tranche ? Attends, il va y avoir des auditeurs, encore. Hugo, va voir s'il y a des auditeurs. Ils ont fait tous leurs conclusions. Donc, sur l'IRC, une petite conclusion. On est combien, là ? Alors, attends, je vais demander combien on est, parce que j'ai pas trop le temps de regarder. Donc, s'il vous plaît, les gens, est-ce que vous pouvez me dire combien ? Nous sommes 3 654. Ouais, on a perdu un peu, parce que tu t'es énervé, t'as pas arrêté de gueuler. Et... Est-ce que t'es allé au...
aux Etats-Unis à deux de baleine sur Sandy ? Je sais pas, je comprends pas. Ah, Gérard, il y a quelqu'un. Non, mais c'est bon, la conclusion, ils l'ont toute faite. Donc, tu peux me donner ton air. Attends, parle-lui, Gérard. Ouais, je t'écoute. C'est qui ? Bah, réponds, maintenant ! Allô ? Non, tu réponds ! Bon, allez, c'est bon, on va pas faire de blague. Il est là, pourtant, il est là. Non, mais il répond pas, alors. Attends, je suis au standard, je vais essayer de le trouver. Non, c'est qui, là ? Tu donnes ton mot ?
Je précise ton nom. Donne ton nom. Non, mais attends, pour l'instant, il veut pas, donc c'est pas grave, c'est pas grave. Allez, hop, c'est terminé. Moi, pour conclusion, c'est... Ce combat, c'est d'habitude... Allô ? C'était quoi, ça ? Je sais pas. Non, ça doit être toi, Rigo, sans le faire exprès. Donc, conclusion, c'est dommage, parce que le premier débat, d'habitude, toutes les semaines, il se passe bien. Là, ça foirait complètement grâce à Pildar. Bon, il y en a que deux qui ont bien fait leur boulot, c'est Rigo... Non, non, Pildar,
tu dégages. Ouais, ouais, bah, tu dégages, parce que je veux plus de toi ici. Non, mais c'est sûr. Non, non, mais tu prends ton casque et tu t'en vas. Allô ? Il reste quelqu'un, il reste quelqu'un, Gérard. Ouais, mais on n'arrive pas à voir son nom. C'est qui, Pildar ? Allô ? Allô ? Allô ? Allô ? Bon, et hop, c'est ce qu'il fait. Allô ? Ah, ouais, bah... Donc, alors... Précise, qu'est-ce que c'est que le deuxième débat, quand même ? Donc, le deuxième débat, ça sera sur les grappes. Bon, je vais pas continuer la conclusion du premier. Donc, grâce à Pildar, ça a foiré, le premier, et j'aime pas trop que...
Le premier débat a foiré. Donc, il y en a que deux qui ont bien bossé, c'est Manu et Rigo, pour... Comme d'habitude. On est arrivé à 3600. Donc... J'espère qu'on ira plus loin sur le deuxième. Donc... Il reste quelqu'un, Gérard, hein ? Mais non, mais on n'arrive pas à l'avoir, il répond pas. Donc, alors, on va se retrouver pour le deuxième débat qui va partir sur les grèves. Donc, vous pouvez nous appeler au 0800 308 5000 et 0875 000, et toujours lire, c'est www.funradio.
Plus grosse poitrine de Suren, avec des... des gars, des os. Et on se retrouve tout de suite après pour le deuxième débat. A tout de suite !
== Le débat sur les grèves ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Oh, minuit, 2h
Tu dégages, tu dégages
Pourquoi, connard ?
Allez, hop dehors
Les débats de Gérard
Et voilà, 2h du matin, donc vous pouvez toujours nous appeler au 0800 08 5000 et 0800 308 5000
C'est Manu qui va vous accueillir au standard, les bras ouverts
Oui, je suis là
Et donc, je pense que ça sera mieux qu'au premier débat, je l'espère
Espérons, c'est pas gagné
Et donc, on venait de s'écouter la plus grosse poitrine de Suren avec un dégât des eaux
Et il y a toujours Rigaud qui est sur l'IRC, donc www.funradio
Et là, c'était un de tes remixes, Gérard, c'était pas la plus grosse poitrine de Suren
Oui, non, mais c'était le premier parce que le deuxième, je l'ai pas eu, d'accord ? Merci
Le deuxième, c'est un remix de toi, donc
Donc voilà, et donc, on a toujours Rigaud qui est sur l'IRC
Salut Rigaud
Salut à tous
Ça va, ouesh, ouesh
Salut, ça va, tranquille, pépère
Je voulais passer quelques bonjours quand même à tous
Bonjour qui sont là, quand même
Si, si, on peut saluer les gens de l'IRC
On va saluer Yankee, Arnett, Philippe Détoubifry quand même
C'est quel honneur
Jarvis Cooker, Oxyd, Prez, Youpla, Booba Fett, Olaf Kool, Turpentine
Pff, j'en oublie, Terry, Spiral, Tony, Tachat, Cyril, Terry, etc
Ok, et donc
McFisto
D'accord, ok, donc
Et Ethan
Ok, c'est bon
Il y en a fait d'autres ?
Cybersep, bah tu sais, on est quand même 4822, donc si je le cite tous
Bah balance tous les noms, Rigaud
Non, non, mais c'est bon, combien ?
Alors on a Workboss, on a Oxyd, on a Delight
C'est bon, on salue tous ceux qui sont, tous les gens qui sont sur IRC, c'est-à-dire les
Une bulle de bonbons, choupa choups, choupa choups
Alors, Fildar
Non, c'est pas moi
Non, tu commences pas s'il te plaît, d'accord ?
Donc, on va saluer tous ceux qui sont dessus, donc les 4822 personnes
Et on va saluer tous ceux de la Belgique aussi, s'ils pouvaient nous appeler
Au 0033147
Euh...
7995000
7995000, donc...
On salue aussi tous les Belges qui sont sur l'IRC
Alors, il y a Davy, il y a Ethan aussi, qui est Belge apparemment
Et bah, il y en a plein, quoi
Il y a Perfouras aussi, d'ailleurs, il m'a dit qu'il t'invitait à Fort-Bayard
D'accord, d'ailleurs, Gérard, il va falloir que tu fasses une dédicace pour tous les internautes
Non, bah, on verra ça plus tard, d'accord ?
Donc, on va accueillir Josson Loirent
Allô ?
Oui, salut
Allô ?
Putain, mais il sort...
Il recommence celui-là ou quoi, là ?
Oui, il sort...
Là, ça doit venir de nous
Allô ?
On t'entend peut-être pas, je sais pas
Allô ?
Allô ?
Josson Loirent
Allô ?
Salut
Salut
Allô ?
Comme toi
Salut
Salut
Coca de Pâques
Non, caca de Pâques
Caca de Pâques, pardon
Oui, salut à toi, camarade
Trou du cul
Je t'emmerde
Je t'emmerde, moi aussi, connard
Non, je te remercie, je te remercie, ouais
Je te remercie, putain, lave-toi les oreilles
Bon, tu partes sur un autre tourne, d'accord ?
Bonsoir à toi
Là, je t'attends un peu
Ouais, c'est vrai, ouais
Eh, la chagatte
Là, je t'attends un peu
Je suis là
Eh, ping-pong pour terminer
Salut Gérard, salut Manu, salut Fida, salut Gigi Goré
Salut
Gigi Goré, le pauvre, comment tu t'appelles ?
Ça te fait marrer ?
Non, mais moi, ça me fait pas rire, c'est con
Eh, Rigo, t'as oublié D-Light, Grindr aussi
Non, mais ça y est, ça y est, ça y est, ça y est
Ça y est, on se calme un peu, là
Putain, mais vous allez vous calmer ou quoi, là ?
Eh, bonjour, hein, bâton
Bon, alors, le thème du deuxième débat porte sur les grèves
Allô ?
Merde à toi, celui qui dit allô
Faut faire la grève, moi, je dis
Alors, tu as pensé...
Tu en veux de la bonne grève ?
Moi, j'en veux
Tu en veux de la bonne grève ?
S'il vous plaît, les auditeurs, j'aimerais bien qu'on se calme
Parce que le premier débat était de la merde
Ouais, grâce à toi
Le deuxième, ça sera peut-être de la chasse
Ouais, ben, j'espère pas, parce que c'est Manu qui est au standard
Et avec Manu, vous allez pas rigoler longtemps
C'est moi qui vous le dis
Salut, c'est moi
Salut
Salut
Donc, la première question
Que pensez-vous des...
Ah, il est pas possible
Putain, mais il nous fait chier, ce mec
Je vais le trouver
Enchaîne ta question, je vais le trouver
Alors, que pensez-vous des grèves de nos jours ou de nos nuits ?
À quoi cela sert-il ?
On va demander à...
C'est tout ce que tu dis
Je sens le haron
Alors, moi, je vais te dire que je pense que
De nos jours ou de nos nuits, les grèves
Je pense que ça sert tout simplement à rien
Parce que, tu vois, ils bloquent les passagers
Sur les quais de métro ou même de bus
Et quand ils veulent se rendre à leur travail
C'est quand même assez difficile
C'est pas le haron qu'elles sont, elles
Et de plus, la nuit, c'est difficile
Parce qu'il y a moins de monde
D'accord
Comme toi
Donc, c'est pas sa grève
D'accord, ok, ok, ok
C'est...
Attends, je m'excuse parce que je t'ai coupé
Parce qu'il y en a un qui s'amuse à parler sur toi
Celui qui...
Celui qui...
Tu penses aussi quand tu fais caca ?
Celui qui s'amuse à reparler quand les gens parlent
Je vais pas chercher midi à 14h
C'est clair, net, précis
Le premier qui...
Le premier qui déconne va dégager
Je vais pas chercher
Comme toi
Hé, Gérard
Tu penses aussi quand tu fais caca ?
Comme toi
Tu réponds ?
Oui, ben je te réponds
Ils font la grève parce qu'ils ont que ça à foutre
Ils sont payés à rien foutre
Non mais que pensez-vous des grèves de nos jours ?
Ou de nos nuits ?
Oh là là là
Un peu mal
Bon, oh
Celui...
Eh, ça y est, vous arrêtez quand les gens y parlent
S'il vous plaît
Bon, ça y est ?
Bon, alors...
Caca de Pike
Ouais, c'est caca de Pike
Ben écoute, je pense que tous les camarades ont droit à la grève
Je pense que c'est un droit auquel
Tous les camarades ont droit
C'est le cas de le dire
Et faites la grève, moi je dis un maximum
Faut pas emmerder le monde, faut faire chier les gens
Faut que ça bouge
Mais ouais, c'est ça, tu crois qu'on est pas assez emmerdés ?
Mais attends, les routiers sont les premiers à faire la grève
Ah ouais, non mais attends, pour l'instant
C'est peut-être les routiers qui ont commencé les premiers
Je suis d'accord avec toi
Mais faut dire une chose, c'est que maintenant
Les routiers, ils ont obtenu satisfaction
C'est pas eux qui commencent, maintenant c'est les RATP et la SNCF
Et alors, ils ont le droit de faire la grève aussi
D'ailleurs, c'est aujourd'hui, Gérard
Tu te rappelles l'article qu'on a vu dans l'aujourd'hui ?
C'est aujourd'hui la grève
C'est depuis 20h ce soir
Donc je pourrais vous dire à peu près
Pour ceux qui auront l'occasion de se déplacer
Je pourrais vous donner des...
Oui, faut pas aller
Non, je pourrais vous donner à peu près
Les...
Les trains, combien il y aura de trains qui circulera
Et autres, mais...
Un peu plus tard, pas lors de la première question
Gérard ?
Attendez, s'il vous plaît, on se calme
S'il vous plaît, sur IRC, il y a Turpentine
Qui te demande si ton école, elle était en grève
Pendant toute ta scolarité
De toute manière, il y a...
Je vois pas du tout le rapport avec la question
Mais Gérard, c'est trop du cul aussi
Non mais attends, tu permets ?
Attends, c'est quelque part que j'avais pas fini
Ce que je voulais dire, c'est que j'encourage tous les gens
À aller voir les camarades
Pour les piquer de grève, pour leur amener des merguez
Et des cronambours, parce qu'on se les gêne
Et on se fait chier, quoi, quand même
Non mais attends, là, je crois que tu...
Je crois que tu vas un peu loin, toi, quand tu réponds
Moi, j'appelle tous les gens à aller bloquer
Les voies de métro et de RER, demain
D'accord, eh ben...
Fais comme tu veux, toi, mais...
Mais oui, c'est ça, c'est ça
Et je pense que tu devras les toucher à travers de la voie
Ça fera un bon débat
Ouais, bah, moi, je pense que la grève, c'est très très bien
Et on devrait la faire plus souvent
Parce que ça emmerde bien le monde et c'est...
C'est bien sympa, voilà
Et d'ailleurs, en parlant de grève, il y a Yankee sur IRC
Qui me demande... Ce qui est dommage avec Gégé
C'est que chez lui, c'est le cerveau qui est en grève
Je dois savoir ce que t'en penses
Alors, trou du cul, si tu réponds aux questions
De l'IRC, tu restes chez toi, d'accord ?
Bah non, mais...
C'est pas la première question que tu vas commencer à foutre ta merde
Parce que tu as dégagé, là, maintenant
Je te le dis tout de suite, lâche ton feu
Bah, en fait, ouais
La grève, ça sert un peu à rien
Si on la fait pendant un mois, ça peut marcher
Mais sinon...
Non, mais là, je peux te dire que pour l'instant
Ils parlent de l'affaire
Jusqu'à vendredi soir
Mais ça peut aller plus loin
Ça peut...
Tu sais qui vient de dire ça ?
Qui vient de dire ça ?
Je sais pas, j'ai pas vu, moi
C'est pas moi, quoi
Y'a la grosse qui a parlé, mais...
Attends, la grosse, ça t'emmerde, connard
Voilà, alors, ping-pong
Ouais, ouais, moi, je dis que la grève, c'est excellent
Faut foutre le bordel, on descend dans la rue
Et tout de suite, on devrait faire le blocus général
Non, mais c'est bien, la grève
Faut descendre avec les pancartes, les pochettes bouchées
Faut les emballer, tous ces mecs
Non, mais c'est clair, faut foutre le souk, quoi
Non, mais foutons le bordel !
Ouais !
Demain, je vais aller faire une grève
Je vais me mettre sur les voies du RER
Et puis, ça va être bien
Tu fais ça, puis tu penses que j'y arriverai, moi, tout seul
Allons-y, camarade
Révolution !
Unissons-nous, quoi
J'ai rien à dire ?
Donc, moi, je pense que ceux qui s'amusent à faire grève
C'est qu'ils se rendent pas compte
Hey, Dark Vador
Oui, vas-y, parle, on t'écoute
Fildar, fais gaffe, parce que tout à l'heure, tu vas dégager, toi
J'ai rien fait, j'ai rien fait
Donc, je disais que les grèves, ça sert à rien
Parce que ça fait chier le monde
Alors, je peux vous dire
Qu'à l'heure actuelle, depuis ce soir, 20h
Et c'est jusqu'à samedi, 8h du matin
Donc, voici les premières prévisions des trafics
Donc, TGV Sud-Est et Atlantique
1 train sur 3
TGV Provence sur...
À quelle heure, aussi ?
Oui, tu dis pas...
Oui, bonjour, je voudrais...
Bonjour, je voudrais un billet pour Valence, s'il vous plaît
C'est bien ou pas, Gérard ?
Le petit Gérard, attention
Gérard, tu continues ?
Ça commence à être relou, celui qui parle sur moi
Donc, TGV Provence-Provence
1 train sur 3
TGV Paris-Lille, légère perturbation
Thalys-Paris-Bruxelles
Amsterdam-Cologne
Trafic normal
Eurostar-Paris-London
Trafic normal
Eurostar-Lille-Bruxelles
Eurostar-Paris-Bruxelles
Trafic normal
Et...
Traf...
Pardon
Le petit Gérard, s'il te plaît, tu vas...
Et moi, je t'emmerde, espèce de fils de con !
Non, non, non !
Hop, hop, hop, hop, hop, hop
Ok
Et...
Très grande ligne
1 train sur 3
En moyenne
Transport express régionaux
TER
Trafic très perturbé
Avec en moyenne un train...
RER, répète, RER ?
Non, trafic...
Non, TER
Et le RER, il s'est pas écrit ?
Si, mais...
Il y a Tony sur ERC qui me demande le RER
RER A
Et moi, je voulais savoir...
Trafic normal
Et le B ?
Le B, 1 train sur 4
Sur la branche nord
Entre Gare du Nord et Roissy
Et le F, merde !
Et le F
Y'a pas de F, espèce de con !
Ah, pardon
Mais toi, si tu veux prendre le F, toi, t'en as pas besoin
Et si sur la ligne 15, y'a des...
Gérard, Gérard, Gérard
C'est qui ?
C'est K4PAC, oui, j'ai une question
Je suis à Denfert-Rochemont
Et je vais aller me faire sucer par une pute à Pigalle
C'est où, le changement ?
Tu te démerdes !
Trop du cul !
Bon, ça y est, je peux...
L'heure des grèves, payez-vous votre titre de transport
Putain !
Fil d'art, fil d'art
Manu ?
Ouais, bah, j'essaye, hein
T'essayes de gérer, s'il te plaît
J'ai une question à deux balles
C'est clair
Allô ?
Qui c'est qui a le téléphone, les mecs ?
Ça se fait pas
Bonsoir, je voudrais avoir un renseignement, s'il vous plaît
Je voulais savoir si la gare Montparnasse était ouverte
Ah, il se renseigne
Alors, pas du tout, monsieur
Pas du tout pour ce soir
Très bien, je vous emmerde, au revoir
Alors, la deuxième question
L'heure des grèves, payez-vous...
Rigaud, une question IRC avant
Oui, il y a Turpentine qui te demande
Est-ce que c'est plus facile d'avoir la grève l'hiver ?
Bah, ça fait chier plutôt les gens
Pour mieux qu'ils se mettent en grève l'été, ça serait...
Ou sinon, ils mettent une écharpe
Non, mais en hiver, c'est plutôt chiant que de la faire en été
Donc, l'heure des grèves, payez-vous votre titre de transport
On va demander à Ping Pong
Bah non
Bah non, puisqu'on fait la grève, donc
Non, mais tu peux préciser ?
Bah non
On fait pas...
Punaise, vous allez...
Vu qu'on fait grève, on risque pas de payer le titre de transport à Bruxelles
Alors, abruti, t'emmerdes, tu dégages
C'est bon, tu dégages, ça t'apprendra
Au revoir, Ping Pong
Au revoir, Ping Pong
Non, mais attends, hey
Si on répond ce con, hein
Il était poli, ouais
Tu fais des questions à deux balles
T'as tendance à dire
C'est terminé pour lui
Attends, il a dit abruti, il aurait pu dire ça
En plus, il est en train de jouer, c'est une honte
Non, non, mais c'est bon, il peut dégager
Il peut dégager
Celui qui joue au Ping Pong, là
Il aurait pu dire enculé aussi, je veux dire
Ouais, c'est vrai
Il aurait pu dire bien d'autres choses encore
Bon, Gérard, qu'est-ce que tu fais, là ?
Non, non, mais attends, mais moi
Pour l'instant, quand ils se calmeront
On continuera le débat
Alors, la chatte en feu
Ouais
Donc, pourquoi ?
Oui, je suis d'accord
Tu peux préciser ?
Ben...
Non, mais si tu dors
Tu le dis tout de suite, tu vas...
On va te laisser dormir, hein
Gérard, je vais te choper à la sortie de la radio
T'as l'air ta gueule
On va te niquer, on va te niquer
Manu, s'il te plaît, tu me gères un peu
Pour l'instant, on accueille à la place de Ping Pong
On accueille Badminton
Ouais, non, mais attends
Manu, tu me prends d'autres personnes que les mêmes
Ben non, non, c'est pas le même
C'est Badminton, c'est pas Ping Pong
Bonsoir à tous
Bonsoir
Alors, trou du cul
Ouais, trou du cul
Bon, ben, tu disais
Ouais, non, moi, je paye jamais
Le métro, je paye jamais
Non, tu peux préciser
Tu fraudes ?
Je fraude, je suis un sale fraudeur
Je suis un enfoiré, mais je m'en fous, je paye pas
Je vais pas payer le métro, faut pas déconner
C'était que là
S'il y a du monde, ils font chier
On voit des gens comme toi
Non, c'est pas possible, le métro, franchement
Alors, je préviens que celui qui recommence
Ça va être clair, il est 2h13
Soit que vous vous calmez
Non, non, non, non, non
Soit que vous vous calmez
Que vous répondez correctement aux questions
Ou soit j'en arrête là
Et je rentre chez moi
Vous choisissez
Ok ?
Alors, on va demander à K4Pack
Ouais, c'est comme mon camarade
Déjà, je paye pas en temps normal
Tu crois pas que je vais raquer les jours
Il y a grève, en plus
Tu sais qui s'amuse à faire des conneries comme ça ?
Bah, c'est toi
Non, c'est pas moi qui s'amuse à faire des bisous, d'accord ?
Ah, ok
GG, c'est K4Pack
J'ai un plan pour toi, si tu veux
Si t'as des PV et des contraventions à faire sauter
Par les contrôleurs
Je peux t'arranger le coup, si tu veux
Non, mais j'ai pas besoin de toi, merci
Comme toi
Ah, vas-y, vas-y, c'est bon
Moi, je paye pas le bus, c'est un agresse de bus
Parce qu'il y a pas de bus, donc j'ai pas à payer
C'est tout ce que t'as à dire ?
Bah oui, il y a pas de bus, donc j'ai pas à payer un ticket de bus
J'ai des sous dans mon porte-monnaie
Manu, je sais pas ce que tu fous
Mais c'est pourri, le standard
Bon, allez, on enchaîne
Non, mais attends, il est moins pourri qu'avec toi
Attends, attends, attends
J'ai un gros problème
Ils ont tous fait grève
Je suis tout seul
Ils font grève sur Internet ?
Bien joué
Je sens le harangue, pour finir
Gérard, j'ai un problème
Ils ont tous fait grève au standard
Bon, alors moi, j'en répète
J'arrête, comment je fais ?
Gérard, t'as l'air, s'il te plaît ?
J'arrête
Il en reste un, apparemment
Ouais, mais je sais pas où il est
Non, non, mais t'as gerbé tout le monde, donc j'arrête, c'est terminé
Allô ?
Allô ?
Allô, trou du cul ?
Non, mais ils sont là, ils sont là
Allô ?
Allô ?
VOLGAIL !
Trou du cul
Allô ?
Allô, connard ?
On entend plus le connard, là
Connard ?
Gérard, il fait grève ?
Non, mais moi, là, j'arrête, là
C'est plus la peine
C'est pas la peine, là
Non, non, mais j'arrête, parce qu'il y en a l'autre
C'est pas moi, là, non, j'ai rien fait, moi
Ah, ils sont tous revenus, c'était une grève d'une minute
Alors, je sens le harang pour...
Juste une minute
Comment il y a de connectés ?
Là, on est à 4028
Quand même, hein ?
On a perdu un peu, mais c'est déjà beaucoup
Donc, je sens le harang pour toi
Eh, tu viens chez moi, après, Gérard ?
Je sens le harang
Je sens le harang
Tu réponds ?
Mais elle est conne, celle-là, elle répond jamais aux questions, putain
Non, mais tu vas voir ailleurs si j'y suis, si t'es pas content
Bah, réponds, réponds
Justement, je réponds, mais tu me laisses pas parler
Maintenant, vous fermez vos gueules, vous laissez parler, les gens
Eh, tu viens chez moi, après, Gérard ?
Moi, je t'emmerde
Alors, je sens le harang
Donc, pour la troisième fois, je réponds à ta question
Donc, non, je mets jamais de ticket
Parce que, déjà, le ticket, ça coûte énormément cher
Ça coûte 8 francs
Et moi, j'ai pas 8 francs à mettre pour un ticket
Et, de toute façon, j'aime pas les fonctionnaires
D'accord
C'est bien, parce que, moi, je...
Moi, non plus, c'est que je suis pareil
Moi, les fonctionnaires, je dirais un seul mot, mais je peux pas le dire
Ouais, je sais qu'on les emmerde
Eh ben, moi, je le dis pour toi
Bravo
Donc, moi, tous ceux qui sont fonctionnaires de la RATP
Eh ben, n'ayez crainte que vous nous faites chier
Et je sais même pas pourquoi qu'on paye un titre de transport avec vous
Parce que, là, vous nous faites chier en fin de mois
Et en début de mois, vous allez nous coller des amendes
Alors que c'est vous qui nous faites chier
Alors, ça sert à rien
Eh, Gégé, Gégé, Gérard
Gérard, je te laisse parler
Je voudrais savoir un truc
Si, si, comment, tu sens le harant, c'est ça ?
Elle paye pas dans le métro, c'est bien ça ?
Non, mais elle paye au carré
Alors, comment tu fais pour rentrer dedans ?
Elle paye pas dans les portillons
Je tape sur le nec et puis, voilà, je l'avais déjà
Non, mais comment elle fait pour rentrer dans le métro si elle paye pas le ticket ?
Bah, il monte
Non, mais, de toute manière
Tu vas pas me dire qu'elle escalade
Attendez, attendez, attendez, là
Qui c'est qui demande ça, là ?
Je sens le harant
Mon Dieu, tu peux préciser ton nom, s'il te plaît, merci
Non, mais même
De toute manière, maintenant, il y a des portillons
Tu peux essayer de...
Trou du cul
Calme, calme, calmez-vous
Tu disais, Gérard, donc, des portillons
Non, il y a des portillons
Tu peux essayer de passer
Dès qu'il y a des gens qui sortent, maintenant
Gérard, c'est badminton
J'ai pas répondu, je peux répondre
Ouais, bah, vas-y
Ouais, moi, donc, je paie pas mes billets de transport, j'en fais en papier
Hum, attends
J'ai mal compris la question, parce qu'il y en a un qui s'amuse
Je paie pas mes tickets de transport
Je prends un paquet de clapes, et puis je découpe
Et puis je passe direct
Un coup de feutre, et puis c'est bon
Gérard, si t'as des amendes, je peux te les faire sauter
Si tu me laisses te faire sauter le cul
Ouais, bah, là, tu vas te faire foutre, toi, abrouti
C'est gentil ce qu'il te dit
Si t'as des amendes, c'est pour toi, moi, je m'en fiche
C'est dans ton intérêt
Les oreilles, c'est comme le cul, ça se lave
Ouais, vous restez polis, parce que sinon
Je vais virer tout le monde et je vais en garder qu'une
De tout à l'heure
Gérard, c'est moi, Fildar, tu veux un
Un bubblegum, gros et tout mou
Non ?
Non, mais je crois que toi, la semaine prochaine, tu vas plus être là
Donc, il y a une question hier
C'est pour là
Une réponse
Peut-être des informations là-dessus
Oui, non, peut-être pas là-dessus
Mais, est-ce que quand tu pointais
A la NPE, ils étaient en grève ?
Ouais, mais ça, la question va y venir aussi
Alors, donc, je vois pas du tout
Tu peux pas répondre
On va y venir
On va y venir sur cette question-là
Donc, ça sera que la neuvième
J'en ai le temps, Manu
Il y a D-Light qui te dit que tu dois pas t'inquiéter
Si tu reçois une amende de la RATP
Parce qu'il a filé ton nom et ton adresse quand il s'est fait attraper
Mais c'est ça, c'est bien
Alors, troisième question
Avec quel...
Ça y est, celui qui s'amuse
Ça y est, celui qui s'amuse
Allo
Il y a un mec qui a une double ligne
Je m'excuse de vous déranger, pourrais-je pas ?
J'appelle des gens, là, Gérard
Donc, je vais gérer après la double ligne
Non, non, mais faut quand même gérer en même temps
Ouais, quand même que t'accouches, Manu
Alors, avec quels moyens de transport vous déplacez-vous lors des grèves ?
On va demander ça
Oh, ils suivent
Parfait, gars
Récupère ton briquet
Et leur lance plus comme ça
Toi, la semaine prochaine, c'est plus toi ici
Non, ça, c'est terminé
C'est terminé pour toi
Je suis pas un putois, hein
Ouais, bah, c'est terminé
C'est terminé pour ta gueule, je vois plus de quoi dans mes débats
C'est tout
Manu ?
Ouais, à la place de trou du cul, on accueille fromage de cul
Allo
Ça tourne autour du cul, hein, le débat, là
Beaucoup, beaucoup, bonsoir, Gérard
Bonsoir, c'est le même défi
Salut
Salut à toi
Salut, Paco
Alors, donc, la troisième question
Avec quels moyens de transport vous déplacez-vous ?
Avec mon vélo à 4 roues
Alors, on va demander à Babington
Ouais, Babington, je te prie
Hum ?
Je me déplace en patinette
Ouais, mais non, mais tu peux préciser
Euh, à 2 roues
Hum ?
Voilà
Ok
Euh, l'achat en feu ?
Avec mes rollers
D'accord, bah, c'est bien, mais...
Ouais, je pense que vous vous creusez pas trop la tête pour répondre aux questions, hein
Bon, merci pour le Larsen, là
Je pense que vous avez pas l'intention de répondre aux questions, hein, donc...
Mais si, mais si
Bah non, euh...
Mais si, je t'ai dit
Bah, mais ça y est, le Larsen, là
Alors, euh...
Fromage du cul
Ouais
Fromage de cul, je sais pas quoi, là
Oh là là, de Larsen, oh !
Oh, le...
Arrêtez de Larsen, là, c'est...
C'est pas un petit peu de sérieux, là
T'es un hélicoptère privé
Oh là là !
Bon, allez, répondez !
Oh, fromage, là !
Ouais, ouais, je me déplace à pied, moi
D'accord
J'ai pas de voiture, j'ai rien
Ok, caca de Pâques
Ouais, caca de Pâques, bah, avec des chaussures du genre, bon, sans citer de marque, hein, sans citer de marque
Des Nike, des Adidas
Des 4R
Ou des Reeboks
Euh...
Comme toi
Comme toi
Moi, j'ai une Mégane coupée, donc j'ai pas besoin de prendre les...
Les transports en commun
Ça, c'est pas bien, ça
Non, mais...
Moi, je peux...
Moi, je vais...
Je sens...
Pas de marque ?
Ouais, mais elle est un peu politique
Mégane coupée, c'est un peu...
C'est un peu merdique, comme voiture, ça
Non, non, c'est vachement bien, t'es fou
Grigo, ou non ?
Euh...
Y'a Oxide qui demande à combien on peut faire une grève
Bon, euh...
À plusieurs
À plusieurs ?
C'est combien, à plusieurs ?
Bon, à plusieurs, c'est...
C'est tous ceux qui...
Qui sont...
Vous pouvez être une vingtaine, cinquantaine, centaine, mille, voire deux mille, vingt mille ou autres
Et plus à la rigueur
Et y'a des...
Y'a des V1 qui te demandent, quand on fait grève, qui c'est qui fait le rôle du piquet ?
Bah, tout le monde
C'est tout le monde qui se met sur le devant et qui empêche les bus de sortir ou autre
C'est comme un ski, alors ?
Non, pas spécialement, non
Et y'a Ethan qui te demande si on peut faire grève tout seul
Euh...
Ça, c'est dur
Parce que si tu fais grève tout seul...
Tu y arrives, toi ?
Non
Ouais, mais regarde, la grève de la fin, c'est des gens...
Les gens, ils font grève tout seuls
Ouais, non, mais ils se mettent...
Après, ils se retrouvent à plusieurs quand même, ils se...
Ils se font une bouffe ?
Non, mais ils se rejoignent
Ils se rejoignent
Donc, voilà
Donc, je sens le harang pour conclure sur le thème de la troisième question
Oui, alors moi, je me déplace souvent avec mon cheval Tupu
Quoi ?
Je me déplace souvent avec mon cheval Tupu
Avec ton cheval qui pue ?
Tupu
Qui s'appelle Tupu
C'est quoi, c'est quoi ?
C'est une oise
C'est son nom, mon cheval, non ?
C'est le nom de ton cheval ?
C'est le nom de ton cheval ?
Bah ouais, c'est le nom de mon cheval
Non, mais attends, mais...
Mais elle est drôle ou pas, elle ?
Non, mais attends, mais c'est quoi, là ?
C'est la réponse à la question ?
Bah bien sûr que c'est la réponse à la question
Gérard, tu devrais la dégager, parce qu'elle répond pas à la question
Oh, toi, je sens qu'il va t'arriver...
Tu vas finir sans culotte, toi
On peut dépasser un cheval dans les rues de Paris
Ouais, bah toi, je crois que tu vas finir sans culotte ce soir
Ouais
Alors ça, ça m'étonnerait
Ouais, bah...
T'inquiète entre les dents
C'est ce qu'on verra
Attends, j'ai pas besoin de t'attraper pour t'avoir
Bah toi, on a pas besoin de te trouver, on sait où t'es
Alors, donc, avec quels moyens vous vous déplacez-vous pour leur dégrève ?
Bon, il y en a qui ont dit en roller, ça c'est vrai
Mais je pensais qu'on allait dire souvent en vélo
Ou même voire en covoiturage
C'est quoi ça, Gérard ?
Le covoiturage, donc, c'est des gens qui habitent pas loin
Qui sont à peu près dans la même société
Qui s'appellent le soir, comme là, en ce moment
Là, je pense qu'on peut dire que c'est un peu comme ça
On va parler, ça va en parler beaucoup, du covoiturage
Donc, ils s'appellent entre eux le soir
Et ils disent, bon, bah, tu viens me chercher à telle heure le matin
Pour m'emmener au boulot
Mais tu peux faire du co-vélonnage
Ou du co-camionnage
Ou un truc comme ça ?
Du co-vélonnage, je pense pas
Du co-camionnage, c'est à peu près comme le covoiturage
C'est à peu près pareil
Donc, pour répondre à ça
Je pense que
Le plus gros, c'est ou le vélo
Ou le covoiturage
Qui se fait
Régulièrement lors des grèves
Alors, donc, je vais vous donner quand même
Encore des chiffres pour ceux qui ont
Un petit sondage, non ?
Pour ceux qui vont se déplacer
Tout à l'heure pour aller à leur travail
Alors, en Ile-de-France, réseau banlieue
Intens sur 30 devrait circuler
Sur les lignes de Paris-Montparnasse
Paris-Saint-Lazare et Paris-Est
1 sur 4 sur Paris-Nord
Question RER
Donc, trafic
RER à trafic normal
RER en mer de crédit
C'est France Info, là ?
RER-B
1 train sur 4 sur la branche
RER-B, ça m'intéresse
Tu peux répéter, j'ai pas entendu
1 train sur 4 sur la branche
Nord, entre Gare du Nord et Roissy
Et Mitry
Interconnexion suspendue
En Gare du Nord
Il y a le Roissybus, quand même, qui passe
Attention, le mouvement de grève
Engagé hier matin sur la branche
De l'Arme
Sur la branche Gare du Nord
Mitry pourrait se poursuivre
Ce matin
Question RER-C
Pour ceux que ça intéresse toujours
1 train sur 3
RER-D
1 train sur 3
Voilà ce que je pouvais vous dire
Je crois qu'il y a Corsair
Tu peux donner les horoscopes du TGV Atlantique ?
Alors, TGV Atlantique
Pour les béliers seulement
Non, je parle pas
TGV Atlantique, je sais même pas
Je pense qu'ils en parlent pas dessus
Si, c'est en bas, vers la Corse
N'importe quoi, toi
Donc, on va récupérer
Je sens le harang
Tu viens chez moi, après, Gérard ?
Putain, lui, il commence à me gonfler
Je sens le harang
Est-ce qu'elle est toujours là ?
Salut
Re-salut
Comme toi
Re-salut
Re-salut, caca de Pâques
Ouais, salut à toi, Lascar
Fromage de...
De cul
De cul
Ouais, bonsoir
Je voudrais parler à...
À la fille qui était chatte en feu tout à l'heure
Allô ?
Chatte en feu
Oui
Allô ?
Et Babinton
Allô ?
Ouais, salut à toi, poète de l'an 2000
Allô ?
Donc, la question...
Allô ?
Putain, mais il est chiant, celui-là
Allô ?
Alors, donc, la quatrième question
Vous avez eu le temps d'y réfléchir ?
Non, non, non
Alors, pensez-vous...
Vous voulez parler à la chatte en feu, on n'a pas pu la voir
Alors, je répète la question et on se calme
Là, il est 2h32 même
Donc, pensez-vous normal que les jeunes
Ne laissent pas leur place aux personnes âgées
Ou autres, lors des grèves ?
On va demander ça
Gérard, je vais te choper à la sortie de la radio
T'as l'air ta gueule
On va te niquer, on va te niquer
On va demander à Babinton
C'est relou
Ouais, ouais, ouais
C'est de la merde
On va te marrer, on va te marrer
Ouais, ouais
Babinton
Ouais, ouais, ils ont raison, les jeunes
Mais faut les virer, les vieux crotins de mammouth
Faut les têches
Ouais
Babinton
Faut les têches, faut prendre leur place
Ouais, mais tu m'écoutes, là ?
Ouais
Il a marre des gros, ça, là
Alors ?
Ouais, ben c'est bon, je t'ai dit
Faut les virer, tous les dieux
Bon, donc, apparemment, t'as pas envie de répondre correctement à la question, toi
Ben, c'est son avis, hein
Je t'ai dit que j'étais d'accord
La chatte en feu ?
Non, elle est chaude
T'es en train d'énerver, est-ce que tu peux répéter la question ?
Oh non, non, elle va s'énerver, non
Pensez-vous normal que les jeunes ne laissent pas leur place aux personnes âgées ou autres lors des grèves ?
Ben ouais, c'est normal
C'est normal, toi ?
Ouais
Alors donc, toi, tu laisserais pas ta place à une personne âgée pour qu'elle s'assoie avec ?
Ben non
Ben non
Ben non, faut les virer
Ouais, ben d'accord
Elle paye quand même leur transport comme nous
Non, mais c'est égal, c'est égal
Non, ils ont une carte vermeille
Fromage de cul
Ouais, euh, non
En fait, moi, sérieusement, je laisse ma place aux personnes âgées, c'est normal
Ben oui, c'est normal
Parce que moi, j'aimerais que quand je sois un petit peu plus vieux, qu'on fasse la même chose pour moi
Non, mais ça, je pense que c'est tout le monde, tout le monde a envie de faire pareil que toi
Ouais, mais là, j'entends des témoignages qui me laissent pas trop
Non, non, pas du tout
Je suis désolé, je suis désolé
Mais pourquoi ?
Non, non, mais attendez
Non, non, moi, je suis pas d'accord avec ça
Que quand une jeune te laisse la place
Faut pas, faut pas t'en amuser quand même
C'est quoi, t'es pas d'accord avec ça ?
Alors, c'est la consommation à tout prix, c'est ça ?
Alors, c'est pour rendre un service, voilà ?
On a un coup de dévié qui pue le roquefort de 5 mètres
Non, mais elle pue l'eau de Cologne
Excusez-moi les auditeurs, excusez-moi les auditeurs
Ça y est, vous avez...
Ah non, mais là, je peux pas laisser à dire ça
À la rigueur, on lui pique
On les coupe ou quoi, Manu ? Tu joues à quoi, là ?
Bah, ça y est, j'ai trouvé celui qui foutait le bordel
Tu te paluches, là ?
Alors, comme toi
Oui
Donc, pour toi
Ah non, moi, je laisse jamais ma place aux vieux dans les bus
Moi, je trouve que les vieux, il faut les tuer à la naissance, donc...
Non, mais attends, je vois...
Toi, t'es vraiment dégueulasse, alors
Bah ouais, je suis pas dégueulasse
Mon avis, c'est le chien, bien sûr
Ils prennent toujours le bus quand il y a du monde dans le bus
T'as un petit peu de respect pour les vieux, quand même, merde
Mais non
On se calme, vous laissez les gens répondre, s'il vous plaît, merci
Ils ont qu'à prendre des taxis, puis ils puent la mort, quoi, c'est horrible
Non, en plus, on peut pas laisser dire ça, Gérard
Bon, je sens le harang
Ouais, non, moi, je pense que c'est pas normal
Parce qu'il y a aussi des personnes de 30 ans
En plus, aussi, qui laissent pas
Qui laissent pas leur place aux personnes âgées
Et il y a également aussi les femmes enceintes
Les femmes enceintes, tu leur laisses pas la place
Ah, si, parce que de toute manière
La personne qui est enceinte, moi, je peux te...
Oui, mais les personnes qui veulent s'asseoir
Les gens, ils se laissent pas
Pour laisser la place à une femme enceinte
Mais moi, je peux te dire une chose, que la personne âgée
Va voir carrément le machiniste
Et demande à ce qu'elle s'assoie
Et fais-moi confiance que le machiniste
Il a le droit de faire dégager une personne
Pour laisser la place
Si, si, si, si
Si, si, si, si, c'est vrai
Si, si, non, non, mais moi, je peux...
Oh, vous me laissez répondre
Donc, moi, je peux...
Il y en a qui se marrent, Manu
Non, mais je sens que...
Et ça recommence
Tony
Comme ça, Manu, putain
Je sens qu'il y a du Tony là-dedans
Ça, c'est encore lui
Donc, moi, je peux... Je réponds à...
Attends, j'ai pas répondu
Non, mais attends, si, t'as déjà répondu, toi
Non, c'est qu'à 4 packs, c'est qu'à 4 packs, j'ai répondu
J'ai pas répondu
Non, mais attends, toi, t'es en train de jacquer
Pendant que tout le monde répondait, alors
Pas du tout
Alors, tu réponds
Bah, je voulais te dire qu'effectivement
Il faut éliminer les cartes vermeilles, c'est clair
Y'a pas besoin de laisser des places
Dans les transports en commun pour les vieux croutons
Elle disait, il faut les tuer à la naissance
Moi, je dirais même, il faut les empêcher de se reproduire
Passer 80 ans
Tony, tu t'écrases
On parlait de l'odeur, c'est vrai que ça fouette
Mais y'a pas que chez les vœux
Y'a aussi des gens de 38 ans qui sentent à 5 mètres
Ouais, y'en a qui puent la mort aussi à 38
Voilà, ça sent la mort
Il peut rien si ça sent le cercueil
Tu crois qu'il sent ?
Alors, moi, je réponds
Maintenant, ça y est, vous avez assez répondu
Maintenant, c'est à moi
Donc, moi, je peux vous dire une chose
Y'a les personnes âgées
Putain, il commence à me casser les couilles, ce mec
Donc, je peux vous dire une chose
Y'a certaines personnes qui laissent pas les places
Je trouve ça dégueulasse de leur part
Et pour les femmes enceintes
Ils vont s'adresser au machiniste
Le machiniste lui demande à se convaincre
On lui laisse la place
Et y'a d'autres personnes qui ont le droit
Tout comme toutes les personnes âgées de s'asseoir
Et les femmes enceintes, c'est les aveugles
Bon, écrase-toi
Rigaud, une question
Oui, y'a Davy One
Qui te demande combien ça coûte
Une grève en euros
Et est-ce qu'il y a des réductions pour les cartes vermeilles
Et les militaires ?
Non, y'a aucune réduction pour tout ça
Et combien ça coûte alors ?
Je n'en sais rien
On est pas encore au moment de l'euro
Alors, les gens
Lors des grèves
Il y avait un petit Larsen
J'ai Manu
Non, non, non
Ouais, ouais, Pildar, fais le malin
Fais le malin
Fais bien le malin, toi
Lors des grèves
T'es un pauvre type
Ça vient d'où ?
Moi, ça le fait pas
Si ça le fait, regarde
Mais qu'est-ce que c'est que tu fais ?
Mais c'est quoi ce bordel ?
Qu'est-ce que tu fais ?
Non, mais Pildar
Pildar, quand t'auras fini, tu vois ?
Non, non, non, non, non
Il ouvre la boîte, ça marche
Connard, dès qu'il arrive, tu l'arrêtes
Alors, fais pas chier ton monde, toi
J'ai rien fait, moi
Pauvre con, va
Là ?
Non, mais là, c'est bon
Mais non, c'est Pildar qui s'amuse, alors
T'inquiète pas, il s'amuse
Il s'amuse depuis tout à l'heure
Non, là, j'ai plus rien
Non, non, il s'amuse, là
Il s'amuse
Ah, c'est ça
Ouais, ouais
Péga, parce que tout à l'heure, je vais t'éclater, toi
Tu m'énerves
Dans les deux débats, c'était le bordel
Ouais
Non, mais on peut remercier Pildar
L'audience
Et lui, là, au standard, t'as mis le bordel, toi
Attends, je suis en train
Et lui, c'est Manu
Je peux pas me concentrer avec tous tes pauvres sons, là
Non, ouais, c'est lui qui s'amuse aussi
Tu mets ça sur le doigt à Manu, tu vois, mon cul
Ouais, ouais
Tu vas te choper à la sortie de la radio, t'as l'air ta gueule
On va te niquer, on va te niquer
Bon, ces bandes de petits cons, là, je les emmerde
Alors, lors des grèves, tripotez-vous, les gens
Les jeunes femmes ou des siens
C'est n'importe quoi, le standard, ce soir
Je suis dégoûté
Non, mais moi, je suis plus dégoûté parce que c'est toi qui fous le plus ta merde
Non
Nuance
Alors, lors des grèves, tripotez-vous, les jeunes femmes ou des siens
Quand il y a les trains qui sont complets
On va demander à Babington
Eh, tu viens chez moi, après, Gérard ?
Babington
Ouais, ouais, ouais
Ouais, ouais, moi, je pense que ouais
Tu peux préciser ?
Parce que c'est toujours le mercredi, c'est comme ça
C'est toujours comme ça
Donc, c'est tout, c'est toute la précision
Voilà, voilà, mais c'est toujours complet, comme ça
D'accord, lâche ça, t'en veux
Oh, je te baisse
Lâche ça, t'en veux, s'il te plaît
Je ne réponds pas à cette question
Alors, dans ce cas-là, tu réponds pas à cette question
C'est terminé pour toi, le débat
Au revoir
Au revoir pour elle
Alors, fromage de cul
Ouais, moi, je fais
Qu'un intérêt de
De faire des grèves si on peut pas tripoter
Des nanas, je veux dire
C'est normal, c'est tout à fait
Je suis sûr que toi, petit vicieux, tu l'as fait aussi quand t'étais jeune
Non, ça m'est arrivé, ouais
Oh, raconte !
Allez, raconte
Les premières expériences sexuelles dans le RER
Qu'est-ce qu'elle raconte ?
Vas-y, raconte avant
Non, si je laisse parler, toi, tu t'écrases
Les auditeurs voulaient qu'ils racontent
Bien sûr, bien sûr
Pour l'instant, je demande aux auditeurs
Leur truc
Qu'est-ce qu'elle raconte ?
Ouais, raconte quand tu mettais des oeufs dans le cul au chien, vas-y
Qu'est-ce qu'elle raconte ?
Ouais, bah, je vais te dire que moi, ça m'est déjà arrivé
Je vais te raconter une petite anecdote
L'autre fois, c'était genre dans l'ouest parisien
Et j'ai touché une espèce de grosse vache
Avec des tresses qui sentaient pas très bon
Alors, caca de Pâques, c'est même plus la peine
Caca de Pâques, c'est plus la peine
Terminé !
Attends, j'ai le droit de toucher des grosses qui sentent mauvais
Je me suis tapé des mycoses, des champignons sur les doigts
C'est pas ma faute, mais j'ai le droit
Non, non, mais c'est terminé pour toi, tu peux...
C'est terminé, ça t'apprendra
Comme toi...
T'as pas le monopole des grosses, je te signale
T'as pas le monopole des grosses
Comme toi...
Ouais, moi, je touche pas les femmes ni les chiens
Ça me dégoûte un peu, mais bon, je touche d'autres trucs
D'accord
Ça te dirait de me tripoter
C'est bien, parce que fromage de cul, c'était Tony
Et Tony, il fait les deux débats
N'importe quoi, c'est pas grave, c'est pas grave, enchaîne
Donc, comme toi, c'était ta réponse ?
Oui, c'était ma réponse
Ok
Je sens le harangue, ou à moins qu'il y ait une question IRC
Non, on voulait juste dire que même s'il n'y a pas de grève, on peut tripoter les filles dans le train, et pas que dans le train
Bah ouais
Ok, donc, je sens le harangue
Je viens droguer
Je me drogue à la frite
Je ne peux pas me passer de frites, c'est plus fort que moi, ça me rend fou
Je ne pense qu'à ça, manger des frites
Non, mais tu crois que c'est Manu, alors que c'est toi qui viens d'allumer le truc
Pff, n'importe quoi, ça c'est pour régler le son du CDR
Mais oui, le CDR, on me fout de con, on va
Je te disais que je tripote les fesses des hommes, parce que c'est ce que je regarde en premier chez un mec
Et après...
T'as vraiment des goûts de merde ?
Non, mais il s'amuse
Attends, je sens le harangue, parce que là, Max, il vient d'arriver
Donc, c'était pour préciser que ce n'était pas pour régler le CDR qui s'amusait
C'est qu'il est en train de s'amuser à mettre une connerie là-haut
Salut Max
Donc, je sens le harangue
Tu viens chez moi après, Gérard ?
Je sens le harangue
Non, mais je te réponds, là
Donc, je te disais que je tripote souvent les fesses des hommes
Ah, vas-y, j'en dis, vas-y encore
Dans le tramway ou dans le métro
Et donc, je regarde ce que je regarde en premier
Vous laissez parler les gens ou quoi ?
Donc, voilà, je t'ai répondu
D'accord
Si t'as pas entendu, sens le harangue
J'ai compris quand même ce que tu m'avais dit
Alors, pendant les grèves SNCF ou autres, les trimpes ont-ils l'amour ?
On va demander à Babinton
Chérin
Babinton
Oui, tu peux répéter la question, s'il te plaît ?
J'ai pas bien entendu avec le bruit
Alors, pendant les grèves SNCF ou autres, les trimpes ont-ils l'amour ?
Euh, ouais, je pense que c'est possible
Comment on peut répondre ?
C'est possible techniquement
Techniquement
Par contre, je pense que ça arrive que sur certaines voies ferrées
Pas partout en France
D'accord
Que dans les grandes gares
Tony ?
Quand je suis contre tes pieds
Les trains, ils ont pas d'appareil génital
Non, mais, généto
Merci Tony pour...
Généto, si tu veux
C'est des bateaux, généto
Parce que c'est transitif, c'est ça ?
Non, c'est transpirif
Ah, ok
Donc, alors
Gérard ?
Oui, Manu ?
Donc, on accueille
Je t'écoute à la place de Caca de Pâques
Oui, allô ?
Et on accueille Slogan à la place de
J'ai la chatte en feu
Les routiers, c'est tous des enfoirés
La CGT au pouvoir
Enfoiré
C'est Slogan, ça, c'est Slogan
Il est dans le débat de la grève, grave
Non, non, non, mais je crois que tu lui dis qu'il se calme
Non, mais il va t'écouter, y'a pas de soucis
Donc, Tony ?
Ouais, ça y est, j'ai répondu, j'ai répondu, ils ont pas d'appareil génital
Ok, alors, je t'écoute ?
Ouais, je t'écoute
Vas-y, je t'écoute, GG
Non, mais tu réponds à la question
Bah, écoute, des trains qui coculent, non, pas des masses
Mais il y a quand même
Eh, eh, eh, on me laisse parler
Il y a quand même un maximum de gens
Qui sont enculés dans les chiottes de la loi
Je t'écoute
Alors, je t'écoute, tu vois
On t'a très bien entendu
Maintenant, tu dégages, au revoir
Moi, j'ai une aventure
Voilà, c'est très bien
Alors, comme toi
Bah non, les trains peuvent pas faire l'amour
Par contre, ça baisse le sexe dans les trains
Quand il y a grève
Ouais, bah ça, ça revient presque à la
Sur quelle ligne ?
Bah, ça revient presque à la cinquième
Tu viens chez moi, c'est ça, Gérard ?
Ça revient presque à la cinquième question
Ce que tu veux dire
C'est quoi la cinquième ?
Bah, la cinquième, c'était lors des grèves
Tripotez-vous les jambes en arté
Il y a une différence entre tripoter et faire l'amour
D'accord
Tu fais l'amour sur quelle ligne, toi ?
Slogan, toi, tu veux répondre, là ?
RRB
Slogan, tu réponds à la question ou pas ?
Bah, j'ai vu que j'étais au standard
J'ai pas tout entendu
Alors, pendant les grèves
SNCF ou autre, les trains font-ils l'amour ?
Ouais, Gérard, tu peux répéter la première question du débat ?
Je voulais répondre
Attends, tu me laisses parler, s'il te plaît
Les trains font-ils l'amour ?
Tu me prends pour un con ou quoi ?
Non, je t'y prends pas
Stylès
Ouais, mais c'est pas moi qui l'ai dit, alors
Pauvre chave
C'est pas moi qui l'ai dit, slogan
C'est vraiment un bacard, hein
Abrouti, va
Espèce de doigt en douille, va
Tu travailles, hein ?
Non
Alors, c'était un...
Il y a un autre Gérard, il y a un autre Gérard
Ouais, il y a un autre Gérard à l'antenne, là
Slogan !
Ouais, bah, je viens de répondre
Ok, alors, je sens le marrant
Alors, effectivement, je pense que les trains ont une vie sexuelle plus épanouie
Oh, la folle
Parce qu'ils peuvent faire ça à une vitesse plus rapide
Non, non, c'est toi, Fildor
Ils vont plus vite, quoi, si tu veux
N'importe quoi
Ils peuvent avoir une vie sexuelle plus épanouie
Vu qu'ils vont plus vite
J'aimerais te dire je t'aime à la loco
J'aimerais te dire je t'aime quand je fais un travlo
Celui qui s'amuse à dire ça va se calmer
T'as compris ce que je t'ai dit, Gérard ?
Ouais, ouais, j'ai entendu
Donc, y'a pas de problème
Ok, alors, sixième, septième question
Pourquoi faire grève lorsqu'on est bien payé ?
Gérard ?
Oui
Juste avant que tout le monde réponde
Donc, on accueille
J'ai des poux
Sous les bras, j'ai des poux
Pardon, excuse-moi, c'est un peu compliqué
Oui, allô, bonsoir
Et on accueille, donc, Couscous
À la place de Badminton
Salut
Couscous
Couscous
Couscous
Couscous
Couscous
Allô, couscous
Couscous
Allô, vrai bonnet
Je passe le bonjour à Abdel Wahed
Salut
Tu m'éteins ça, toi ?
Tu m'éteins ça, là-bas ?
Couscous, c'est une dédicace, hein, ce soir
Alors, donc, euh...
Bon, vous fermez votre gueule un peu, maintenant
On salue, on salue
Sous les bras, j'ai des poux
Bonsoir à toi
Oui, bonsoir
Eh, Couscous, bonsoir à toi
Bonsoir, tout le monde
Eh bien, bien revenu dans les débats du jeudi, toi
Bonsoir à tous les bouddhistes
Alors, donc, pourquoi faire...
Bon, maintenant, vous allez vous calmer
Parce qu'il est 2h45
Et je voudrais terminer le débat correctement
On peut se...
Allô ?
Allô ?
Ne quittez pas, ne quittez pas
Allô, bébé ?
Oui, ça va, tranquille
Ça va, ça va
On peut savoir le nombre de personnes qu'il y a sur internet
Puis le darpega, parce que tout à l'heure, ça va mal se finir pour toi
Sur...
Alors, allô ?
Oui, on t'écoute
Allô ?
Allô ?
Allô ?
Ok, non, c'était pour...
FILDAR !
Oui, Fede, bonsoir, c'est au standard
Oui, Fede, bonsoir, c'est au standard
Euh, s'arrêtez de bouger
Bon, Fildar, tu dégages
Non, non, mais là, ça commence à bien faire, lui
Oui, Fede, bonsoir, c'est au standard, tu veux parler de quoi ?
Ouais, salut
Fede, c'est à l'antenne, c'est pour...
Bon, ça y est, c'est Manu, là, t'as vu ?
Gérard, on est 4131
FILDAR, TU LÊTES PAS LES RIGAUX, QUOI ?
Fais ce con !
4131
Bon, moi, j'arrête le débat
On est 4131
Arrête
Non, mais là, c'est pas Manu
C'est Fildar qui déconne
Bon, c'est Fildar, t'arrêtes maintenant
D'accord, j'arrête
Qu'est-ce qu'il se passe ?
Donc, on est...
Ça va ou pas ?
Non, mais qu'est-ce que c'est que ce bordel, là ?
Non, mais je crois qu'il y a un problème
Non, il n'a rien allumé
Fildar, ça commence à bien faire
Il n'a rien allumé !
Regarde !
Il n'y a pas de problème
Non, mais il s'amuse, là-bas
Non, mais c'est pas grave
Manu, c'est la dernière semaine que tu peux les débattre, toi
Ça, la semaine prochaine, c'est terminé pour toi
On verra
Non, non, il n'y a plus de... On verra maintenant, c'est fini
Deux semaines qui me foutent la merde, c'est pas la peine
Donc, on est 4000...
4000...
4000...
Arrêtez, derrière...
C'est quoi ce bruit qu'on entend ?
Je ne sais pas, je...
C'est dingue
Bon, on est 4321, c'est en train de remonter un petit peu
Mais on n'atteindra pas...
Je vais m'accrocher, Gérard
On n'atteindra pas les 3000 ce soir
Non, les 5000
Les 5000 ce soir, excuse-moi, je suis fatigué
Alors, septième question
Je vais m'accrocher, Gérard
Pourquoi faire grève lorsqu'on est bien payé ?
On va demander à Couscous
Moi, je ne sais pas
Je ne vois pas le problème dans la...
Est-ce que tu fais des grèves, toi, Couscous, des fois ?
Oui, ça m'arrive
Tu fais des grèves de la faim, non ?
Oui, j'ai déjà fait le ramadan
J'ai déjà fait le ramadan
Mais je me suis déjà fait aussi des grèves des poumons
Des grèves du cœur, des grèves du foie
D'accord
Sous les bras, j'ai des poux
Je suis en point
Tu réponds ?
Mais tu es en point, Gérard
Tu réponds ou tu ne réponds pas ?
Tu réponds, c'est bien
Si tu ne réponds pas, attends
Manu, tu le prends...
Tu réponds ou tu réponds fort ?
Manu, tu le récupères
On va passer à Slogan
La question, j'attends un peu trop
On va s'écouter un petit morceau
Vos gueules !
Moi, je ne réponds pas aux questions
Je ne réponds pas à la question dans ces conditions
Il faudrait que tu mènes un peu mieux ton débat
Alors, Slogan
Répète-la, répète-la
Répète la question
N'échouiez pas !
Pauvre con, va
Arrête tes conneries, tu veux ?
Arrête tes conneries depuis tout à l'heure
Arrête !
Arrête !
Ce que tu m'énerves !
De poisson !
Lorsque Slogan !
Ouais !
Il y a de l'écho dans la maison
C'est Notre-Dame de Paris, là
Arrête !
Arrête, Gérard !
Gérard, arrête !
Arrête, arrête, arrête !
Bonne heure, Gérard !
Bonsoir à tous les égorgeurs de France !
Bon, allez, hop, terminé
Ce n'est même plus la peine de continuer le débat
J'arrête, hop, terminé
Fildar, tu dégages, c'est fini pour toi
Moi, j'arrête, je continue pour le débat
Bonsoir à tous, vous faites les conclusions
Couscous pour la conclusion du débat
Non, ils sont tous là, Gérard
Non, non, non, tu dégages
Je ne vois pas le savoir
Ces conclusions, c'est tout
Tu as bien foutu ta mère lors des deux débats
Mais non !
Tu as foutu ta mère pour lors des deux débats
Le report a été battu partout
On fait ça pour Internet, alors
Fais-le pour Internet
Il y a encore plus de 4000 personnes
On peut peut-être continuer pour eux
Toi, tu...
Tu vires
Non, mais je ne fais plus rien
Tu vires, tu vires, c'est des roms
Je ne bouge plus
Alors, Slogan, si tu veux répondre correctement à la question
Ben oui, mais il y avait tellement de brouhaha que je n'ai pas entendu
Alors, il faudrait que tu répètes
Ce n'est pas possible
Tu peux répéter, s'il te plaît ?
Pourquoi faire grève lorsqu'on est bien payé ?
Alors là, c'est une question bien difficile
C'est une bonne question, ça
C'est une bonne question
Je ne sais pas ce qui t'arrive en ce moment
Gérard, sur l'IRC, on me demande que tu répètes cette question, justement
Alors, pourquoi faire grève lorsqu'on est bien payé ?
Gérard, au standard, on me demande aussi que tu la répètes encore une fois
Non, non, mais ils me font chier, au standard
Ben ouais, mais bon
Gérard, sur Minitel, moi, ils me demandent que tu fermes ta gueule
Non, ben toi, tu vas fermer ta grande gueule de con
C'est Minitel
C'est Minitel
C'est Minitel
Oh là là
Eh Gérard, tu penses aussi quand tu fais caca ?
Voilà, pour le Minitel, il ne fonctionnera plus
Ah, bien joué
Alors, slogan, si tu veux répondre correctement à la question, maintenant
Ben, je la trouve tellement compliquée
Ben, non, je pense que ce n'est pas utile de faire grève quand on est bien payé
D'accord
Donc, Tony
Ouais, non, en fait, ce n'est pas les riches qui font grève
C'est les pauvres comme nous
Ben ouais, mais...
Non, mais Tony
Oui
Est-ce que...
Pourquoi faire grève lorsqu'on est bien payé ?
Non, mais tu ne comprends pas que c'est les pauvres, les pauvres qui font grève
Ce n'est pas les riches
Les riches, ils n'ont pas besoin de faire grève puisqu'ils ont déjà tout ce qu'il faut
Mais n'essaye pas de l'inscrire
Ils font des émissions sur M6, ils ont la radio et tout ça
Tony, tu évites de dire des noms
Eh Gérard, tu penses aussi quand tu fais caca ?
On est pauvres, on est pauvres, on est pauvres
Donc, la semaine prochaine, pas de Tony
Alors, comme toi
Ouais
De toute manière, c'est la fin du débat, il est 2h51, j'arrête un peu
Mais Gérard, mais t'es où ?
Comme toi
Ouais
Bah non, c'est pas utile, moi je suis le même avis que Tony
D'accord, et je sens le harangue pour finir
Alors, quoi te dire ?
Je pense que c'est pour emmerder les gens
Tu ne crois pas ?
Elle est con
Non, mais ce n'est pas la question, ça
Ça n'a rien à voir avec la question
Elle n'a rien dans la tête
Viens là, viens là, viens là, la cinglée
Elle est con
Allez hop
Alors, je vous préviens
Elle est priso
Elle est moins con que vous parce qu'elle sait répondre aux questions que vous, vous ne savez pas répondre
Alors, moi, pour vous dire
Oh, vous fermez vos jeunes maintenant
Merci
Alors, moi, pour vous répondre, je ne sais pas
Pourquoi ça sert de faire grève lorsqu'on est bien payé
Vu qu'il y en a qui se touchent des briques par mois
Combien ?
Des millions par mois, je me demande pourquoi ils font grève
Ça ne sert strictement à rien
Tu peux toujours réclamer 200 balles de titres qui restent en plus
Et alors ?
Ça dépense
Mais ouais, c'est pas possible
Conclusion
Je sens le harangue et que tu suces la bite, ça y est
Non, non, non, mais il ne faut pas déconner
J'ai un problème au standard
Donc, c'est terminé
C'est rien terminé du tout, tu continues
Allez, je ne sais pas, fais pas la pute
Il y a un problème au standard
C'est un problème d'insert, quand même
Si quelqu'un m'entend dans le CD-ROM
Allô, je suis perdu, là
C'est mieux, déjà
Conclusion
Gérard, avant de finir, quand même, il y a Davy1 qui te pose une question
Est-ce qu'il y a des universités où on apprend à faire grève ?
Arrête, Gérard, il ne sait pas ce que c'est, une université
Ça a merdé encore
Personnellement, non, je ne pense pas
De toute manière, même les lycéens font grève
Mais comment on sait comment il faut faire la grève, alors ?
Ça, c'est eux qui savent
S'ils sont mal payés, ils font grève
Non, non, mais ce n'est pas que ça
Je vais t'expliquer, par exemple, tu es étudiant, tu n'as jamais fait de grève
Il y a quelqu'un qui dit, bon, on va faire la grève
Si tu ne sais pas comment on fait, qu'est-ce que tu fais ?
Tu l'essuies, c'est tout
Tu l'essuies, tu fais quoi ? Tu l'essuies comme un mouton ?
Tu rentres dans le truc, et puis c'est tout
Tu l'essuies avec un chiffon, non ?
Mais non, tu fais comme ils font, et c'est tout
Donc, conclusion du débat, on va demander à Couscous
C'est bâclé, ton débat
Tu n'avais qu'à moi faire le compte, ça ne serait peut-être pas arrivé
Ça n'a rien à voir
Je les coupe, ils rigolent
Couscous
Continue, continue, Gérard
Non, non, c'est terminé
C'est terminé
Allez, une question
Continue ton débat
Combien coûte une grève en général ?
Bon, laisse tomber, on conclut
Bon, alors, conclusion, Tony, conclusion
Allez, hop
Merci, Tony
C'était bien, bravo
C'était bien marré
C'était bien, bravo
C'est un peu trop le bordel, quand même
Et qui est-ce qui paye ? C'est les auditeurs
Donc, j'aimerais que la prochaine fois, on fasse ça mieux que ça
Voilà, comme d'habitude
Et puis, c'est tout
Ok
C'est qui ?
C'est Goldo
Qu'est-ce qu'il vient faire ?
Non, je te jure
Slogan
Slogan
Sérieusement, pour une fois
Plus t'avances dans le temps, plus c'est de la merde ce que tu fais
Et faudra que tu...
C'est faux
C'est faux
C'est faux
C'est faux
Franchement, on te prendra pas
Toi, tu resteras chez toi
Alors, sous les bras, j'ai des poux
Non, mais j'ai pas fini
Non, non, mais ça y est
Si, t'as fini
Sous les bras, j'ai des poux
Ouais, bah, donc, je continue avec ma soucoupe volante
Je voulais dire que tu mets tout sur le dos de Fildar
Mais faudrait quand même un petit peu que tu te calmes, quand même
Non, mais attends, qui c'est qui a foutu sa merde au premier débat ?
T'as quand même déjà la grosse qui n'aide pas du tout le débat, quand même
Non, Manu n'est pas grosse
Non, mais je parle pas de Manu
Elle apporte pas des réponses très constructives
Et déjà, tes questions ne volent pas très haut
Après, si tu mets ça sur le dos de Fildar, ça le fait pas
Mais attends, les questions de la grève
Fildar, il travaille, regarde-le, il travaille, il s'acharne et tout
Et toi, tu le tapes
Les questions de la grève, on les a revues et corrigées avec Rigaud et Manu
Donc, je vois pas du tout pourquoi c'est de la merde
Et c'est pas une raison pour faire du kickboxing avec Fildar
C'est terminé
Ok, couscous
Ouais, bah, le débat, il aurait été plus intéressant
Si t'avais pas trop gueulé sur tes standardistes
Non, mais j'ai pas gueulé sur mes standardistes
Manu, il a bien fait son boulot au deuxième débat
Rigaud, il bosse toujours bien sur l'IRC
Donc, je vois pas, au deuxième débat, je vois pas sur qui j'allais gueuler
À part Fildar qui s'amusait à passer des doubles sons
Ça, c'est tout
T'es d'accord, couscous ?
Y'a pas de problème
Bon, Gérard
Y'a quand même quelques conclusions sur l'IRC
On va pas lire les 4000, quand même
Alors, y'a Turpentine qui dit que ton débat avait ni queue ni tête comme toi
Comme d'habitude
Y'a, je sais plus qui, qui disait qu'ils ont apprécié la grève de ton cerveau
Qu'est-ce qu'il se passe ?
Euh, voilà, donc, ça sert à rien de faire la grève
Mieux vaut tenter sa chance au Big Bill si on veut plus d'argent
Ouais
Si c'est pour insulter ses assistants et passer son temps à gueuler en bâclant les débats
GG devrait faire grève
C'est vrai, ça ferait du bien que tu nous fasses une grève de débat
C'est ce qui pourrait peut-être se produire
Ouais
Ok
Et je voulais juste finir pour dire que le 13 décembre
Y'a une grève planétaire des internautes contre France Télécom
Ouais
J'en reparlerai dans la semaine
Ouais, ouais, c'est 9h
Comme toi
Ouais
Donc pour toi, conclusion
Déjà, je vous fais tous des gros bisous
Et puis, je voulais dire que tu pues la moule
Faudrait mieux qu'elle reste chez elle
Parce qu'elle a déjà les questions à l'avance
Elle répond n'importe quoi
Elle sait pas du tout avancer le débat
Ça commence vraiment à puer la moule
Tu pues la moule, reste chez toi
Ben, c'est simple parce que j'ai pas de personne
Mais si, c'est le poisson là
C'est le thon
C'est le thon
Le harangue pourri
C'est le thon
Ah non, le harangue, pardon
Gérard
C'est qui ?
C'est Pierre Fulain
Non, mais c'est bien
C'est de la merde, peut-être
Je sens le harangue pour conclure
Je sens le harangue
Allô, je sens le harangue
Elle est là
Allô
Pas elle là, pas elle là, son piquet
Si, il est là, son piquet
Pas elle là, pas elle là, son piquet
Oui, il est là
Hein ?
Ouais
Tu as pas entendu ce que j'ai dit ?
Non
Non
Gérard, je t'attends à la sortie de la radio
Donc, je te répète, c'est comme t'as pas entendu
Ouais
Donc, j'ai un truc au départ
Gérard, je t'attends à la sortie de la radio
Bon, celui qui s'amuse à dire des conneries, vous laissez parler des gens, merci
Gérard, je t'attends à la sortie de la radio
Donc, ouais, je t'écoute
Et j'écoute pas trop souvent quand même
D'accord
Bon, bah, c'est pas grave, j'ai vaguement entendu ce que tu me disais parce que c'est coupé à moitié
Fildar, tu recommences ?
Non, non, mais tu recommences, c'est bien, mais ça c'est terminé pour toi
Est-ce que tu fais des bêtises, celui-là ?
Alors, on va s'écouter, pour moi, la conclusion, c'était de la merde
Le débat, c'était comme le premier, j'ai pas pensé que ça allait se terminer comme ça, c'est grâce à Fildar quand même
Parce que celui qui a foutu sa merde, on termine avec combien de personnes sur l'IRC quand même, Rigo ?
Allô, Gérard ?
Non, mais...
Allô, Gérard ?
Manu, là, fait quelque chose
Allô, Gérard ?
Non, mais je peux pas parler si...
Donc c'est bon
Alors, on a fini à 4563 personnes, ce qui est vraiment excellent
C'est pas mal
Franchement, Gérard, y'a aucune radio qui va faire un...
Non, mais je pense que d'ici...
On aurait pu faire mieux s'il y avait moins eu de bordel avec Fildar
Oh non !
Tu te rends compte, Gérard, qu'il fait de la merde et t'as 4000...
Non, non, mais c'est toi qui a foutu ta merde, t'as foutu ta merde sur les deux débats
Allô, Gérard ?
Y'en a que deux qui ont bien bossé, c'est Manu et Rigo, c'est tout
Y'a que eux qui bossent bien lors des deux débats
Alors, on va s'écouter...
Ah, c'est clair, y'a même pas toi, toi tu bosses pas non plus bien
Allô, Gérard ?
Pour terminer, 256, on va laisser Rousseau pour la nuit sans pub
Allô, Gérard ?
Demain matin, 6h, vous allez retrouver Bart
Allô, Gérard ?
Et demain soir, 22h, vous allez retrouver le Star System
Et surtout, y'a des places à la loco et...
Y'a Jean-Denis Berre demain, c'est...
Jean-Denis Berre, pour en offrir, là ?
On peut en offrir
Eh ben, pour demain soir, ceux qui veulent venir à la loco avec le DJ Regueuillat, je serai là
Et puis, y'aura également DJ Sinclair, c'est maintenant qu'ils appellent au standard
On va prendre les 3, 4, 5, 6 premiers
Avec la personne de leur choix, ils viennent gratos
Grâce à Gégé, quand même
Et donc, samedi, t'es où, tu peux préciser ?
Samedi à Vannes, on est à...
Malverne
Malverne
Voilà, donc, je vous souhaite une bonne nuit
Je vous retrouve la semaine prochaine
Et on s'écoute les poules du Cirque Pain d'Air
Avec du saucisson
Bonne nuit à tous et à la semaine prochaine
== Le débat sur les jeux télé ==
=== Le contexte ===
=== Les personnages ===
=== Transcription ===
Nous avons une parodie de Gérard, sympathique paraît-il, bonsoir faux Gérard. Allo ? Oh putain, tu es réveillé, c'est grave. Il est dans une cabine, ça va Gérard ? Bonsoir à tous, donc bon ben, petite parodie des débats je crois. D'accord, ben le vrai Gérard t'écoute, on y va. Donc balance le jingle et c'est bon. Ah faut que je mette le jingle, pardon, alors excuse-moi, vous l'avez calé, attention on y va, prêt, 3, 2, 1, top.
Et voilà, donc bonsoir à tous et bonjour, c'est les débats de Gérard, donc on va saluer Rigaud à l'internet www.funradio.fr. Oui, bonsoir, big big up. Ok, donc Manu au standard 0870 5000. Ouais, en gros, salut. Et Fildar à la pro.
Ok, donc on va accueillir Couille de loup. Bonsoir Gérard. Couille de loup, bonsoir. Bonsoir Gérard. Bonsoir. Bouledogue mystère. Oui, bonsoir Gérard, t'aurais pu m'imiter aussi, je suis quand même une star, merde. Ouais, salut. Donc le débat, je pense, va porter sur la poésie. Donc première question, que pensez-vous de la poésie, si oui, pourquoi ? Donc on va demander à Bouledogue mystère.
C'est bien tu Gérard. La poésie. Non mais tu travailles. Est-ce que tu peux me répéter la question ? Non mais tu te fous de ma gueule, alors bonne nuit, dégage. Hop, tu me gères ça, d'accord ? Ouais, Gérard, c'est Manu. En gros, à la place de Bouledogue mystère, on accueille Saucisson à l'ail. Ok, donc Saucisson à l'ail, bonsoir. Bonsoir. Allo. Bonsoir. Saucisson à l'ail une fois, Saucisson à l'ail deux fois. Je suis là, je suis là. Bon, alors t'as écouté la question ? Ouais.
Donc pour toi ? Ouais, bah moi j'aime bien la poésie, je trouve que ça ouvre l'intellect sur... Non mais attends, Saucisson à l'ail, on va pas aller voir l'intellect ou autre, hein. On va pas chercher Midi à 14h, d'accord ? Que penses-tu de la poésie ? Bah en fait, j'aime bien. Donc couche de loup pour toi ? Ouais, bah moi j'aime pas ça. Je trouve que ça sert à rien, on nous fait chier à l'école, là, toujours, apprendre des poésies, on s'en fout.
Mais bon, c'est bien parce que t'apprends à lire quand même. Non mais attends. Quoi ? Attends, à l'école, déjà d'une. Quoi ? Déjà, à l'école, la poésie, ça m'étonnerait qu'on en apprenne, je suis désolé. Ah bon ? Non mais attends, moi je veux te dire une chose que... T'es à quelle école, toi ? Non mais attends, déjà, moi je veux te dire une chose que l'école, bon bah, je sais pas que j'ai pas été, mais j'ai pas trop pratiqué de ce métier. Mais je veux te dire une chose, tu vois, ça m'étonnerait, hein. Donc... Tu changes d'école, hein. Ah ok. Donc moi, en ce qui me concerne,
c'est dommage parce que, bon bah, moi, la poésie, c'est un truc que j'aime bien. C'est pas un truc qui me déteste. Donc, moi, je veux te dire une chose que, d'ailleurs, ce chisson-là, il pourra confirmer. Ouais, tout à fait. Tout à fait. Déjà, ce soir, toi, je vais te bouffer ta petite chatte. Je veux te dire une chose que, tu vois, la poésie, c'est un truc que, moi, pour faire craquer les filles, c'est ok, quoi. Voilà, donc, bon bah, on va... On s'écoute un petit disque ou pas, là ? On fait quoi ? Non, conclusion, d'accord. Donc, conclusion,
c'est pas mal. C'est dommage que, bon, les auditeurs, c'est un peu des habituels, j'ai l'impression. C'est Tony, on t'a reconnu. Donc, tu pourras pas dire que c'est le contraire. Et toi, ce chisson-là, je t'attends, je sais pas. Dans mon lit, on va faire la fête. Rigaud, sans indiscrétion, on a combien de monde, là, sur Internet ? Oui, énormément de monde sur Internet. On est deux. Il y a moi et un mec de France Télécom à qui, d'ailleurs, je fais une petite casse-déli. Ok. Donc,
là, je crois que le record mondial d'Internet est pas prêt d'être battu, parce que, là, c'est bizarre. La semaine dernière, on avait atteint les plus de 3000. Et maintenant, on est que deux. Donc, là, je crois qu'on touche le fond du rouleau. Donc, bon, bah, on va s'écouter un petit disque, quand même. On va s'écouter des annus sans feu avec Bouffe-moi la chatte le week-end, mais pas la semaine, je travaille. Voilà, donc, dans un instant, vous allez retrouver Blondo pour les nuits sans pub. Et bonne nuit à tous. Bravo, t'es bien assuré. Excellent. Bravo.
Il faut l'embaucher, il faut l'embaucher. Ah, là, franchement... Big up, big up. Ah, ouais, big up à toi, parce que, franchement, bravo. Bravo. Dommage, tu peux me refaire un petit coup de fil d'art ? C'est dommage qu'on n'ait pas entendu assez fil d'art. C'est hallucinant, c'est hallucinant. C'est hallucinant, hein, Tony ? On connaît bien la voie du fil d'art. Putain. Tony, entre Tony, Manu et fil d'art, et Rigo, putain, mais c'est hallucinant.
qui n'a pas trop apprécié qu'on se foute de sa gueule, il s'est vexé. Alors que je lui ai expliqué que c'est un peu comme les guignols, c'est la consécration que quand on est une star, on est imité. Gérard fait une parodie. Gérard est en train de fumer sa cigarette dans le couloir, il n'est pas content, il fait la gueule. C'est dommage, mais en tout cas, vraiment félicitations. Il n'y a rien à dire, c'est du top top de chez Top Top. Quand tu as l'occasion de nous en refaire d'autres, n'hésite pas. J'avais prévu de faire ça toutes les semaines, mais je ne sais pas si... Ah si ? Je ne sais pas. Avec grand plaisir. Avec grand plaisir.
Merci encore. N'hésite pas quand de temps en temps, Pierre Fula, tu peux également nous faire des petites engueulades entre Gérard et Fildar. Si tu avais à inclure ça dans tes débats, je sais que ce n'est pas facile. Petit à petit. Merci. Qu'est-ce qu'il y a, Gérard ? On l'a repris en antenne. Qu'est-ce qu'il y a ? Bah non, fais pas la gueule, merde ! Il est vraiment... Il est vraiment... Il est vraiment phénomène !
Il est vraiment... Il rigole, vas-y ! Il est vraiment phénomène ! Allez, Gérard ! Bon, allez ! Dans moins de 5 minutes, sur Fun Radio, les débats de Gérard vont démarrer. La pression est mise à son maximum, que les radios d'en face s'accrochent, car le bulldozer de la bande FM va arriver. Le monstre, par définition.
C'est Alain Delon au cinéma. On a connu Spielberg en tant que metteur en scène. Et il y a sur la bande FM l'animateur qui, sans nul doute, va marquer ses 5 dernières années. Et à mon avis, c'est loin d'être terminé. On est au début d'une grande aventure. Encore 15 ans de signature pour un débat de Gérard, comme chaque jeudi. Un sur la posie et un sur les séries télévisées. TF1, entre autres, qui sont remis bien largement en avant grâce au Big Bill. Les débats de Gérard, si vous voulez y participer.
75 000, Internet également à votre disposition. irc.funradio.fr Et dans l'immédiat, Lenny Kravitz pour foutre la pression, les enfants. Toute la bande FM, ce soir encore, va cramer dans tous les sens. Prévenez-les, Sky, Energy, RFM, Chérie FM, Nostalgie, RNC. Ils sont morts, eux. Europe 1, RTL. Gérard de Suren déboule sur la bande FM.
Les débats, pas de radio et pas d'insultes de Gérard.
Qui vous attend sur l'Internet. www.frfunradio.fr On est combien, là, pour l'instant, Rigo ? On est déjà 1280. Et ça arrive, ça n'arrête pas d'arriver. Et tu vois, plus ça va, plus ça monte. Donc, le premier débat va porter sur les jeux télé. Donc, on va accueillir pour ça Je Pue, Je Pue la Crotte, Je Pue la Crotte, Yetto,
On peut écouter Fun Radio sur... Ifto, Gérard, excuse-moi. Ifto. Ah, Ifto. D'accord. T'écriras mieux, d'accord ? Non, non, mais t'écriras mieux. C'est Manu qui a écrit. Gérard, c'est mon écriture, tout ce qui est ville et fréquence. Ok, je te remercie, Manu, de préciser. Donc, on peut écouter Fun Radio sur 97.9. Oui, bonsoir, Gérard. Bonsoir à tous. Oui, bonsoir, Tony. Mais non, Tony, il est là. Écoute, Tony, allô. Oui, bonsoir, Gérard. Bonsoir à tous. C'est pas moi.
Bien sûr, Tony à Brest. C'est ça. Alors, Tony, c'est Paris. Il a le droit de voyager ? Dans Vacances à Brest. Enfin, bref. Pipouin. Pipion. Pipion. Albi. 97.1. Ouais, c'est ça. Non, mais répondez pas quand je parle. Bon, Pipouin, là. Pipion. Pipion, tu réponds ou quoi ?
Il est là, merde. Oh, quoi, merde ? Je vais pas te faire foutre, ok ? Oh, Gérard, doucement, quand même. C'est le début. Pute de nuit. Pute de nuit, Aras. C'est ça. Bon, bien sûr. Allez, foutez-vous de ma gueule. Foutez-vous de ma gueule. Allez, hop. On attaque. Comme ça. Non, mais présente quand même tout le monde, Gégé. Attends. Pour un instant, c'est quoi ce bordel que tu me fais ? Tu commences. Gérard. Tu commences. Tu commences. C'est juste le nom. Attendez, attendez.
Merde ! Putain, mais c'est quoi ce bordel ? Moi, je fais le standard. Mais quoi ? J'ai rien fait. Mais t'es dans ce bordel. Putain, mais c'est quoi ? Putain, rigole pas. On va avoir trois auditeurs. Oh, non, non, non, non. Mais attends. C'est quoi ce bordel qu'il nous fait ? Quoi ? Il y a je pue la crotte. Non, non, non. Allez, hop. Allez, hop. Allez, hop. Mais calme-toi. T'es énervé pour rien. Putain, mais merde. Qu'est-ce qu'il me fait, là ? Qu'est-ce que c'est que ce nom ? C'est surnom. J'y peux rien.
Attends. Je te jure. Dégage. Dégage. Je veux plus te voir ici. Dégage. Casse-toi. Casse-toi. Casse-toi. Mais qu'est-ce qu'il va faire, le standard ? Comment on fait, Gérard ? Attends, putain. Non, mais Gérard, ça va. Moi, j'en ai ras-le-bol. J'en ai ras-le-bol. Toutes les semaines, c'est le bordel. Mais non. Mais si, ce soir, ça va être le bordel. Mais non. Mais si. Je vois le coup arriver. Mais arrête des bêtises. C'est toi qui es énervé, ce soir. Attends. Moi, je vois le coup. Non, t'es énervé d'office. Alors, Tony. Ça va bien se passer. Ça va bien se passer. Bien sûr.
C'est le bordel. T'as décidé. Donc, c'est ta faute. Oui, pourquoi ? Parce qu'il est là. Il n'a pas été... Je ne voulais pas ce soir. Mais qui est à ta place ? C'est bon. Je ne veux pas. D'accord. Tu choisis quelqu'un. Alors, il n'y a personne au standard. Comment on fait ? Non, mais là, il voulait quelqu'un. C'est lui qui remplace. C'est lui le chef. J'en ai parlé hier. Bon. C'est Gérard au standard. Il fait tout, Gérard. Françoise. Oui ? Bonsoir. Bonsoir, Gérard. Ah, Françoise, salut. Oh, on se calme. Bah, écoute, j'ai le droit de dire bonjour, quand même.
Elle est quand même Gérard, la star. Ouais. C'est clair. Vas-y, Gérard. Allez. Ça commence à... Allez, boum. Première question. Allez. Génial. Voilà. C'est bien. Fais voir. Non, non, non. Attends. C'est quoi, les noms que tu me cherches ? J'en ai rien à foutre. J'en ai rien à foutre. Vas-y, j'en ai rien à foutre. Salut, Gérard. Ça va ? Salut. Hé, Gérard, est-ce que tu pourrais me prendre au standard, là ? J'ai quelque chose à te dire, s'il te plaît. Non, non, non, non, non, non. C'est qui ? C'est qui qui veut me parler ? Rodrigo.
Hein ? Rodrigo. Bon, Gérard, allez, on y va. On y va, on y va. Parce qu'il n'y a personne au standard, c'est la merde. Alors, vas-y, Gérard. Première question. Dans le débat, dans le débat. Première question, c'est sur les jeux télé. Quel est votre jeu télévisé préféré ? On va demander ça à Je Pus La Crotte. Je Pus La Crotte, bonsoir. Moi, mes jeux télévisés préférés ? Alors, mon jeu télévisé préféré, c'est quand même le Big Bill. Il faut le dire, c'est un jeu passionnant et j'adore. J'adore la gaffe. Oui. Voilà.
C'est tout ? Ouais. Alors, Pipion ? Moi, c'est sans aucun doute le juste prix. Ouais. C'est vraiment bien, quoi. C'est intéressant et c'est culturel. Enfin, c'est tout, quoi. Ouais, d'accord. Vous cherchez pas trop à... Bah, c'est vrai. Non, mais vous cherchez pas trop à répondre aux questions. Bah, pourquoi ? Bah, tu me dis... Alors, Pute de Nuit ? Ouais, moi, c'est 100% question sur Arte. Comment ? Moi, c'est 100% question sur Arte.
Non, sur Arte... Non, non, non, non. Sur Arte, y'a rien. Si, si, y'a Formos sur... Il y a assez Formos qui me précise. Le mieux, c'est 100% question. Pas d'animateur, pas de décor, pas de candidat. Non, non, non. Sur Arte, y'a aucun jeu télévisé. Je suis désolé. C'est pas Arte, c'est la cinquième. C'est la cinquième. Arte, ça fait un peu plus... Artoni ? Ouais, non, moi, en fait, j'aime pas trop les jeux sur TF1. Je trouve que c'est un peu débile, quoi. J'ai l'impression que c'est un peu pour les beaufs. Moi, ce que j'aime bien, c'est les jeux sur France 3, question pour un champion.
Et puis, aussi, 100% question. Le Cadoc ? Pardon ? Le Cadoc ? Le Cadoc, non, j'aime pas trop, parce que ça me fait trop penser à la 4-10-9. La famille en or ? Non, non plus, parce que c'est sur TF1. Et alors ? Ouais, ben, j'aime pas, non, en fait, non. Dans ce cas-là, si ça te plaît pas, tu changes de chaîne, c'est tout. Voilà, il a le droit de pas aimer. Il a le droit de pas aimer. Il regarde les autres chaînes. Ben ouais, c'est ce que je fais, c'est ce que je t'ai dit. Françoise ? La gaffe. La gaffe, le juste prix,
et puis... Là-haut de la fortune ? Oui, avec Philippe, ouais. Philippe, tu le connais ? Ben, bien sûr, ouais. Ah bon ? Ouais, ouais. T'as déjà couché avec lui, Françoise, non ? Oh, Manu, ça suffit. Oh, je demande, je me renseigne. Et Françoise, tu regardes Cascado ou pas ? Non. Et j'en ai rien à foutre pour terminer ? Moi, c'est le Big Bill, mon préféré, et j'ai pas tribu une fois. Et, en fait, derrière Zeno, j'ai une botte de coton-tige. Alors, toi, j'en ai rien à foutre.
J'en ai rien à foutre, c'est terminé pour toi. Non, mais je l'ai vu, je l'ai vu, cette émission, c'est vrai. Ben oui, c'est vrai. Bon, alors, si vous commencez à me casser les bureaux... Mais je te casse pas les bureaux, Gérard. C'est vrai, j'ai participé. Tu réponds comme il faut à la question, et tu la fermes. Bon, alors, c'est le Big Bill, voilà. Parce que, pour l'instant, vous avez... Là, pour l'instant, vous êtes en train de me casser les couilles, et j'aime pas ça. C'est bon signe, alors. Allez, Gérard.
Allez, continuez. Continuez comme ça, vous allez... Allez, enchaîne un peu, là. Quoi ? Qu'est-ce que t'as, toi ? Ben quoi ? T'es animateur radio ou t'es un branquin ? Qu'est-ce que t'as ? Qu'est-ce que t'as, là ? Ben quoi ? Tu me cherches, là ? Vas-y, j'ai quatre palmanouches qui s'éveillent en moi. Eh, si t'es pas content, tu te casses. Ok ? Allez, Gérard, arrête d'être agressif. Allez, enchaîne, enchaîne. Alors, lors des émissions des jeux, jouez-vous à deux, ou à plus, ou à autres ? On va demander à Françoise. À plusieurs.
Tu peux préciser ? C'est-à-dire que je joue moi, mon fils, et puis mon partenaire. Ouais, mais tu peux préciser sur quels jeux, à peu près, Françoise ? La plupart, c'est Laïga. C'est un cycle juste pris. D'accord. J'en ai rien à foutre. Ben moi, disons que je joue tout seul, parce que j'ai qu'un chat, donc je joue tout seul. D'accord. Je crois que toi, pour l'instant, t'as pas l'air de comprendre
ce qu'on pose comme question. Rico ? Oui, sur IRC, il y a Davy1 qui te demande si il serait intéressé... Est-ce que tu serais intéressé de présenter un jeu télé sur Fun Radio ? Non. Présenter un jeu télé sur Fun Radio, ça m'étonnerait. Bon, alors celui qui s'est mis à rôter va arrêter. Ça pourrait s'appeler le Fun Big Bill. Allô ? Allô ? Non, mais c'est...
Vous allez pas commencer le premier débat comme ça ! Bon, allez, tu poses ta question. Un jeu comme le pauvre Blaireau, ça t'intéresserait pas ? Alors, Tony ? Oui ? Le Blaireau, il t'emmerde ! Non, mais c'est un jeu sur Fun Radio, c'est un pauvre Blaireau, là. Bingo ! Bon, Gérard, je sais pas, fais quelque chose. Non, non, mais attends, pour l'instant... Non, non, mais attends, pour l'instant, personne n'est capable de gérer l'autre. L'autre, Pildar, il prend des cons.
Personne au standard, tu l'as viré, c'est pour ça que c'est la merde. Tu vas là. C'est un Gérard. Olivier ! Olivier ! Olivier, c'est quoi, là ? Allez, vos dialles derrière, s'il vous plaît, merci. C'est un Gérard. Olivier ! Olivier, merde ! Olivier, tu peux laisser en l'air. Non, non, tu laisses ouvert. Non, non, tu peux laisser en l'air, tu me calmes tout le monde déjà pour commencer. Bon, vous vous calmez un peu. Non, non, mais...
Prends-moi, prends-moi. Il y a Tony qui veut te parler, donc tu te débrouilles avec lui. Donc... Allez ! J'en ai rien à foutre. Tu peux reposer les questions, s'il te plaît ? Non, non, non, non, non, non, non. Je repose plus les questions. Même les gens de l'IRC, ils l'ont pas compris, la question. Alors, à l'heure des émissions de G, jouez-vous à deux ou... ou autres ? Bon, alors... Bon...
Alors, quand vous avez fini de me faire chier comme ça, ben, vous me le dites. Tu peux répondre, Gérard ? C'est qui ? Ben, vas-y. Ben, moi, je suis un peu comme l'autre garçon, j'ai aussi qu'un chat, donc, ben, je joue toute seule, mais... Ben, oui. J'ai joué avec lui, je veux bien, hein. Ben, Gérard, tu gueules, mais si on n'a qu'un chat, comment tu veux qu'on fasse ? Ben, attends, pour l'instant, je t'ai pas sonné, toi. Ben, si, tu m'as engueulé tout à l'heure. Non, mais pour l'instant, moi, je t'ai dit que je t'ai pas sonné. Donc, tu laisses parler les gens. Donc, pute de nuit. Ouais.
Pourquoi ? Ben, je t'ai dit, je joue avec mon chat aussi, donc, jouer à deux, c'est plus sympa. Donc, si le garçon veut que j'aille jouer avec lui, il n'y a pas de problème. OK. Pipion ? Ben, moi, je regarde comme ça. Je regarde la télé, je joue pas, ça m'intéresse pas. J'avais les fesses. Voilà. OK. Euh... Je pue la crotte ? Ouais, ouais, je tue la crotte, bonsoir. Moi, je joue avec mon chat aussi. D'accord. Euh... Tony ?
Il est au standard avec Olivier, Tony. Ouais, ouais, je suis là, je suis là. Donc, moi, GG, moi, je joue en famille. Question pour un champion, mais comme c'est... J'ai une famille d'immigrés, c'est... Enfin, ils arrivent pas à répondre aux questions, donc c'est moi qui gagne tout le temps. Bon, Tony, tu vas te calmer. Non, mais c'est vrai, écoute, c'était... Tu vas te calmer parce que tu passes sous le test pendant les débats. Écoute, ben, je te kiffe, c'est pour tes 100% FN. Ben, moi, je te kiffe, je t'emmerde, OK ? Mais Gérard, il a rien dit, là. Ben, t'es pas insulté, là. Et pour le même prix, je t'insulte, je te le dis direct.
De dos, quoi, Gérard. Comprends-le. Bon, allez, Gérard, on enchaîne. Allez, allez. Alors, troisième question. Et je répondrai après aux questions. On y abrège. Attends, si t'es pas content, toi, tu dégages, OK ? Allô ? Allô ? Allô ? Allô ? Allô ? Allô ? Allô ? Ben, Gérard, allez ! Non, mais attends ! Celui qui s'amuse à dire que j'insulte ton cul, je l'emmerde ! Allez, Gérard. Pas d'insulte. Parce que là, ça va pas commencer comme ça.
C'est pas forcément à toi qu'il parle. Vas-y, enchaîne, enchaîne. Trouvez... Qu'est-ce que t'as, Tony ? Je t'ai dit de dégager. Mais il sait pas, Tony. Allez, Gérard ! Je sens la crotte, c'est bon. Allez, enchaîne. Allez, allez. Eh, putain, vous savez pas comment ça me casse les couilles au premier ! Gérard, on dit rien, alors fais ton débat. Alors, trouvez-vous qu'il y a trop de pubs entre deux ? Entre deux quoi ? Entre deux quoi ? Entre deux cul. De toute manière, vous allez réfléchir, on va s'écouter. Les six sont... Attends, attends, repose la question. Calmement.
Alors, trouvez-vous qu'il y a trop de pubs entre deux ? Et on va s'écouter. Voilà, attends, où est-ce que les gens peuvent nous appeler ? Aux heures 875 000, c'est Olivier qui vous attend. Et sur l'IRC, il y a toujours Rigaud. Ouais ! Donc, vous pouvez toujours essayer de nous appeler sur l'IRC. Donc, www.fr, Fun Radio. Voilà, tout à fait. Et on a dépassé les 2500, on est à 2782. Ouais, c'est bien. Ça monte bien, quoi. Donc, Gérard, j'aimerais bien que ton débat se passe bien pour ces gens-là qu'on essaye encore de battre.
Moi aussi, je voudrais bien que ça se passe bien. Donc, on va s'écouter les soupçons de ma grosse. Elles sont les meilleures avec des portes gertelles. Et on se retrouve tout de suite après. Les débats. Pas de radio et pas d'insultes. De Gérard. Et voilà, donc, on se retrouve. Il est 0h45. Donc, c'est toujours Olivier qui est au standard, qui vous attend aux heures 8.
0800. 0800 08 5000 et 0800 3. 0800 70 5000. 0800 70 5000 et 0800 3 08 5000. Et toujours Rigaud qui est sur l'Internet. Donc, vous pouvez toujours nous laisser des petits messages sur l'Internet. www.fr. Tout à fait. Oui, Rigaud. Oui, tout à fait. Non, mais je te laisse finir. T'allais dire quoi ? On va saluer quand même les Belges parce qu'on n'a pas beaucoup de Belges. Si, si. Contrairement à ce que tu crois, il y en a beaucoup sur l'IRC, justement, vu qu'il y a des gens de partout à travers le monde.
Et voilà, les Belges, ils sont en train de s'exciter parce que je parle d'eux. Et il y a même des gens de très, très loin. Et malheureusement, il y a des gens qui ne captent pas TF1. Ils écoutent quand même le débat via Internet. Donc, on va réécouter. On récupère. Je pue la crotte. Pardon, c'est moi. Merci, Manu. Donc, je pue la crotte. Donc, j'espère que vous avez compris ce qu'Olivier vous a dit. Donc,
Pipion. Oui, bonsoir. 18 ans. Pute de nuit. Bonsoir, Gérard. Donc, Tony. Bonsoir. Françoise. Bonsoir, Gérard. Et j'en ai rien à foutre. Bonsoir. Alors, donc, maintenant, je vais quand même répondre aux deux questions. Non, mais vous commencez pas. D'accord ? Parce qu'Olivier vous a calmé. Si vous continuez, de toute manière, on va changer les noms. Non, mais de toute manière,
on va reprendre d'autres personnes à la place. Parce qu'il y a quand même 24 lignes qui sonnent. Donc, je voudrais bien que vous répondiez, qu'on fasse des débats corrects. Je voudrais bien qu'on arrive à faire au moins les deux débats potables. Pas comme toutes les semaines que ça foire. D'accord. Donc, alors, la première question. Quel est votre jeu télévisé préféré ? Donc, j'ai pas répondu. Maintenant, je vais vous répondre. Donc,
comme Françoise a l'écoute et puis tout le monde, je pense, regarde TF1. Donc, il y a le Big Bill. Il y a le Juste Prix. Il y a le Millionnaire. Il y a Drôle de Jeux. Et il y a plusieurs jeux qu'on peut regarder. Bon, bien sûr, ceux qui adorent le Big Bill. Donc, c'est sûr qu'ils regardent tous TF1. Bon, sur la deuxième question. Lors des émissions
de jeux, jouez-vous à deux ou autres ? Bon, là-dessus, je pense que là, c'est un peu dur de répondre. Parce qu'en fin de compte, on peut regarder le Big Bill ou autre. Même le Juste Prix. Bon, c'est sûr que c'est pas évident à trouver sur des chansons. Parce que là, ce soir, j'ai écouté. Les chansons, elles étaient faciles. D'habitude, c'est un un
un Gigi qui le fait. Et donc, c'est pas évident à trouver les chansons. Donc, la troisième question. Trouvez-vous qu'il y a trop de pubs entre deux ? Alors, que je m'explique bien, les pubs, dès que le début de l'émission commence, au bout d'une demi-heure,
à peu près, vous avez une pub. Est-ce que vous trouvez ça normal ou pas ? Donc, on m'a demandé à... À la française. J'en ai rien à foutre. Non, je trouve pas que c'est normal du tout. Ils mettent beaucoup trop de pubs. Ouais, mais tu peux te l'expliquer ? Bah... Disons qu'ils mettent une à deux pubs pendant une émission qui est une demi-heure. Ça fait beaucoup trop. Ouais, mais... Bon, d'accord. Non, ok. T'inquiète pas. De toute manière, je vais avoir une réponse aussi là-dessus. Rigo ? Non, Gérard, j'ai un sondage.
Vite fait, sur Internet. Alors, sondage sur Internet. 32% des internautes se cuisent des choux de Bruxelles en regardant le Big Bill. 23% des auditeurs voudraient savoir ce qu'ils peuvent gagner en répondant au sondage. 20% des auditeurs ne trouvent plus leur télécommande. 15% des auditeurs ne savent pas suivre les jeux TV car ils n'ont pas Arte. Et 7% des auditeurs préfèrent regarder Santa Belgica. Ok. Bah, de toute manière, sur Arte, il n'y a pas beaucoup de pubs. Il n'y a pas beaucoup de jeux sur Arte.
Tu regardes souvent, Arte ? Non. Non ? Bah, comment tu peux savoir, alors ? Non, parce que je regarde plus la première, comme Françoise. Donc, bah, Françoise ? Bah, moi, tout ce que je peux te répondre, moi, je trouve un peu dommage qu'ils mettent trop de pubs, mais d'un sens, comme tu regardes la gaffe, ça permet aux candidats qui sont au téléphone en direct de chercher dans leur dictionnaire.
Non, non, attends. Tony, Tony, Tony, Tony. Non, non, non, non, c'est pas truqué. Parce que moi, je vais te dire une chose, que ce soir, la question a été, qu'est-ce que c'est un palindrome ? C'est une... C'est un mot qu'on peut prononcer d'un sens à un autre. Et tu le savais, ça ? T'as un exemple ? C'est-à-dire, ouais, un exemple, ouais, parce que moi, je ne capte pas. Palindrome, par exemple, tu prends en cassette. Tu fais...
Tu prends à l'envers. Ça fait... 7K. 7K, mais c'est du... C'est du verlan, ça. Wesh, wesh. Bah, ouais. Ouais, wesh, wesh. Big up. Bah, ouais. Tu connais quoi, en verlan ? Comment ? Non, j'ai rien dit. Non, tu connais quoi, en verlan, toi, Gérard ? Non, non, mais moi, en verlan, je connais rien du tout. Comment on dit, Gérard ? En verlan, comment tu dirais ? Je sais pas, moi. Bonjour à tous, en verlan. Coton-tige. Olivier ? Non, pardon.
Gérard, en verlan, c'est feu beau, feu beau. Bon, on va demander à Tony, maintenant. Ouais, je trouve qu'il y a trop de pubs à la télé, c'est vrai, mais c'est surtout sur TF1. C'est clair. Ouais, parce que France 2, ils n'en ont pas trop, de pubs, en fait. De toute manière, ils n'en mettent quasiment pas du tout. Ouais, c'est vrai. France 2, tu rigoles ? Non, non, non, non, non, non. Non, attendez, attendez, attendez, attendez. Attends, Tony. Tony, Tony, Tony, Tony. Oui, ouais. Tony, laisse parler... Laisse la finir. C'est qui qui...
vient de dire ? C'est Pute de Nuit. Ouais, ben, maintenant, ça va être à ton tour. Après, je vais vous répondre. Je te disais qu'il y avait autant de pubs, en fait, sur la 2, sauf que eux, ils ne coupent pas les émissions, donc il y en a encore plus entre les émissions. Ah, d'accord. OK. Gérard, je sens l'accroche, tu peux répondre. Non, non, attends, t'as déjà... Non, j'ai pas répondu. Non, non, mais attends, on va demander à Pipion. Tu peux répondre à ta question, quand même ? Mais qui c'est qui a coupé, là ? Qui c'est qui a coupé ? Non, non, c'était Pierre Fulain, mais j'ai rappelé. Bon, c'est Pipion, je peux répondre ?
Attends... Eh, Olivier ! Je sens l'accroche, bonsoir. Quoi ? Non, mais c'était pour moi, je veux dire, il m'a appelé pour moi, pour demain. Non, non, mais Olivier, ça va pas aller, hein. Quand quelqu'un coupe, tu me prends d'autres personnes, hein. Ah, d'accord. Ben, je prends des appels. Ouais, bon, moi, je trouve qu'il y a beaucoup trop de pubs. Il faut pas trop se plaindre, parce qu'en Amérique, il y en a encore beaucoup plus. Donc, voilà. Bon, d'accord. Toi, je crois que t'es carrément à côté de la plaque. Ah, ouais, comme ça.
Je sens la crotte. C'est pas je sens la crotte, c'est je pue la crotte qu'on m'a marqué. Donc moi je trouve ça normal qu'il y ait de la pub sur TF1 vu que c'est TF1. TF1 c'est 100% pub, c'est pas 100% tube comme fan, c'est 100% pub. Donc c'est normal. Mais sur France 2, je confirme, il y en a bien. Il y en a trop. Avant de regarder l'épisode de Friends, il y a un quart d'heure. Non, non, non, attendez, attendez. Attendez, attendez. C'est qui, c'est qui là qui veut
répondre avant moi ? Elle est chaude elle. Non mais tu réponds comme il faut s'il te plaît. Oui, non mais je te réponds. C'est vrai, avant Friends, il y a un quart d'heure de pub. Non, moi je peux te confirmer. Moi je te confirme que de moins 25 jusqu'à 50, il y a de la pub. Bon, moi je peux confirmer. Et ça je reviens. Oh ça y est, derrière. Le seul pub que j'apprécie c'est quand on voit Jennifer Niston. Ouais, à la fin. Bon, vous me laissez
parler ou pas ? Moi Ross, je trouve qu'il a un peu une tête de chien battue quand même. Tony ! Ouais, ouais. Tu te calmes. D'accord. Donc je vais répondre à Françoise. Oui. Donc de toute manière, tu m'as appelé. Ouais. Donc on a regardé vaguement et t'as vu comme moi, c'est qu'ils ont passé des pubs. Donc moi je trouve une chose. Et ça,
je pense que personne ne me le contredira. C'est que sur TF1, c'est malheureux à dire, c'est que sur TF1... Oh, vous arrêtez derrière de remplir comme des putes ! C'était un bruit de mobilette. Ouais, mais les bruits de mobilette, ils vont se classer. Je vais les calmer. Je vais calmer les mobilettes. Hein ? Continuez à ce que vous disiez. Ça commence à bien faire. Allez, Gérard, vas-y. Continue sur TF1. Donc, tout à l'heure, la question c'était qu'est-ce qu'est un palindrome ? Ouais. Donc,
ils ont passé la pub. Il y a eu 4 minutes de pub. Pendant ces 4 minutes-là, t'as rien pu comprendre. Parce que t'as eu la pub et après tu l'as eue. Et ça, c'est un truc que je trouve dégueulasse. 4 minutes ? Il y a eu 4 minutes. Gérard, s'il y a de la pub dans une émission, ça veut dire que ça marche ? Donc c'est plutôt bien, quoi. Non, mais même, moi je trouve pas... Non, non. Moi je trouve que lors des jeux... Moi je suis d'accord avec Gérard. Moi, lors des jeux, tu mets pas
de pub. C'est fou. Mais non, mais attends, dans ces cas-là, t'es lancé dans un jeu... Bon, c'est bon ! Laissez Gérard parler. Lors d'un jeu, de toute manière, on peut pas se concentrer pour trouver quelque chose. Par exemple, sur la 2, il n'y a pas de pub. Il n'y a aucune pub. D'ailleurs, il y a plus de gens qui gagnent sur la 2 que sur la 1. Ouais. Parce qu'il n'y a pas de pub. Parce que, que ce soit le millionnaire ou juste le prix, de toute manière, il y a des pubs dans
partout. Mais faut pas non plus se concentrer pour jouer au juste prix. Faut arrêter d'halluciner, quoi. Ouais, mais attends, au juste prix, de toute manière, t'es sélectionné, faut bien te concentrer pour trouver le cadeau, pour trouver le rideau. Gérard, sur IRC, il y a Alf qui dit qu'en fait, la pub, ça sert à réfléchir pour trouver les bonnes réponses. Non, non, non, non, non. Et Gérard, est-ce que tu regardes le jeu, là, après Friends, là, c'est Kiki, c'est avec Marie-Ange Nardino. Euh, qui est qui ? Non. Kiki, c'est avec Marie-Ange Nardino.
Non, je le regarde pas. Non, non, mais même... Bon, Tony ? C'est pas lui, c'est pas lui. C'est qui ? C'est le but du jeu, hein, qui est qui, faut retrouver qui c'est, quoi. Ouais, mais même, de toute manière, moi, je trouve que c'est un peu con, parce que... Non, mais même, de toute manière, tu peux pas regarder dans un dico... Non, mais c'est clair, moi, j'ai du mal à me concentrer quand je vois le millionnaire, il met une pub, j'arrive pas à tourner la roue de mon VTT, c'est clair. Bon, alors toi, tu vas tourner,
la roue de ton VTT avec Olivier au standard. Salut à toi, salut à toi, tu vas tourner la roue de ton VTT. Je dégage, je dégage. Ouais, ouais, ouais. Pour calmer le débat, il y a Oxip qui te demande comment on fait pour gagner Marie-Ange Nardi, comment on fait pour la gagner. Euh... Comment ? C'est Marie-Ange Nardi Namoc. Euh, Tony, tu te calmes. D'accord ? Parce que toi aussi, tu vas faire comme les autres. Non, mais c'est son vrai nom, mais c'est un nom d'artiste, elle l'a coupé en deux. Elle est gentille, cette Marie-Ange.
On se calme. Ouais, mais elle a un petit peu grossi, hein. Je sais pas, depuis qu'elle s'est fait griffer par le tigre, là. C'était un lion. C'est bizarre, hein. On se calme. Ah, c'était un lion, excuse-moi. Alors, avez-vous déjà participé à un jeu télé ? Si oui, lequel ? On va demander ça à Je Pus La Crotte. C'est parce qu'elle avait ses règles. Je Pus La Crotte ! Non, non, tu l'as viré. Je viens de le virer, là. C'est celui que t'as viré tout à l'heure. Ah bon, euh... Celui ? Je suis en train d'appeler quelqu'un d'autre. Ok. Euh, mais, euh... Olivier ? Pas... Pas sur le même nom ? Hein ? Non, d'accord, non, non.
Tu me prends sur les... Non, mais j'ai appelé quelqu'un d'autre, là. Voilà. Euh, donc, on va demander à Pipion. Non, j'ai assisté à aucune émission télé. Non, non, non, non, Pildar ! Non, non, Pildar ! Attends, Pipion, avant que je te parle... Non, non, c'est pas la peine d'essayer de donner des numéros à Olivier. Olivier, il prend le standard et c'est tout. Ouais, sur les marketing. Non, c'est moi qui l'ai pris, Gérard. C'est une vraie auditrice qui a participé au Big Bill. Voilà, elle vient de m'appeler.
Elle vient de me rappeler. Elle voudrait participer au débat. Elle a 40 ans, elle est amoureuse de toi, elle est folle de toi. Non, non, non, non, mais... Mais si ! Il faut qu'on la rappelle, Gérard. Elle a participé à un jeu télé, c'est la question. Vas-y, vas-y, vas-y. Vas-y, tu l'appelles, donc. On va demander à Pipion. Gérard, pour revenir au débat, il y a Le Chiant sur IRC qui te demande si les jeux télé sont tous en direct. Euh, oui. Oui. Mais en direct d'où ? Non, non, ils sont en direct dans les studios comme là où on est.
C'est bien fait en direct, c'est pas truqué. Non, non, je crois pour Gérard. Est-ce que tu crois que c'est le même public qui fait toutes les émissions toute la journée ? Le public change. Mais de toute manière, je peux le certifier. Et ça, Françoise pourra le confirmer parce que Françoise, elle va... Elle me l'a dit tout à l'heure au téléphone quand elle m'a appelé chez moi. Elle va participer dans... Oh ! On a un scoop. On se tait.
Le scoop, c'est que Françoise va être dans le public le 18 janvier. De quel jeu ? Lors du Big Bill ! Ouais ! Et Françoise, fais-nous un coucou. Si la caméra, elle est sur moi, oui, bien sûr. Tu fais une bonne rôle, Max par système. Voilà, tu fais un peu de pub pour Fun Radio. Ne vous inquiétez pas pour ça. Donc, on va demander à Pipion. Attends, Gérard.
Autretemps, Gérard. C'est là-bas, ça se passe là-bas. Autretemps, on accueille On Se Calme avant d'accueillir Béatrice aussi. Mais d'abord, On Se Calme. C'est un auditeur. Donc, je t'écoute. On Se Calme. Oui. Bonsoir à toi. Bonsoir. Allô ? Oui, je t'écoute. Ouais. Je viens d'arriver. Tu peux me poser la question ? Donc, avez-vous déjà participé à un jeu télé ? Si oui, lequel ? Donc, je demande à Pipion. Non, non, j'ai off. Je n'ai pas assisté à vos émissions.
Donc, toi, pour toi, tu n'as jamais été sur un plateau télé ? Non, mais ça ne m'intéresse pas trop. Mais pourquoi ? Parce que je n'ai pas envie qu'on me voit à la télé. Tu es moche, toi. Non, non, attends. Tony, s'il te plaît. On Se Calme, là, parce que c'est moi. C'est moi qui pose les questions, d'accord ? Donc, je voudrais avoir plus de renseignements. Non, je n'ai pas envie de passer à la télé.
Donc, toi, pour toi, si un jour, on t'appelle chez toi, tu ne voudras jamais participer à un jeu télé ? Non, non, je ne veux pas. Parce que tu ne veux pas qu'on voie avec ta tête ? Non, ce n'est pas ça. Mais je n'ai pas envie. Ça ne m'intéresse pas. Ouais, mais précise. Je ne sais pas comment dire. Précise ton nom. Non, non. Tony, s'il te plaît. Non, ce n'est pas lui. Non, mais tu m'en veux, là, ou quoi ? Ou j'en ai rien à foutre, là. Tu te calmes.
Hein ? Bon, ok. Je n'ai pas du genre à crier sur un plateau. Voilà, c'est tout. Mais non, de toute manière, tu n'as pas à crier. Tu as simplement à applaudir. Et toi, tu as envie de le faire, Gérard ? Personnellement, non. Tu n'as pas envie d'aller gagner des trucs à la télé ? Non, non, non, non. Tu n'as pas envie d'aller gagner une bagnole ? Une bagnole ou un petit million, Gérard ? Tu ne dirais pas non, quand même ? Une bagnole, à la rigueur, je ne dirais pas non. Bon, on va demander à plus de deux nuits.
C'est 7 ans. C'est à Paris. Je ne sais plus du tout comment ça s'appelle, mais je sais qu'il y avait Rika Zaraï. Parce que c'était à fond dans le studio. Elle est moche, elle. Non, mais attends. À 7 ans, tu peux participer à un jeu télé ? Oui, c'est vrai. C'est vrai que, là, ce soir, j'ai regardé, il y avait des enfants qui avaient 5, 6 ans à peu près. Je confirme, il y avait un bébé de 2 semaines aussi. Non, non, non. Il y avait un bébé pas né aussi dans le public, ici. Il y avait même des femmes enceintes.
Non, non, non. Tony ? Moi, j'ai participé à Fort Boyard, mais j'ai failli me noyer, en fait. D'accord. Toi, quand tu répondras correctement aux questions, avant de demander à Françoise, Rigaud, oui ? Oui. Est-ce que... Non, mais parce qu'ils sont en train de se parler entre eux. Ils sont en train de tous... Ils s'en foutent. ...de se raconter leur jeu télé. Pour l'instant, ils ne t'écoutent pas vraiment, mais depuis que j'en parle, ils n'arrêtent pas. Turpentine te demande si tu as déjà joué à Top Santé.
Non. Top Santé, c'est quoi ? Ça n'a jamais été un jeu. Tu peux gagner des rasages gratuits, je crois. Non. Si, je te jure. Tu peux te faire opérer du kiss gratuitement, je crois. Tony, tu te calmes, s'il te plaît. Bon, Tony, tu retournes voir Olivier au standard. C'est le jeu, c'est comme ça. Tu retournes voir Olivier au standard, s'il te plaît, merci. Olivier. Tu gagnes un an de kiss gratuit. Oui, je gère, je gère. Olivier, tu prends Tony, tu lui dis qu'il se calme, sinon il s'en va. Terminé.
Françoise. Oui ? Donc, toi. Moi, ça y est, j'ai déjà répondu. Ça ne va pas, là. Tu fais du bordel, tu vois. Tu ne peux pas aller. Ouais. Tu te calmes. Bonjour. Bonsoir. Ton cul, ton cul. Donc, toi, Françoise, pour l'instant, tu n'as jamais participé, donc tu as participé pour la première poêle. Je n'ai pas participé. Tu vas faire... Je vais être seulement spectateur.
Donc, tu vas y être à partir du 18 janvier. 18 janvier. Lundi 18 janvier. Ok. J'en ai rien à foutre. Moi, j'ai participé à l'école des fans, là, avec le gros porc. Le gros porc, le gros porc, tu restes poli, s'il te plaît. Avec Jacques Vartin, et j'ai gagné un circuit électrique et deux patins de... Deux paires de patins à roulettes. Ouais, c'est ça. Alors, j'en ai rien... J'en ai rien à foutre.
Tu retournes voir Olivier Austandard, c'est Paris pour toi. Je ne peux plus, là. Je ne peux plus. On se calme, je peux répondre. Bien fait. Alors, on se calme maintenant pour toi. Ouais, donc, moi, j'ai participé à un jeu, ça s'appelait Les grosses têtes, avec Philippe Bouvard sur RTL. Et ouais, c'était assez sympa, quoi. J'ai pu avoir un autographe de Castelli et puis le cheveu sur la langue d'Isabelle Mergot. Non, mais attends. Un jeu de télé. Un jeu de télé. Il ne faut pas confondre.
Tu avais fait un abruti. Un abruti, va te faire sauter, toi, connard. Oui. Ok ? Oui. Alors, tu dégages, on se calme. Allez, hop. Mais non, mais non. Terminé pour toi. Tu dégages tout le monde aujourd'hui, Gérard. Ça ne rigole pas, hein. Allez. On tue ton cul. Tiens, on accueille tout de suite. Tu dégages à l'antenne. Non, non, non. Non, non, tu dégages. Je l'ai déjà eu la semaine dernière. J'en vois plus. Hop. Oui, mais il va être sage. Il va être sage. Il va être sage. Il a plein de choses à dire sur le téléphone, Canal+, tout ça.
Non, non, non, non, non, non, non. Mais Gérard, allez, fais pas le con. Non, non, non, non. Allez, fais pas la pute. Oui, bonsoir. Donc, aujourd'hui, les jeux de 21 avec Gérard Dessuren, le plus beauf des plus beaufs. Bon, alors, Gérard. Enfin, alors, donc, on reste avec Pipion. Gérard, sur IRC, il y a Kenji qui te demande si tu as déjà joué par téléphone à Hugo Délire. Non. Non, je ne pense pas que ça existe. Parce qu'il a eu une cassette et il a enregistré et il me dit que c'est ta voix
que Karine Chéril. Alors, donc, vous allez... Gérard, j'aimerais savoir si c'est vrai que Sandy, elle a couru dans Interville et pourquoi est-ce que... Alors, Tony, tu dégages. Alors, Tony, tu dégages. Tony, c'est terminé. Terminé pour Tony. Terminé. C'est terminé pour lui. Ah, non, pas Tony. Non, non, terminé, terminé, terminé, terminé. Alors, Tony, j'en ai rien à... J'en ai rien à foutre et on se calme. Attends, attends, attends.
J'ai pas suivi. J'en ai rien à foutre aussi. Il est parti. Il était méchant. Alors, j'en ai rien à foutre. On se calme. Et Tony, ils s'en vont. Et tu me récupères d'autres personnes sur les 24 lignes qui sonnent. Connard. Connard va te faire enculer, toi, bâtard. Gérard, pas de... Alors, le Big Bill était vraiment un extraterrestre et on se retrouve tout de suite après. Et vous pouvez toujours appeler Olivier au standard.
Gérard, vous pouvez toujours appeler Olivier au standard au 0875 000 et 0803 08 5000. Et toujours sur l'IRC, il y a toujours Rigaud qui vous attend. On est combien ? On a dépassé les 3000. On est à 3280,8. Donc, ça booste, ça booste. Voilà. Donc... Big Big Up. Heureusement que t'es là pour faire du boulot. T'inquiète. T'inquiète. Donc, on va s'écouter Bouffe du couscous avec des petits beurres. S'il te plaît.
Merde. Ah ben, c'est bien, ça. C'est bien, hein. Et on se retrouve tout de suite après. Et voilà, vous venez de vous écouter Bouffe du couscous avec des petits beurres. S'il te plaît. Merde. Donc, c'est ce que Manu m'a donné comme disque. C'est bien, hein. À mon avis, c'est un truc techno. C'est de la techno. C'est techno. C'est techno grave. Grave, grave.
Bon, alors, donc, la question. François, c'était toujours.
Ah oui, je suis là. Ah oui, je t'avais oublié. Non, non, mais tu m'as cité. Tu m'as cité, hein. Ah, OK. OK, OK. Je croyais que je t'avais... J'avais pas... Non, non, tu m'as cité. OK. Donc, alors, la question, c'est que le Big Bill est-il vraiment un extraterrestre ? Eh ben, on va demander à Pipion. Pipion. Pipion. Pipion. Ouais, donc, non, Big Bill n'est pas un extraterrestre, évidemment. Et,
c'est juste un... C'est virtuel, quoi. C'est en 3D. C'est un truc... Une image de synthèse. Ouais, une image de synthèse, ouais. Qui c'est qui répond, là ? C'est Chang. Heureusement qu'il m'a aidé parce que je cherchais le mot, en fait. C'est le terme technique. Ouais. Alors, on va demander à... à Pute de Nuit. Ouais. Ben, Big Bill, c'est un vrai extraterrestre. D'ailleurs, t'as sa famille aussi. Donc, c'est la preuve. Ouais, non, mais dans la famille,
bon, c'est sûr, ça, c'est pour faire voir aux candidats ce qu'ils veulent comme cadeau. T'as le frère, t'as... T'as la soeur. T'as la soeur et t'as la mère. Ouais, mais c'est vrai. C'est sa vraie famille. Non, mais ça, on le sait pas. Ben, si, ils le disent. Non, non, non, non, non, non. Ils ont la même tête. Non, non, non, non, non, mais... Non, non, non. Moi, je peux te confirmer qu'à mon avis, je pense pas. Donc, qui c'est qui a un...
Il y a un double son, là. Il y a... Il y a un double son. On va régler ça. Donc, Françoise ? Oui ? Moi, je te dis non. Pour la bonne raison, c'est qu'on l'a déjà vu une fois, en vrai, sur Drôle de Jeu. Ouais, ouais. Ouais, je pense que... Ouais, j'ai... Non ! Manu, s'il te plaît ! Je te jure que je touche à rien ! Mais si ! Mais non ! Manu ! Tu faisais du bon travail ! Mais attends ! Micro ! Mais attends, tu joues à quoi, là ? Ah non, regarde, tu vas voir.
Françoise a bien de le confirmer. Il y a... Elle vient de le confirmer. Bon, reprends, Gérard. Reprends le débat. Donc, Françoise. Oui ? Ah ouais, ouais, ouais. Toi, tu m'as dit qu'on l'avait vu à Drôle de Jeu. Bon, toi, tu dégages. Avant que je t'éclate. Avec ta caméra, là. Toi, tu as dégagé ! Avec ta caméra. C'est dangereux, Gérard. Euh, Shang. Oui, donc...
C'est une image de synthèse. C'est obligé. Et... Je ne l'ai jamais vue en 20 ans. Non, mais tu peux préciser si ça ne te dérange pas ? Shang. Tu peux préciser ? Oui, c'est une image de synthèse. C'est-à-dire que c'est fait par ordinateur. On te demande si c'est... La question est... Le Big Bill est-il vraiment un extraterrestre ? Est-ce que tu peux préciser ta pensée ? C'est pas un extraterrestre. C'est une image de synthèse. C'est fait par ordinateur. Donc, un extraterrestre, c'est... Oh là là !
Mais attends, mais toi, t'as... Mais c'est pas vrai ! C'est toi qui comprends pas. Là, tu comprends rien du tout, Shang. Mais si il a tout compris, c'est toi qui comprends pas. Non, mais attends ! Moi, je demande si le Big Bill est vraiment un extraterrestre. Mais il l'a jamais vu ! Mais attends, il me dit que c'est une image de synthèse. Non, c'est pas une... Non, non, non, non, non, non ! Il travaille sur Nintendo et sur Sony. Je peux te dire que c'est une image de synthèse. Je suis programmeur. Ça vient d'où, ça ? Le Big Bill est une image de synthèse, c'est tout. Mais qu'est-ce que tu fais ? Attendez, il y a Gérard qui se lève. J'ai besoin de toi, Gérard. Non, non, mais ça, tu...
Mais j'ai quelque chose d'autre, là ! Non, non, mais non, non ! J'en ai besoin ! Ouais, non, mais... C'est pas tout ! Ouais, non, mais t'amuses pas à faire ça. Bon, Gérard, reprends le débat, là, parce que là, tu parles. Bon, alors, qui c'est qu'il nous reste à répondre ? Il y a moi. Il y a Fleur d'Anus aussi, t'as pas accueilli. Fleur d'Anus. Qu'on accueille. Bonsoir. Salut. Salut, Fleur d'Anus. Ça sent bon, hein ? Ça sent bon, le sperme, là. Quelle bonne odeur de merde. Vous fermez vos gueules ou quoi, là ? J'aime. Eh, putain, mais... Allô ?
Gérard, je peux répondre ? Pour calmer le débat. Dégage ! Avec ta caméra. Dégage, Gérard ! Arrête, arrête ! Gérard, assieds-toi. Gérard, donc, il y a Paradox sur IRC qui te demande si tu serais au courant que Bill serait le cousin de E.T. Non. Non, mais ça, tu vois, j'ai vu des truculations, des sondages, j'en parle même pas parce que c'est des conneries. C'est des conneries, ouais. Tony, c'est bien.
Gérard, c'est Fleur d'Anus, je peux répondre ? Ouais, bah, réponds. Donc, moi, je pense que le Big Bill n'est pas un extraterrestre. C'est comme disait Chang, c'est un personnage inventé qui a été dessiné sur un ordinateur et qui a été envoyé sur l'écran. Non, mais... Non, mais je pense... Gérard, tu veux dire que c'est un mec qui est dans un gros truc bleu ? Voilà, un mec qui est dans une boîte. Tu veux dire que c'est un costume qu'il porte ? Voilà, c'est ça, en fait. Ah, d'accord.
Voilà, avec des ampoules pour... Attends, Casimir, qui c'est qui parle de Casimir, là ? C'est moi, c'est Françoise à l'appareil. Ah, c'est Françoise qui parle de Casimir. C'est le cousin de Casimir. Toi, je te dis que tu... Dégage tes caméras, Fildar ! Fildar, tu as dégagé mes bits ! Allez, hop, pile d'art ! Alors, donc... Moi, est-ce que je peux parler, là ? Mais c'est qui ? Tenez d'art. Ouais, le Big Bill, c'est pas un extraterrestre. C'est le nom de l'émission, c'est Bill qui est l'extraterrestre. Comment ? C'est Bill qui est l'extraterrestre.
Le Big Bill, c'est le nom de l'émission. Ah, voilà quelqu'un qui répond à la question. Hé, attends, le Big Bill, c'est quoi pour toi ? Le Big Bill, c'est le nom de l'émission. Big Bill. Big Bill. Big Bill. Bon, enfin, bref. Apparemment, je pense que... Il a pas compris la question, il répond à côté. Non, mais... Non, c'est le seul qui répond à côté. Ah, non, Bill, c'est un extraterrestre, d'accord. Non, mais t'es le seul qui répond à côté. Ah, vas-y, elle a pas... Tony, d'accord ? Il est pas là, Tony. Non, presque pas.
À partir de quel âge peut-on jouer ? Attends, moi, j'ai un petit sondage, moi, avant la question. On a un petit sondage, quand même. À la question pour ou contre les jeux télé, il y a 52% des gens qui sont pour. Non, non, non, mais attends. 36% des gens qui sont contre. Péter la nuit. Hop. Alors, moi, si ça commence comme ça, c'est simple. Le premier débat. Va ça. Oh, non. Il jouillait pas. Va te laver les fesses, tu pues. Arrête, tu vas faire bander. Bah, Gérard, t'envoies le bois, là, un peu.
Ça y est, vous avez fini vos conneries ? Oh, les blancs. Ouais, bah, les blancs, celui qui s'amuse à mettre des conneries. Maintenant, ça commence à me faire chier. Je sens que tout à l'heure, on va garder que Françoise et on va reprendre d'autres personnes au standard. Ça va aller vite fait. Pipillon et Pute de Nuit aussi, elles ont été sages. Ah, ouais. Moi aussi. À partir de quel âge peut-on participer à un jeu télé ? On va demander à Fleur Danus. Moi, je pense qu'on peut participer
dès l'âge qu'on peut participer. C'est-à-dire à partir de 10 ans. Voilà. Pute de Nuit. Bah, moi, je pense qu'il faut être majeur. Non, non. Parce que quand même, tu gagnes des jeux. Gérard, Gérard, arrête. Qu'est-ce que tu fais ? Gérard, assieds-toi. Arrête. Il veut taper Fildar. Laisse Fildar. Avec la cam. Non. Pute de Nuit. Gérard, t'occupes pas de la caméra. Continue. Moi, je te disais, je pense qu'il faut avoir 18 ans parce que j'imagine que tu joues au beat-beat. Bien le standard, Olive. Tu sais pas d'où ça vient. Je comprends.
Non, mais là... Là, je pense que... Olivier, ça commence à bien faire. Je sens que dans deux minutes, j'arrête. Ouais, bah, si t'es pas content, tu dégages. Et Manu, tu me coupes le double son. Ouais. C'est Big Bill qui nous parlait. C'est un auditeur qui fait ça. Je sais pas. Max, il a dit que ça venait peut-être du standard. Bah oui, ça vient du standard. C'est ça. J'ai l'impression que vous avez l'intention de me faire chier sur les débats jusqu'à la fin de l'année. Pas du tout.
Parce que pas. Non, c'est toi qui te fais chier tout seul. Attends. Comment ? Bon, allez, allez, allez. Hop. Alors... Plus de deux nuits. Oui. Ça fait cinq minutes que je te réponds, mais tu m'écoutes pas, Gérard. Je te disais qu'à mon avis, il faut être majeur. Parce que si tu participes au Big Bill et t'as 10 ans et que tu gagnes une voiture, t'as pas l'air con. Au moins, c'est ton permis. Non, mais attends. T'as pas ton permis, tu peux pas participer. Ça dépend, il faut gagner des voitures à pédales aussi. Tony, tu fermes ta gueule ! C'est pas Tony.
Barnette ! Alors, celui qui a... Putain, Olivier ! Olivier, tu me calmes ça ! Tu calmes ! Oui, je calme, je calme. Magne ! Oh ! On se calme ! C'est bon, c'est bon. On se calme. Alors, Pipion ? Je suis d'accord avec Tony. Il faut être quand même mineur ou majeur. Ah, le blanc.
Non, non, mais attendez, parce que là, je suis en train de... Non, parce que Gérard, Gérard, tu suis pas ton débat, c'est tout, et c'est pour ça qu'il y a des blancs, quoi. Fais attention à ce que les gens disent plutôt que ce qui se passe en studio. Alors, euh... Il me manque de la maturité, en fait. Et on a 2 francs en égo, s'il te plaît. T'as 2 francs ? Prenez-la. T'as 2 francs en égo, s'il te plaît. Non, mais vous jouez à quoi, là ? Ça dit le gras, ça. Oh ! Mais j'ai dit quoi ? Gérard ! Gérard ! Gérard, tu t'appelles... Dégage ! Dégage du studio, toi ! Dégage ! Dégage ! Dégage !
Dégage ! Dégage ! Reprenez-le. Dégage ! Non, mais sors de là, si tu veux qu'il dégage. Dégage ! Va t'asseoir, va t'asseoir. Je vous explique, il est en train... Gérard est en train de courser, fil d'art, dans le studio. Dégage ! Oui, oui, il dégage, il dégage, il s'en va. Vas-y, je te couvre. Il s'en va, il s'en va. Allez ! Voilà. Gérard, pour calmer le débat, il y a Izen sur l'Internet qui te demande si, toi, dans la radio, là, tu te sens pas un peu comme Big Bill dans sa télé. Non.
Pas du tout. Et on n'a qu'avec Pot de Couille. Non, euh... Bah si, on n'a qu'avec Pot de Couille, à la place de Canada qui est raccroché. Bonjour, Gérard. Pot de Couille. Bonjour, Gérard. J'ai pas entendu la question, hein. Salut, Pot de Couille. À partir de quel âge peut-on jouer aux jeux de télé ? À partir de quel âge ? Bah, pour le Big Bill, le truc pas fut-fut, là, je sais pas, 8 ans ? Bill. Big Bill, ouais. Non, mais... Non, mais je t'écoute ! Bah oui, j'ai dit 8 ans. 8 ans, d'accord.
Shang ? Bah, je crois qu'il faut avoir la majorité pour participer à un jeu de télé. Majorité absolue ? Ouais. Non, mais tu... Vous pouvez préciser ou pas, là ? Bah oui, il faut avoir la majorité, c'est-à-dire 18 ans... 18 ans, c'est-à-dire un peu plus de 7, 17 ans. Bon, d'accord. Et toi, quand t'auras fini de te foutre de ma gueule, tu me préviendras. Ok. Françoise ? Ouais, bah moi, je réponds à partir de la majorité. Attends, Françoise. 5 minutes. Olivier ? Qu'est-ce qu'il y a ?
Le Shang, sinon, parce que ça va pas aller long. Ça va pas durer. Maintenant, on répond au début. Non, non, mais ça va pas durer longtemps, hein. Je sens que... Non, mais je le calme, je le calme. Réponds à Françoise. Il y aura pas... Je vais pas faire 11 questions. Mais toi, à la question, tu penses quoi, d'ailleurs ? Enfin, quel âge a-t-on vu ? Donc, toi, Françoise ? À partir de la majorité. Ouais, mais je pense, là, ce soir, t'as regardé comme moi ? Bah oui. Bon, donc, t'as vu qu'il y avait des personnes avec leurs enfants,
donc... Oui, mais ils ont pas le droit de participer, hein. Bah oui, mais ça, je suis d'accord avec toi. Mais je pense que t'as plusieurs personnes qui ont... Il y a des enfants qui se mettent de la peinture sous les pieds. Ils sauraient pas répondre aux questions, aussi. Comment ? Quand on est trop petit, on peut pas répondre aux questions. Ouais, mais attends, faut quand même dire, c'est que y a le mari, y a les enfants qui sont là pour essayer de conseiller. Gérard, depuis tout à l'heure, tu demandes est-ce qu'il faut avoir la majorité à partir de quel âge, mais est-ce qu'il y a...
Un âge limite ? Est-ce qu'on peut être trop vieux pour participer à un jeu ? Non ! Voilà, exactement, parce qu'il y a Yanki sur l'IRC, il te demande jusqu'à quel âge on peut jouer au Monopoly. Par exemple. Non, mais ça, le Monopoly, t'as pas d'âge, c'est comme le Scrabble, t'as pas d'âge pour jouer là-dessus. Là, c'est autorisé à toute personne. C'est pas possible qu'il y ait une dame de 94 ans qui joue au Big Bill ? Bah si, si,
j'espère, parce que... T'as déjà vu, toi, qui regardes tous les soirs ? Non, mais tu peux demander à Françoise, on a vu des personnes qui étaient assez vieilles, donc, qui ont joué. Bon, c'est sûr... Elles ont pas gagné, alors ? Bah si, tu peux gagner. Ouais, mais c'est pas toujours évident, parce que c'est pas facile. T'as déjà vu à Fort Boyard une mémé faire un soir à l'élastique, toi ? Non, non, attends, là, Fort Boyard... Mais faut pas comparer Fort Boyard avec Big Bill. Non, parce que là...
Yann Or, c'est pareil, les trucs comme ça. Non, mais... Françoise, sur IRC, on me dit que c'est aussi dangereux. Bah oui, c'est dangereux. Imagine, ils font une crise cartel, ils gagnent une bagnole. Non, non, mais attendez, attendez, attendez, attendez, attendez, là, on va éclaircir un peu les jeux. Tiens, mets de la lumière pour éclaircir au lit, s'il te plaît. On va éclaircir un peu le système des jeux. Là, faut dire une chose, qu'aujourd'hui, dans la famille Yann Or, il y avait une qui s'est... Dans les...
Les imitatrices. Je pense que, Françoise, tu l'as regardée comme moi. Dans quoi ? Dans la famille Yann Or. Non, je regarde pas la famille Yann Or. Bon, donc, y'en avait une qui se faisait passer pour Madonna. Ouais, bah ça, j'ai vu le passage. Y'a Colombo et tout ça, mais disons que je ne regarde pas, c'est... Je ne regarde plus la famille Yann Or pour la bonne raison, c'est que depuis qu'il y a Pascal, ça n'est plus pareil. Ouais, ouais, mais... Non, non, non, non, non, non, non. C'est plus qu'à brûler.
Attendez, attendez ! Bouge ton cul, toi, va te faire enculer, toi, connard ! C'est pas Patrick Roy ? Non, bah non, il faut pas parler de Patrick Roy. Attendez, attendez ! On accueille Benjamin. Allô ? Benjamin, bonsoir. Bonsoir, bonsoir. Donc, une question IRC avant que Benjamin réponde. Oui, on me demandait si on peut jouer à la famille Yann Or tout seul. Euh, non, pour être 5... Ah, mais si on n'a pas de famille, et qu'on peut être la famille... Non, mais tu peux très bien trouver des gens que tu connais,
et tu les inscris avec toi, c'est tout. Mais s'ils ne sont pas de ta famille... Mais même... C'est plus une famille en or. Comment tu fais ? C'est des copains en plomb. Non, non, non, même si c'est pas de ta famille, tu peux... Mais non, c'est pas possible. C'est pas possible s'ils ne sont pas de ta famille, si c'est une famille en or. J'ai coupé les auditeurs pour pas qu'ils te... Gérard, mais comment on fait ? Et quand on n'a pas d'amis... Et quand on n'a pas d'amis... Attendez, attendez, attendez ! Pas les trois d'un seul coup, donc Rigaud. Rigaud en priorité. Quand t'as pas de famille et pas d'amis, et que t'es tout seul, comment tu fais pour gérer une famille en or ? C'est discriminatoire.
De toute manière, tu peux prendre quelqu'un que tu connais bien. C'est plus une famille. Donc le titre du jeu, il a plus rien à voir. Non, je m'inscris en faux, je suis désolé, c'est pas possible. C'est discriminatoire. Toi, tu fais la réa, tu te tais. Ouais, mais c'est pas possible, ça ! Non, c'est pas possible ! C'est pas possible ! On me dit aussi que si on est tout seul, on peut peut-être amener des animaux avec soi, non ? Pour faire une famille. Là, dans une famille en or, il y avait le faux Colombo qui est venu avec son chien.
C'était quoi ? Un chien, c'est... Un boule-boule ? Non, c'était pas un pic-boule. Donc, Benjamin ! Allô ? Ouais, excuse-moi, Gérard, je suis en train de regarder le Big Bill, en même temps. Non, mais Benjamin ! Benjamin ! Ouais ? Tu dégages ! Bah attends ! Oh non, non, Gérard ! Je sais pas où il est ! Je sais pas où il est !
Non, non, non, Benjamin, c'est terminé. Ouais, non, donc je disais, tu... Donc, par rapport à la question, moi, j'aime bien les jeux de télé, quand même. Non, mais je te demande, à partir de quel âge peut-on jouer ? Bah, je pense que ça dépend des jeux, hein. Parce qu'il y a des jeux qui sont faits pour les enfants, et des jeux qui sont faits pour les adultes, il y en a qui sont faits pour les vieux, il y en a qui sont faits pour les ados... Il y en a qui sont faits pour les adultes... Comment ? Il y en a qui ont dit un truc pas cool, là. Non, mais... J'ai l'impression que tout à l'heure,
je vais tous vous zapper, et on va rencontrer d'autres personnes. C'est clair, comme ça, ça vous matra, bande de connards. Oui. Ça, je pense que ça va aller vite fait, tout à l'heure. Ouais. Je le sens. T'as raison, Gérard. Je le sens. Donc, Rigo, oui, une question hier, c'est avant... Maintenant, ça parle de questions pour un champion. Gérard, t'es un mec cool. Merci, Benjamin. On me dit, est-ce que c'est pas discriminatoire, aussi, quoi ? Parce que les questions qu'il pose, il y a plein de gens. Toi, si tu regardes questions pour un champion, tu peux répondre à combien de questions ? Vraiment. Moi, deux.
Manu, pour l'instant, tu... Gérard, aucune visite, juste un bonjour. Sur toutes les questions de Julien Boubert. Non, là, sur questions sur un champion, il faut vraiment avoir les trucs en tête. Donc, c'est discriminatoire. Attendez, s'il vous plaît, derrière, on se calme, je réponds à Rigo. T'es un mec cool, Gérard. Benjamin, tu te tais, s'il te plaît. Il dit que t'es cool. Il dit un truc gentil, et toi, tu te tais. Non, non, mais pour l'instant, je réponds. Je voudrais répondre à Rigo. Mais laissez-le répondre,
merde. Gérard, lui, c'est plus histoire naturelle, ces jeux, quoi. Olivier, pour l'instant, tu es à ton micro. Merci. Donc, alors, la question. Ta question, donc, c'était... Est-ce que t'arrives à répondre à combien de questions de Julien Boubert dans Questions pour un champion ? Sur Julien Le Perse, pour questions sur un champion, fais-moi confiance que c'est pas évident. Déjà, pour que tu puisses savoir toutes les questions, il faudrait que tu regardes sur l'audito, mais t'as pas le temps. Vraiment, t'as...
C'est ça, le jeu. Surtout sur le plateau, quoi. T'as vu quelqu'un avec un dico ? Non, mais attends, mais même... Vas-y, t'as moins de 20 secondes pour répondre. La question pour un poupon, parce que j'ai jamais vu ce truc. Quand tu connais le champion... T'as une question, Gérard ? Non, mais ce que je voulais dire, c'est que quand tu connais le champion, tu peux répondre aux questions sur le champion. Ouais, non, mais c'est pas évident. Parce que, par exemple, je vais poser une question à Manu. Quelle est la capitale de... Quelle est la plus grande ville...
Quelle est la... La capitale de New York ? Bangkok. Non. Ah, je sais pas. De quoi ? La capitale de New York. La capitale de New York. Attends, merde, je sais pas. Le Bronx ? Non. La capitale de New York. C'est un grand pays, en plus. C'est simple. Washington. Eh ouais, la capitale de New York. Non, Washington, non. C'est Washington. Non, si, c'est ça. Non, c'est ça, c'est Washington, la capitale de New York. Donc, par exemple, quelle est... T'as une autre question ? Quelle est la plus grande pute de Paris ?
Ça, je sais, mais je vais pas le dire. Ça va avec, c'est ta femme. Ça va avec, c'est ta femme, donc je... Moi, je sais pas. T'es vraiment accueillé, toi. C'est la Tour Eiffel, parce qu'elle écarte les jambes. Allez, allez, allez. On récupère Flore Danus. Flore Danus. Oui. Attends, qui c'est qui vient de parler de Sandy, là ? T'as un mec cool, Gérard. Non, mais attends, Benjamin, pour l'instant, je veux savoir qui c'est qui s'amuse à parler de Sandy. Moi, c'est une conne.
Laisse tomber. Attends, c'est une conne. Attends, merde, toi, d'accord ? Mais non, mais pas Sandy. Pas Sandy, c'est le qui a dit ça. Grillez. Les boules d'encre sont de nos jamais. Et il faut les aimer, aussi. Ouais, calmez-vous, les mecs. Ouais, calmez-vous, les mecs. Flore Danus. Oui, Gérard. T'es cool, Gérard. Toujours là. Pipion. Ouais. Pute de nuit. Ouais, je suis là. Françoise. Oui, je suis là. Pot de couille. Ouais, je suis là. Et Benjamin. Ouais, je suis là, et je veux dire que t'es un mec cool. Alors, être animateur...
Oh, vous vous calmez, s'il vous plaît. Bonjour. Bonjour. Bonjour. Non, mais quand vous aurez fini, je pourrais peut-être poser ma septième question. Vas-y, vas-y, vas-y. Et très... Ah, vas-y, vas-y. Eh, je t'en tue, je t'en tue, tu vas pas en tuer, toi, sale pédé ! Oh ! OK. C'est bon, c'est bon, c'est bon. T'es un mec cool. Alors, être animateur d'un jeu... Bon. Eh, Olivier, tu fais quoi, là ?
Ben, de toute manière, c'est tous les jeudis, c'est comme ça. Eh, Gérard ! Gérard ! Il te parle, Benjamin. Ouais, Benjamin, je t'écoute. J'aimerais bien qu'on fasse un peu le débat, parce que moi, tu sais... Il a raison. J'ai des trucs à faire, j'ai pas que ça à foutre. Ouais, mais pour l'instant, je voudrais bien savoir qui c'est qui s'amuse à dire des conneries. Ben, je vais essayer de le trouver, t'inquiète pas. Alors, donc, être animateur d'un jeu, vous tente-t-il ? Ouais, Benjamin, je veux répondre. Ouais. Ouais, parce qu'en fait, voilà, je vais te le dire tout net, en fait, j'écoute tes débats depuis longtemps,
je m'appelle, je vais le dire, je m'en fous, je m'appelle Benjamin Rizzoli. Oh, non ! Et en fait, mon père, c'est Philippe Rizzoli, quoi. C'est pas vrai. C'est l'une des deux. Non, non, non, sans déconner, c'est sérieux, et donc, moi, je suis bien passé pour en parler, parce que, étant donné que mon père, il fait le millionnaire, ainsi que la roue de la fortune, euh, non, merde, j'ai un trou. Le juste prix, excusez-moi. Donc, moi, je peux vous dire que c'est un métier qui en vaut, quoi. Ah, ouais. Parce que, moi, je sais qu'on a pas mal de thunes,
qu'on en profite grave, et, euh, moi, je conseille à tout le monde de devenir un animateur télé, hein. Bon, ok. On va demander un pot de couille. Gérard ? C'est qui ? C'est Benjamin, encore. Non, mais attends, Benjamin, attends. Non, je veux seulement dire que t'étais cool. Bon, ok, ça y est, j'ai compris. Pot de couille. Ouais. Ouais. Bon, tu réponds ? Bah, je sais pas. Non, bon, alors, vas-y, hop. Bah, non, vas-y, attends, vas-y, répète. Hé, non, non, non, retends, moi. Bah, répète. Bah, non, non, je répète plus. Moi, t'as dit que t'étais cool. Moi, t'as dit que t'étais cool. Attends, dégage.
Allez, allez, dégage, dégage, dégage. Allez, hop. Je te dégage. Dégage-le, dégage-le, dégage-le, dégage-le. Hop, hop, hop. Allez, dégage-le. Euh, Françoise. Toi aussi, je vais te dégager. Je suis là, je suis là, je suis là. Françoise. Disons que, euh, disons que, non, moi, ça m'intéresserait pas de... de remplacer quelqu'un, euh... C'est quoi, cette colonne-là ? Non, ça, c'est Olivier. Olivier, je te dis de me dégager, l'autre. Et c'est ça qui nous fait des jingles, putain. Putain.
Il fait des jingles et il est même pas capable de faire un standard. Pour l'instant, vous êtes en... C'est la septième question et c'est de la merde. Il est déjà 1h33... Euh... 1h34. On est à la septième. Et pour l'instant, c'est de la merde que vous me faites. Pour revenir au débat, super, les auditeurs. Il y a Formos qui te demande si tu animerais... si tu aimerais animer un jeu télé et si oui, lequel ? Alors, tu peux répéter la question. Alors, Formos sur l'IRC te demande si tu...
si tu voulais animer un jeu télévisé, est-ce que ça t'intéresserait et si oui, lequel ? Non, ça m'intéresserait... Ça m'intéresserait pas de... Ça m'intéresse pas. Manu, s'il te plaît, quand je te demande de me couper tout le monde, tu le fais et tu te tais, maintenant. D'accord. Donc, pour très... Bon, Manu, ça commence à bien faire ! J'ai rien fait ? Oh là là là là ! Mais je touche à rien !
C'est mon micro ! Viens, mais t'es chiant, hein ! On n'a qu'à effacer. Ouais, non, mais attends, attends, attends, pour l'instant... Non, j'ai bien l'antenne, ça. Donc, pour te répondre, je prendrais... Je ne ferais même pas de débat télé ni rien du tout. Non, un jeu, pas un débat, un jeu. Non, mais même un jeu télé, je ne le ferais pas. Allez, pourquoi ? Tu serais bon, en plus. Non, non, je ne le ferais pas. De remplacer la gaffe. Non, non, non. Oh, Gérard... On peut t'inscrire à des jeux, ici. Non, non, non, non.
De toute manière, rien qu'à voir les emmerdeurs, c'est bon. Sinon, il y a Philou... Attends deux secondes, il y a Philou qui te demande si tu comprends le principe des chiffres et des lettres. Oui. Le principe. Le principe, c'est de trouver le compte est bon et de chercher des mots. Il ne faudrait pas quand même qu'il me prenne pour un con, lui, sur lire, c'est... Donc, passé. T'as compris, Philou ? Oui, je réponds à la question ? Oui. Moi, je ne voudrais pas être animateur télé, non. Je ne sais pas, je ferais plutôt de la radio comme toi,
à rien foutre, à faire des émissions à la con. C'est qui qui s'amuse avec son téléphone ? Ça va gerber ? Qui c'est qui s'amuse ? Ça va casser, sinon. Ton cul, ton cul ! Bon, là, c'est Benjamin. Arrêtez avec le téléphone, c'est chiant. Bon, Benjamin, pour l'instant, ce n'est pas toi que je m'adresse. On va demander à Françoise. Gérard, c'est trop cool. Je t'ai répondu, Gérard. Oui, aussi, c'est bon, c'est bon. Plus de deux nuits. Moi, je ne voudrais pas être animatrice parce que je ne pourrais pas gagner les cadeaux. Non, mais de toute manière, tu n'as pas besoin d'être animatrice.
Non, mais quand tu es animatrice, tu ne peux pas gagner les cadeaux. Rigo ! Moi, j'aimerais bien gagner des cadeaux. Rigo, c'est Benjamin. Est-ce que Fleur d'Anus, elle est sur l'Internet, là ? Non. Parce que je suis en train de faire de l'Internet en même temps. Et tu ne la trouves pas ? Ben non. Va voir sur Dièse Fleur d'Anus. Ou Dièse en couleur de GG. Merci. Qu'est-ce que tu viens de dire ? C'est rien, c'est rien. C'est les noms des serveurs. Et le débat ? Benjamin ! Benjamin ! Excuse-moi, GG.
Benjamin ! Ouais ? Si tu paies de l'Internet en faisant les débats, ce n'est pas la peine. Ok, super. Gérard, c'est Fleur d'Anus. Je peux répondre ? Oui, je t'écoute. Justement, ils te cherchent, Benjamin. Ouais. Non, mais ce n'est pas le même. Oui, ce n'est pas le même. Je ne suis pas au mot. C'est mon frère jumeau. Donc, oui, moi, je n'ai pas l'intention de devenir animateur de jeux télévisés parce que c'est complètement débile. D'accord. Pipion ? Je ne veux pas être animatrice. D'accord. C'est bien, toi, tu réponds.
Comme pute de nuit. Pute de nuit, c'est pareil. Oui, d'accord. Tu sais, tu as des questions des villes. Alors, nous aussi, on répond des villes. De toute manière, si ça ne vous plaît pas, les débats dans ces cas-là, pourquoi qu'on vous sélectionne ? Si, c'est génial. Tu es trop cool. Non, mais là, pour l'instant, on n'est même pas arrivé à... On s'endort, surtout, quoi. Parce que tu n'es plus dans ton débat. Donc, reprends-le. Non, mais toi, pour l'instant, quand tu me prends du boulot correctement... Je ne fais pas le boulot correctement, là. Non, mais pour l'instant... Reprends, reprends. Comment ? Qui c'est qui n'est pas contente, là ?
C'est qui qui n'est pas contente, là ? C'est laquelle qui vient de dire Jabrej ? C'est laquelle, pauvre meuf, qui a dit ça, là ? Benjamin, tu dégages. Entre pute de nuit et pipion, là, c'est laquelle des deux ? C'est Benjamin. C'est Benjamin. C'est Benjamin, il a mis... C'est Benjamin, il faut le gerber. C'est Benjamin. Mais, Gérard, ils veulent me gerber, ça va ? Alors, que doit-on supprimer comme jeu télé ? On va demander ça à pute de nuit ? Ben, je ne te dirai pas le fond de ma pensée, mais...
Je voudrais changer un peu le concept de ces jeux. Non, c'est faux. Ben, Benjamin, s'il te plaît, tu te calmes. Ben, attends, si jamais ils arrêtent tous les jeux, moi, mon père, il n'a plus de taf, j'ai plus de thune. Benjamin, tu te tais ! Il va sur une autre chaîne, ton père. C'est connu. Bon, pute de nuit, tu réponds correctement à la question, parce que ça commence à être lourd. C'est vrai, tu dis que des conneries. Gérard ? Les jeux de TF1, pour moi, c'est bidon, c'est rien, quoi. T'apprends rien. Ouais, elle a raison, cette fille. À propos des jeux de TF1, il y a... Alors, ce qui s'était, c'est Chocobo sur l'IRC
qui a dit à tourner Manège. Non, mais justement... Non, c'était dans 30 millions d'amis. Qui c'est qui vient de dire ça ? C'est Benjamin. Alors, Benjamin, tu dégages. Benjamin, tu dégages ! Et pourtant, t'es un mec. Tant pis pour toi ! Mais non, t'es trop cool, Gérard, tu peux pas me virer, t'es trop cool comme mec. Je sais pas où il est. Je te suis depuis 10 ans. Ah, c'est bon, je crois que j'ai trouvé. Je suis dans la rue depuis 10 ans, Gérard. Il est super cool, Benjamin. Et c'est lui qui t'amène des lettres. Ça y est, vous avez fini,
quoi, connerie ! Bon, Benjamin, je suis désolé. Je dégage. Alors, Françoise. Oui. Moi, en supprimer un, je supprime la famille en or. Pourquoi ? Parce que j'aime pas Pascal du tout. Non, mais c'est sûr... Non, non, non, non, attends... C'est plus Cabroule, là, je sais plus trop quoi. Cabroule, non. C'est qui, maintenant ? C'est Pascal Bonner.
Parce qu'il a chanté sur la 3. Un tout naze, lui. Attends, attends, attends, Françoise. Il y a une question IRC. Non. Il te demande... Enfin, ça change de jeu encore, mais c'est Oxide qui te demande comment on reconnaît les billets gagnants du millionnaire. Comment on fait ? Alors, pour le millionnaire, tu grattes et si t'as 3 télés, tu passes à la télé. C'est 4. C'est 4. Non, 3. Non, c'est les morpions. Non, c'est 3 télés. C'est 3 télés pour passer directement à la télé. Eh, eh, eh ! Directement ? Eh !
Eh, sans déconner ! Sans déconner ! D'accord, Françoise ? D'accord, Gérard. Sans déconner ! Sans déconner ! Donc, c'est vrai qu'avant, on avait... Cabroule. Vincent Cabroule. Et Patrick Roy, avant. Non, non, non, non, non, non. Non, mais Patrick Roy... Non, non, non, attendez, attendez, attendez. Celui qui a créé le premier jeu télé, ça a été...
Patrick Roy, ça, je suis d'accord avec Françoise. C'est lui qui a... qui a rentré là-dedans lors du... juste prix. Après, il y a eu Vincent Cabroule, qui a capé... Il a fait quoi, lui ? Capé... Merde, comment qu'on appelle... Les marches des héros. La famille en or. Après, ça a été repris par... Maintenant, c'est repris par Pascal Bruner, donc maintenant, il faut dire que
c'est vrai que... Il y a pas eu l'autre pédale de Montiel, aussi, là ? Bernard Montiel, oui. Gérard, en parlant de Rizzoli, en parlant de Rizzoli, il y a Davy One sur l'IRC qui a une question pour Benjamin. Et on a qu'avec Pipo, en même temps, tiens. Bon, c'est dommage que Benjamin n'est plus là. Mais il se demandait comment Philippe Rizzoli fait pour présenter le juste prix à une millionnaire. Est-ce qu'à chaque fois, tous les jours, il doit gratter pour trouver trois télés ? Non, non, non, non, non. Allô ? Ouais, Pipo. Ah, quand même ? Ouais, ben attends, cinq minutes, je réponds quand même au
question Internet. Ben attends, c'est bon, ça fait déjà un quart d'heure que je suis en attente. Ouais, ben attends, pour l'instant, si t'es pas content, pour l'instant, je réponds aux questions Internet avant vous, d'accord ? Mais putain, c'est quoi cette organisation à deux francs, là ? Eh, si t'es pas content, tu restes chez toi, d'accord ? C'est chez moi, hein. Connard. Vas-y, reste poli. Donc, je réponds à la question. Donc, la question, c'était... C'était comment Rizzoli fait pour trouver trois télés tous les jours pour aller au millionnaire. Non, non, mais attends. Mais ben, d'artiller, hein. Oh, mais ça y est, Pipo, tu la fermes un peu !
C'est bon, Pipo, t'es cool. Ouais, putain, mets-moi tout le monde en attente. Hop. Donc, pour te répondre à ta question, donc, il gratte pas trois télés, c'est lui qui anime deux jeux à l'heure actuelle. Et c'est sûr que je voudrais bien savoir comment qu'il fait pour animer le millionnaire le samedi... Ben, il court vite. Non, mais... C'est presque dans les mêmes... Dans les mêmes locaux que là où il fait le juste prix.
Donc, il a juste le temps de changer et il reprend tout de suite le millionnaire, le juste prix. Tu crois qu'il change même de slip ou... Il fait comme Superman, il passe par une cabine. Voilà. Combien qu'on est sur IRC, Rigo, quand même ? On flotte autour de 3400, 3500. En plus ? Ouais, on n'arrête pas de flotter, là, parce que... C'est nul, par rapport à l'Europe. Ouais. Il y a des gens, ils viennent, ils écoutent par l'Internet et ils s'en vont parce qu'ils trouvent que tu gueules. Alors, Flore Danus. Ouais, mais moi, j'ai tout zappé, là. Ah ben...
Dans ces cas-là, c'est pas grave. On va s'écouter... Attends, finis ta question. Allô ? Alors, Flore Danus. Ouais ? Tu réponds ? Ça n'avance pas, hein. Bon, tu réponds. Allô ? Flore Danus, tu réponds. Ouais, donc, moi, je pense que les jeux de téléphone, c'est de la merde et c'est bien normal, quoi. D'accord. Ah ben, dans ces cas-là, tu changes de chaîne, ça ira plus vite. Pipion. Ouais ? Donc, pour toi. Non, c'est Pipo, moi. Pipion ! Je ne me souviens plus de la question.
Putain, t'es lourde, toi. Tu commences à me casser les couilles. Allez, hop, dégage. Je t'emmerde, d'accord ? Je t'emmerde, moi, je te pisse au cul, toi, salope ! Allez, hop, dégage ! Hop, Pipion, tu me la dégages. Qu'est-ce que je fais ? Je la dégage, je la garde ? Non, non, tu me la gardes. C'est dommage, elle était cool. Non, non, je n'aime pas les connes. On aime ton cul, Gérard. T'as un problème de voix, Gérard. Ah, Manu ! Ouais, Manu ? On travaille bien ! On travaille bien ! Ah, Manu ! Ah, Manu !
Allez, hop, terminé ! Conclusion du débat ! Allez ! Conclusion ! Maintenant, je prends ce soir. Comment ? Or, toi, tu dégages. Gérard, calme-toi. Calme-toi, Gérard. Hop, terminé. Hop, terminé. Donc, on va s'écouter. Je me mets une pisse sale dans l'arrière avec des punaises et des clous. Conclusion ! Mais Gérard, putain ! Mais conclusion ! Mais quoi ? Mais arrête !
Dégage ! Dégage ! Dégage de là toi ! Qu'est-ce que tu fais ? Arrête, tu vas faire un blanc Gérard. Qu'est-ce qui se passe ? Ça marche bien là ! Qu'est-ce que tu fais ? Tu vas tout couper, arrête Gérard. Dégage ! Fais de la merde ! T'es aussi con que Pildor ! Toi c'est pareil ! Dégage ! Dégage ! Dégage !
Qu'est-ce qui se passe ? Qu'est-ce qui se passe ? Qu'est-ce qui se passe ? Qu'est-ce qui se passe ? Qu'est-ce qui se passe ? Qu'est-ce qui se passe ? Qu'est-ce qui se passe ? Qu'est-ce qui se passe ? J'arrête ! Parce que là tu viens de firer Olivier, Manu et Pildor. Il ne reste plus que Rigaud. Moi je ne sais rien faire. Moi je ne sais pas faire le standard, je ne sais pas faire l'arrêtage, je ne sais rien faire. Alors qu'est-ce qu'on fait ?
Non mais on va s'écouter, je me mets une ficelle dans l'arrêt avec des punaises et des clous. Mais ce n'est pas une solution ça Gérard. Non mais on met ça comme disque et je vais essayer de voir si je trouve des gens au standard. C'est impossible. C'est impossible de travailler comme ça. C'est impossible de faire des débats que je dis comme ça. Non mais là d'accord, mais attends. Là c'est impossible. Manu, il fait le coup, il s'amuse là.
On met des doubles sons. L'autre qui lui demande de virer des gens, il ne les vire pas. Pour l'instant il y a Rigaud qui bosse. Moi je commence à avoir mal bol. Moi je vais finir par ne plus faire de débats. Mais là il faut faire super gaffe parce que... Attends, regarde. Tu as 24 lignes qui sonnent. Là je ne suis pas d'accord. Alors qu'on soit allé où ? Tu peux revenir Gérard ? Attends Gérard, tu parleras avec eux. Qu'est-ce qu'on fait ?
Pour l'instant tu mets 2 10. Non, non, non, non. Toi tu dégages. Toi tu dégages. On n'a rien fait. Allez Gérard. Allez Olivier, c'est bien. Non mais claque pas la porte comme ça, tu vas tout casser putain. Toi Manu. Ah non les gars. Manu ça commence à bien faire. Je peux revenir Gégé ou pas ? Attends, vous me prenez déjà au standard moi. Il y a le 10 que là tout tourne. Alors François ça allait où ? Non mais attends, on s'en fout de François.
Qu'est-ce qu'on fait ? Non mais moi pour l'instant tu mets 2 disques. Ah non, non, non. Si, si, si, si. Pour prendre le débat là Gérard. Non, non, là c'est même plus possible. Gérard, Gérard, je vais perdre des gens. Je vais perdre des gens sur l'IRC. Je vais perdre des gens sur l'IRC. Mais même, on est à 3500, moi je ne suis pas d'accord. Je ne suis pas d'accord qu'on soit à 3500 à 1h46. C'est bien. C'est vachement bien. Non mais attends. Nous la semaine on est à 100. On est à 100 pendant toutes les 10. Non mais là il faut pas déconner. Il faut pas déconner.
Attends. Les mecs ils ne veulent même pas répondre aux questions. Qu'est-ce qu'il s'est passé ? C'est terminé. Maintenant tu ne me prends plus de personne avant. Tu ne me prends plus personne avant les débats. Tu attends que j'arrive et je sélectionne les gens. Parce que Tony j'en veux plus. Arnett aussi, Goldo, tout ça. Qu'est-ce qu'il s'est passé ? Là je n'écoutais pas. Qu'est-ce qu'il s'est passé ? Attends, l'autre il me met du double son. Mais non. J'ai rien fait. J'ai rien fait. Je suis innocent.
Olivier, elle est un sable. On va reprendre l'antenne. Olivier, qu'est-ce qu'il se passe ? Olivier, c'est pareil. Tu me demandes de dégager quelqu'un. Il ne va pas. On ne peut pas déconner. Moi je ne continue pas les débats comme ça. Non mais c'est clair. Je suis d'accord. C'est pas vrai. Tu n'as rien fait. Non, tu n'as rien fait. C'est pas vrai. Tu n'as rien fait. Attends. Tu n'as rien fait. Je te demande 150 fois de me virer des mecs. Tu me les reprends. Tu les remets sous le dos de ton nom. Alors qu'il y a 24 lignes qui sonnent. Arrête tes conneries. Dégage.
Va faire ton truc à la pointe. Attends, ça va. Il a fait du bon boulot. Alors qui c'est qui fait le truc ? Attends, l'autre s'il se calme. Il revient au standard. Je suis hyper calmé. Il faut que je m'accroche. C'est tout. Alors qu'est-ce qu'on fait ? Qui fait quoi ? Qu'est-ce qu'on fait ? Non, je n'ai pas raccroché aux gens. Qu'est-ce qu'on fait ? Pour l'instant, il reste combien de temps sur le disque ? Il reste 40 secondes. Même pas. Plus tard, il revient au standard. Il me laisse François Zéon.
Il me reprend l'autre genre. Bon, alors OK. Allez, on se remet à l'antenne. On reprend dans 40 secondes. Allez, on reprend dans 40 secondes.
Et voilà, vous venez d'écouter. Je mets une picelle dans l'arrêt avec des punaises et des clous. Ça, c'est ce que tu m'as donné comme papier. C'est ça. Excuse-moi, Gérard. Je vais chercher un stylo. Je n'en ai pas. Oh non. Tiens, un fil d'arbre. Attends. Olivier est là.
Il a volé le stylo, Olivier. Olivier ! Non, non, dégage, quoi. Quoi ? Fil d'arbre, fil d'arbre, fil d'arbre. Fil d'arbre ! Fil d'arbre ! Bon, ça y est. Alors, tu me récupères les gens, là, vite fait. Allez. Alors, donc, maintenant, c'est fil d'arbre que vous avez au standard. Bonsoir à tous. J'espère qu'il va prendre des gens sur les 24 lignes. Tu es trop cool. Tu es cool, Phil.
Tu te dépêches ? Hé, Phil, t'es cool. Alors, donc, il nous reste qui, normalement ? On devrait avoir Françoise. Françoise, ouais. Françoise ? Ouais, je suis là. Qui c'est qu'il nous reste ? Bah, c'est tout. Non, père. Bien joué, bien joué. T'as plus que toute seule. Je sais pas. Si tu veux garder qui, tu m'as dit de virer tout le monde. Bah, tu remets plus de deux nuits. Plus de deux nuits. Allez, là, ouais. Plus de deux nuits. Ouais, je suis là. Salut. T'as au boulot, toi ? Ouais, non, non. Non, non, mais après, tu me prends d'autres personnes, là.
T'as mes règles. Ouais, t'as tes règles. T'as l'air que tu vas avoir tes règles. Tu vas aller voir Phil Dard. Il va t'arranger ça. T'aimes changer mon tampon ? Ouais, il va... Avec les noms. Il va te les retirer, tes tampons, tu vas voir. Bon, alors, qu'est-ce que... Hé, Dard. Oui ? Il y a une personne qui voudrait participer au débat. C'est possible de l'appeler ? C'est qui ? C'est qui ? C'est un certain Guillaume. Pas de favoritisme. Ouais. Ouais, mais là, je sais pas. T'aurais dû demander ça.
À Phil Dard. Bah oui, mais disons que... Bon, je veux pas être toute seule sur le... Sur le débat. Bah, je suis là. Bah oui, mais t'es toute seule. On est que deux, là. Bah, on est deux. Non, mais attends. Pour l'instant, qui c'est qui me reprend, Phil Dard ? C'est Max. Juste deux secondes, Gérard. Juste qu'il est 1h50 et qu'après, il y a ton deuxième débat qui est intéressant. Donc, dans 10 minutes, il faut passer au deuxième. Ouais, bah, dans ces cas-là, on fait conclusion sur celui-là, puis c'est tout. C'est qu'on... Conclusion, et on met un disque, cette fois-ci. Ouais. On met deux disques.
On vient d'en mettre un. Jouge. Jouge. D'habitude, entre deux débats, on met Jouge. J'ai t'expliqué. On vient de mettre un disque et à l'époque, il y avait trois heures de débat. Maintenant, ça dure deux heures et demie. Donc, on met plus qu'un disque. On attaque à minuit et demi, on arrête à trois heures. T'es d'accord ? Et les gens, ils demandent. Il y a combien de connectés, Rigo ? 3008, 3009 ? Non, on est redescendus suite à l'engueulade avec Olive. Et ouais, putain ! Et on est sous les 3000, mais c'est en train de remonter parce qu'ils sentent que le débat est plus calme. Ah, et puis, Fildar est revenu. Ils sont peut-être contents aussi. Ils sont contents.
Ils le trouvent super cool. Dommage, on ne va pas pouvoir continuer la fin du premier débat parce que c'est bête, parce qu'il y avait quand même des questions qui étaient intéressantes. On l'a fait. Pourquoi les jeux télévision existent-ils ? C'est nul. C'est nul si t'es pas contente, c'est le même prix. Peut-on tomber amoureux d'un jeu télé ? C'est nul. C'est nul si t'es pas contente, tu vas te coucher. Et d'après vous, les jeux télé sont-ils truqués ?
C'est nul. Dans ce cas-là, tu vas te faire foutre. Tu vas aller retirer tes tampons. Comme ça, t'auras plus tes règles. Donc, la conclusion du premier débat... Non, c'était pas mal. Non, c'était pas mal. C'était bien. Bien sûr, on a fait que cette question, ça a été le bordel. Donc, le deuxième débat va porter sur les poèmes. Et je peux vous dire que je suis venu avec 4 poèmes.
Mais toi, tu vas faire le standard. Et tu vas la fermer. Tu vas la fermer. Tu vas pas t'amuser à ouvrir le micro. Ça sert à quoi que je revienne, moi, pour faire 2 minutes, là-haut ? Tu crois que je suis payé à ça, moi ? Attends, toi, pour l'instant, on est en train de chercher quelqu'un pour te remplacer. Alors, tu vas pas nous les gonfler ? Sans déconner. Sans déconner ! Donc, pour l'instant, il y en a qu'un qui travaille le mieux, c'est Régo à l'Internet.
Oui ? Bip bip. Comment ? Bip bip. C'est qui, ça ? Bip bip. Bip bip. Ah, bip bip. Ouais, OK, d'accord. Je vois pas ce que tu veux me dire, mais c'est pas grave. Bip bip. L'autre a dit bip bip. Mais non, la gaffe, quand il arrive, il fait bip bip. Mais non. Tu sais même pas ce que c'est, le bip bip. Tais-toi, tais-toi, tais-toi. Écrase, écrase, écrase. T'es un faux fan du bip bip, en fait. Écrase. T'es un faux. Un faux fan. Ce soir, je l'ai regardé.
Fais-moi confiance. Je me suis bien marré. C'est quoi qui t'a fait marrer, ça ? Ouais. Hein, Françoise ? Ouais, ouais, ouais. L'autre que t'aimes pas, là, comment tu l'appelles ? Vous l'avez regardé ensemble ? Non, non, ben... Non, on l'a pas regardé ensemble. Non, mais... On était au téléphone ensemble. Et quand on a arrêté de se parler au téléphone, il y avait Ramucho qui... Ouais, avec une... Avec carrément la maison sur la tête.
Ramucho ! T'as cru que c'était la gueule ! Ah, t'es trop cool ! Ah ouais, c'est cool ! Elle est cool, Ramucho. Non, mais attends. T'inquiète pas, Françoise. C'est Manu et Fildar. Ils pètent les plombs, là. Je crois qu'ils ont fumé la moquette. L'autre, il doit faire du 90B, maintenant.
Rigaud ! Il est trop rigolo. Rigaud ! T'es marre pas, Rigaud, c'est pas drôle. Rigaud, il y a... Oui, qui y a-t-il, Gérard ? Rigaud, il y a que toi qui bosses bien dans... Fais pas le con ! Fais pas le con ! Moi, je bosse bien parce que les gens de l'IRC sont bien. Fais pas le con, Rigaud ! Bon, conclusion ! Qu'est-ce qu'on se marre ! Alors, conclusion, donc, on... Ben... Il n'y a plus personne pour la conc... Ah, si, il y a Françoise. Ouais. Ben, je veux pas te...
te vexer, mais j'ai trouvé ça nul. Eh ouais, mais... Tu sais à qui t'en prendre ? Ben oui, je sais à qui m'en prendre. C'est dommage parce que c'est rare que je participe à tes débats, mais là, je l'avoue, c'est franchement nul. Ben ouais, mais ça, tu sais à qui t'en prendre, hein. Tu t'en prends après Manu et Olivier de la... Voilà. Gérard, conclusion,
si toi... Et toi, qu'est-ce que t'en prends ? Ben, moi, je suis comme toi. Comme toi. C'est de la merde complète. Et j'aime pas ça. Donc, j'espère que le deuxième... J'espère que le deuxième, il sera aussi bien, mais disons que moi, je participe pas. Pourquoi ? Parce que t'as vu qu'il a retenu, il est 2h05, et puis, bon, il est temps que t'avais une couche. Ok. Pute de nuit. Ouais. Ben, c'était à chier, ouais, la raison, Françoise. Et tes fins, ben, c'est chaîne de beau.
De toute façon, on te l'a dit, hein. Si tu m'aimes pas, tu changes de chaîne, hein. Ben, justement, moi, je regarde RC, donc... Eh ben, dans ces cas-là, tu nous emmerdes pas, puis c'est tout. Gérard, sur IRC, il y a la conclusion de Turpentine qui dit que ton débat, il avait ni queue ni tête comme toi. Non, mais ça, de toute manière, à chaque fois, moi, je commence à en avoir ras-le-bol. Putain, celui qui a un micro derrière, il va se prendre mon poing dans la gueule. Hein, Manu ? Quoi ?
C'est bien de parler derrière moi. Hein ? Bon, les conclusions, de toute manière, je pense qu'on va perdre plus qu'un débat par semaine, et ça sera terminé. Allez, on se retrouve pour le deuxième, pour les poèmes, et à tout de suite.
== Le débat sur les poèmes ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Les débats, pas de radio et pas d'insultes de Gérard
Eh bah lui tu peux annoncer le disque
Le disque c'était je sens pas bon entre les cuisses avec mais je me soigne
Et bah voilà, donc alors on va écouter, on accueille Verlaine de Montigny le Bretonneux
On écoute Fun Radio sur 101.9
Oui bonsoir c'est Montigny le Bretonneux
Ouais bah je le sais
D'accord
Puis celle du sud
Salut Gérard
Bonsoir
Petit Nénuphar
Salut Gérard
Bonsoir à toi
Et String en fleurs
String à fleurs oui, Ami Poète du soir, bonsoir
De Montluçon
De Montluçon oui
On écoute Fun Radio sur 87.8
Exactement
Et puis celle du sud c'est 98.9 c'est ça ?
Exact
Excuse moi Gérard on a un nouveau là j'ai eu le temps d'en faire
Enfin une nouvelle c'est la chaude
Salut Gérard
Salut la chaude
Salut la chaude
Salut la chaude
Salut ça va ?
Ça va la chaude ?
Je suis grave excité le soir avec Gérard
Tu fermes ta gueule toi
Non mais calme toi la chaude
Gérard tu m'excites putain
Mais calme toi la chaude quand même
Ok
D'accord ?
Oui
Donc tu as 19 ans c'est ça ?
C'est ça
Et tu appelles de ?
J'appelle de la chambre
Ouais mais de quelle ville ?
Ouais ta chambre
Ok j'appelle Versailles
Versailles voilà
101.9
Fm
Je sais que tu es chaude
Oui je suis chaude je sais que tu es chaude
Oui je suis chaude j'ai un doigt dans la chaude
Non non attends
T'as reconnu que t'étais en vie là
T'as l'air tu vas être vachement chaude
Que tu as dégagé
C'est un débat sur la poésie donc tu dis que tu mets un doigt dans ton sexe féminin
D'accord
Voilà
Ouais ben toi Pildor tu commences à t'écraser d'accord ?
Alors le deuxième débat se portera sur les poésies
Les poèmes
Et n'ayez crainte
Y'en a quand même 4 après
Oh non
Qui seront à lire
Oh non
On fera des poèmes après
Moi je raccroche pas
Euh ce que ça plaît pas
Ça sera le même prix
Moi je raccroche
Si t'es pas contente que tu vas te faire foutre
D'accord ?
Tu vas pas commencer à me casser les couilles
Ok ?
C'est bien compris ?
Oui
C'est bien compris
Hein ?
Alors comment doit être réalisé un poème ?
On m'a demandé ça à la chaude là comme elle a un doigt dans la chaude
Alors comment doit être réalisé un poème ?
On m'a demandé ça à la chaude là comme elle a un doigt dans la chaude
Comment je l'ai retiré ?
Oui c'est quoi la question ? Comment est-ce qu'on doit réaliser un poème ?
Oui c'est quoi la question ? Comment est-ce qu'on doit réaliser un poème ?
Non c'est comment qu'on encule ta sœur ?
Non c'est comment qu'on encule ta sœur ?
Non c'est comment qu'on encule ta sœur ?
Non c'est comment qu'on encule ta sœur ?
Non c'est comment qu'on encule ta sœur ?
Non c'est comment qu'on encule ta sœur ?
Non c'est comment qu'on encule ta sœur ?
Bravo là
Bravo là
C'est à l'heure
Oui donc répète ta question s'il te plaît
Bon elle tu me la prends au centre
Attends j'ai envie de répondre
Alors tu réponds tout de suite
Alors c'est quoi la question ?
Non bah allez hop on va demander à Verlaine
Comment doit-on réaliser un poème ?
Moi je pense le plus simplement du monde
Avec des phrases, des mots, des virgules, des points à la ligne
Et surtout un point final
Voilà un point final à la ligne c'est ça ?
Un point final et tout à fait
Ok
Je pense
Puis celle du sud
Ouais il faut compter les pieds pour faire des vers
Donc c'est soit douce, tu fais des alexandrins
Soit moins, soit plus
Mais ouais tu fais des rimes, tu fais des jolis mots
Des jolies phrases qui vont ensemble
Ok
Voilà
Petit nénuphar
Bah oui donc tu dois faire des tercets, des vers
Faut que ça rime etc
Faut que ça ait du son, de la tonalité
Bon c'est quoi là ce bordel là ?
C'est que tu m'as écouté j'espère
Parce que je répète pas
On va pisser Manu il n'y a pas de problème
Non mais c'est bon là Régo
On travaille
Gérard j'ai un super service à te demander
Ça va te faire chier mais il faut que j'aille faire pipi
Bah tu es sûr ?
Non mais attends Manu
Avant de sortir je te demande l'autorisation
Mais Manu tu veux pas que j'aille te la tenir ?
Non ça va mais je te demande si je peux y aller quoi
Bah tu te démerdes tu te mailles
Bah merci Gérard je reviens
Je te lave les mains
Alors petit nénuphar
Bah je t'ai répondu tu vois tu m'as pas écouté comme d'hab
Non mais c'est pas de ma faute
Donc vas-y
Donc il faut que les phrases aient de la tonalité
De l'expression etc
D'accord string en fleur ?
Bah écoute moi je dis qu'il faut trois choses que je suis pas sûr que t'aies
C'est l'art de conjuguer, le sens de l'orthographe et quand même un minimum de syntaxe
Non mais de toute manière il y a
Si si quand même
Non attends attends
C'est n'importe quoi ça donne je voudrais te dire je t'aime et puis bon
Non mais de toute manière il y a pas spécialement je veux dire je t'aime ça c'est mes trucs à moi ça c'est
Il faut de la syntaxe toi tu mets de la syntaxe dans tes poèmes t'en mets un maximum
Il en faut il faut de la syntaxe il faut aussi de la conjugaison
Il faut du Becherel du bled
J'ai pété les rimes aussi hein voilà ouais
Non mais attendez attendez on accueille qui là maintenant ?
Attends pas encore non non non je vais la rappeler parce que j'ai besoin d'une ligne
Alors tu bières la chaude et puis tu prends la ligne ?
Rappelle le secret
Ouais voilà le bulldog secret tu vois tout le monde le veut et apparemment il y en a un qui s'appelle Arnett ou Tony ?
Non
Non ?
Ouais
Alors donc comment doit être réalisé un poème bon bah de toute manière ça va être des rimes
Mais j'ai pas répondu
Non mais toi tu vas te faire foutre
Je rentre s'il te plaît
Bravo
Mais non
Mais je t'ai dit de toute manière je veux pas t'entendre toi
Je t'ai dit de toute manière je veux pas t'entendre toi
Je t'ai dit de toute manière je veux pas t'entendre toi
T'as pas envie de me dire comment je réalise mes chers poèmes ?
T'as pas envie de me dire comment je réalise mes chers poèmes ?
Ouais vas-y
Ouais vas-y
Eh bien moi j'aime deux doigts de sensualité avec un tiers de whisky et un tiers de Gérard
Eh bien moi j'aime deux doigts de sensualité avec un tiers de whisky et un tiers de Gérard
Eh bien moi j'aime deux doigts de sensualité avec un tiers de whisky et un tiers de Gérard
Ouais alors tu vois
Fildar
Fildar
Fildar
Fildar
Fildar
Fildar
Quoi ?
Fildar
Quoi ?
Fildar
Quoi ?
On travaille
T'as laissé le pisser un peu ?
Oh Benjamin
Je m'amuse bien je fais de la Gameboy
Oh putain l'autre au lieu de travailler il est en train de faire de la Gameboy en plein
Oh putain l'autre au lieu de travailler il est en train de faire de la Gameboy en plein
Oh putain l'autre au lieu de travailler il est en train de faire de la Gameboy en plein
Oh putain l'autre au lieu de travailler il est en train de faire de la Gameboy en plein
Oh putain l'autre au lieu de travailler il est en train de faire de la Gameboy en plein
Non mais il est cool
Non mais il est cool
Non mais il est cool
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Ouais il est cool Fildar
Bah apparemment comme il a pas l'air de vouloir travailler au standard c'est…
Bah il est cool
De Turpentine, est-ce que tu comptes tes pieds pour faire un poème ?
Laisse-le Gérard, il répond à la question.
Donc tu me disais ?
Est-ce que tu comptes tes pieds quand tu écris un poème ?
Non.
Non, pas du tout.
Et tu comptes tes verres ?
Non plus.
Non, il picole les verres.
Les verres du cul.
Les verres du cul, toi, tu la fermes un peu.
Donc string en fleur.
Oui, tu peux draguer, c'est clair, ça aide à draguer les poèmes.
Moi, je me souviens, l'autre fois, j'ai branché une nana, je lui ai récité un poème.
C'était un truc du genre, je ne sais pas, viens là cochonne, que je te ramone avec mon gros dard,
je vais t'éclater ta boîte à souchards.
Et direct, j'ai réussi à la serrer, direct.
Et tu as pu trouver quelqu'un comme ça ?
J'ai pu trouver plein, plein, plein, ça marche à chaque fois.
Ça marche à chaque fois, tu leur fais deux, trois rimes et c'est bon, pas mal.
Oui, mais je ne pense pas, mon ami.
Toi, tu as fait pareil, tu as bien conquis.
Des dizaines et des dizaines de femmes grâce à tes poèmes.
Non, je pense qu'à mon avis, là, tu te trompes, vraiment, vraiment, tu te trompes.
On reconnaît que tes poèmes ont quand même fait ta gloire.
Ah mais attends, mais ce que je lis à l'antenne, ça c'est différent.
Mais ça n'attire pas les femmes ?
Non.
La chaude, tu t'écrases un peu.
Mais tu m'as touché, moi.
Non, mais toi, tu as t'écrasé parce que tu m'énerves.
Tu t'as touché où, la chaude ?
Donc, on accueille, on accueille Santa Belgica, il nous appelle de Belgique.
Et voilà, il est cool, il a...
T'as quel âge, Santa Belgica ?
J'ai 23 ans.
Voilà.
Salut, Santa Belgica.
Salut, toi.
Salut, Belle.
Bonjour.
Donc, patinez du phare.
Putain !
C'est quoi, cette merde, là ?
Calmez-vous, les auditeurs, merde.
N'oubliez pas.
C'est bon, quoi.
Oh, putain !
Non, on se dépêche.
Gérard, vas-y, continue le débat, je vais essayer.
Allez, encule ton cul, toi, la salope.
Là, tu vas permettre ta gueule pour deux bons.
Mais c'est la chaude.
Hein, la chaude ?
C'est un conseil que je te donne avant que...
Allez, dégage !
Hop !
T'es pas très poli.
T'es pas très poli, Gérard.
T'es pas très poli, tu puisses.
Calmez-vous pour la chaude.
Il est monté sans moi.
Quel bordel, dans ce débat.
Donc, petit délire char.
Ouais.
Donc, c'est quoi, la question ?
Alors...
Peut-on séduire avec un poème ?
Peut-on utiliser un poème pour séduire ?
Manu, fais gaffe !
Tu te calmes, Manu, hein.
Bah, j'en sais rien, parce que...
Donc, un mec m'a séduite avec un poème.
Ah ! Ah !
Pour l'instant.
Ah ! Ah ! Ah !
Ah, mais je sais pas.
Ah ! Ah ! Ah !
Ah, bah, ils s'en foutent, là.
Ils sont déjà partis.
Attends, c'est quoi, ça, Gérard ?
Ça vient d'où, ça ?
Non, mais, Fildar, quand tu feras bien ton boulot...
Qu'est-ce qui se passe ?
Ouais, Fildar !
Bravo !
Merde !
Qu'est-ce que t'as fait ?
Non, non, non, non.
Non, non.
Non, non, non, non, non.
C'est quoi ?
Non, non, tu l'auras pas.
Mais c'est quoi ?
Je sais même pas ce que c'est.
J'aurais quoi ?
Tu l'auras pas, parce que tu vas le mettre là, MD ?
Ouais, ouais.
Ouais, c'est un petit truc...
MD, GG, insert.
Gérard ?
Avec Niette.
Gérard ?
C'est qui ?
C'est un remix, un exclusif que je voulais pas te dire,
parce que c'était une surprise.
C'est qui ?
C'est Verlaine.
Ouais, Verlaine.
Moi, je pense quand même qu'on peut, pour revenir un peu dans le débat,
je pense qu'on peut répondre à la question, quand même,
parce que t'as réussi à séduire la grosse Sandy avec tes poèmes.
Verlaine, tu restes poli, parce que la grosse Sandy, elle t'emmerde.
Oui, c'est vrai, pardon, mais c'est comme toi,
c'est parce que tu l'appelles comme ça, toi,
donc je pensais qu'on pouvait l'appeler comme ça, quoi.
Non, non, mais attends, moi, je lui dis ce que je veux.
C'est vrai, c'est vrai.
Enfin, voilà, quoi.
Bon, alors, dans ce cas-là, comme vous faites les cons,
eh ben, on arrête.
Oh, non !
Non, on n'arrête pas !
On arrête !
Non, j'ai dit pas ça, là.
Sur l'IRC, on a dépassé les 4 1882,4.
Je suis tranquille, on commence à arriver vers notre record,
alors j'aimerais bien que le débat se passe calmement.
Non, mais moi, dans ce cas-là, je voudrais bien que les gens,
je voudrais bien que Fildar fasse bien son boulot
avant qu'il se prenne des claques.
Allô ?
Gérard ?
Oui, allô, fun, bonsoir.
C'est qui ?
Oui, t'es au standard, tu veux parler de quoi ?
Mais qu'est-ce que c'est que ça, Phil ?
Tu veux parler au doc, oui, quitte pas.
Bon, Gérard...
Fildar !
Moi, j'attends que tu fasses ton débat,
moi, je peux rien faire sans toi.
Ouais, c'est bon, c'est bon.
Je peux rien faire sans toi, Gérard.
Non, non, mais...
Bon, Gérard, pour en revenir au débat,
il y a Turpentine qui te demande
si t'as séduit Sandy grâce à tes poèmes.
Ah, ça, c'est une bonne question.
Ça, c'est une question que tout le monde voudrait savoir.
Est-ce que ça attire les animaux ?
Comment ?
Est-ce que ça attire les animaux,
les poèmes ?
Est-ce que ça attire ta connerie ?
Ah, t'es drôle.
Gérard ?
On va demander à Petit Nénuphar.
Oui ?
Tu m'as pas écouté une fois de plus.
Bon, alors, vas-y, dis.
Non, c'est bon, j'ai répété, c'est bon.
Je peux aller passer à un autre ?
Donc, on va demander
à Pucelle de Nuit.
Allez, Pucelle du Sud.
Gérard, on me repose la question sur IRC.
On me redemande si Sandy...
Sandy, on ne me la redemande pas.
Non, attends, Manu, s'il te plaît,
c'est pas toi qui commandes, c'est Régo, toi.
Tu ne fais rien et tu te tais.
Elle va venir plus tard, la question.
Non, je la garde pour...
La grosse, ça t'emmerde, toi, connard !
Elle va venir plus tard, la grosse.
Tu peux répondre ?
On reprend le débat, là. T'as un nouvel auditeur, en plus.
Alors, on a Santa Belgica
et Potiron du Sexe.
Oui, salut, Coco.
Oh !
Salut, Potiron.
Salut, Potiron.
Allô, Coco ?
Potiron, tu réponds comme il faut !
Ouais, bonjour. Salut, ça va ?
Oh là là ! Putain !
C'est quoi, là, ces auditeurs que tu me prends, toi ?
Qu'est-ce que c'est que ça, là ?
Putain !
Attends, Gérard, j'ai rappelé un mec de Belgique parce que tu voulais des Belges dans le débat.
En plus, c'est quelqu'un de l'Internet
et tu ne l'as toujours pas fait participer.
C'est Santa Belgica. Il n'a toujours pas répondu à ta question.
C'est un Belge et il attend.
Oui, Gérard ?
Alors, toi,
toi, ça qui est plus sale du sud,
tu vas fermer ta gueule un peu.
Non, mais dis rien. Vas-y, réponds, Santa Belgica.
Alors, je voudrais savoir si...
En fait, je suis poète à mi-temps en Belgique.
Je voudrais savoir si Gérard connaît mes oeuvres.
Non !
Non, mais je peux lire un poème, peut-être ?
Non ! Oh, mais tant pis, quand même.
Une mélodie est née
le jour où nous nous sommes rencontrés.
Et cette mélodie...
Il a mis sa gueule à lui !
Elle sera toute notre vie.
Vas-y, gros.
Voilà, c'est fait.
C'est génial, quand même.
Deuxième débat, vous allez me foutre la mère d'encore !
Il était beau, son poème.
Gérard, tu pourrais faire correctement ton travail.
Mais c'est pas vrai, hein !
Gérard, il était beau, son poème.
Tu pourrais écouter.
Ça m'a pris trois ans pour faire ce poème.
Plus sale du sud.
Oui, Gérard.
Moi, on ne me séduit pas avec des poèmes.
Avec des billets,
avec des carottes râpées, des clés de douze,
des choses comme ça.
Hum.
Verlaine.
Oui, moi, je pense que je suis d'accord
avec plus sale du sud.
Non, mais tu es précise.
C'est-à-dire qu'on peut,
effectivement, ou on ne peut pas.
Maintenant, chacun a un peu pour soi.
Et pour un marque, tu fais quoi ?
Non, il n'y a pas de marque.
C'est-à-dire que, par exemple,
quelque chose comme Orangina ou Coca-Cola...
Bon, alors...
Verlaine, au revoir !
Pour en revenir à ma question de tout à l'heure,
donc, sur IRC, on te demandait
si Sandy avait été charmée par tes poèmes.
Tais-toi, la grosse débout, espèce de finiasse, là !
Tu ne vois pas que les autres s'habillent, là ?
Allez, débout !
T'es vraiment un bâtard, toi, là-bas !
Quoi ?
Dédicace ?
T'es vraiment...
T'es vraiment un fumier, là !
Tu nous le demandes à chaque fois !
Ouais, mais attends !
Tais-toi, la grosse débout, espèce de finiasse, là !
On va l'appeler.
Bon, ben, justement, on accueille Poupou le mystère.
Salut, Poupou !
Salut, le sanglier !
Salut, le sanglier !
Salut, le sanglier !
Tais-toi, la grosse débout, espèce de finiasse, là !
Tu ne vois pas que les autres s'habillent, là ?
Allez, débout !
Et ils sont bien avec nous !
C'est la fête !
C'est la fête !
C'est la fête !
C'est la fête !
C'est la fête !
C'est la fête !
Poupou le mystère !
C'est la fête !
C'est la fête !
Oui, c'est la fête !
C'est la fête !
C'est ça, la fête !
Bon, ça y est !
Ça y est, là, ça y est !
Bon, alors, Poupou le mystère !
Oui, bonjour, Gérard !
Bon, t'es là ?
Oui, oui, je suis là, t'inquiète pas !
T'es bonne ?
Bonsoir !
Bon, donc...
T'es bonne ?
Bonsoir, bonsoir !
Bon, Poupou, t'as bien vu que c'était pour toi ?
Oui, oui, j'ai bien vu, oui !
T'inquiète pas, j'ai bien écouté la musique !
Donc, alors, maintenant, comme tout le monde sur IRC me demande si je t'ai séduit avec mes poèmes,
donc, est-ce que tu peux répondre à la question IRC ?
En sachant que c'est Poulmystère !
Voilà, en sachant que c'est Poulmystère comme rigolo !
Il y a trop de mystère dans ce truc !
Non, non, mais vous la laissez répondre, d'accord, maintenant ?
Non, je pense qu'en effet, tu m'as séduit avec tes poèmes !
Oh, tu peux faire moins de bruit, s'il te plaît, joue, là !
Attends, toi !
Gérard, Gérard, arrête, le tape pas, le tape pas !
Ah, mais Gérard, si tu ne m'écoutes pas, c'est pas un problème !
Mais non, il ne t'écoute pas, là, il est en train de taper Fildar !
Il te fait parler, c'est un poème de quel siècle ?
Gérard, Gérard, vas-y !
Maîtrise quelque chose, là, au lieu de taper Fildar, reprends !
Je t'écoute !
Il y a Poupou le mystère qui te parlait, tu ne l'as même pas écouté, du coup !
Donc, alors, vas-y !
Moi, j'ai fait un poème sur le pont de l'Alma !
Non, ta gueule, à toi, sur le pont de l'Alma !
Non, mais ça, en plus, ça n'a rien à voir avec toi !
Oh, Mercedes !
Putain, putain, putain, putain !
Mais, balance, balance-moi un disque !
Mais non, j'ai pas un disque !
Toi, pilier du pont de l'Alma que j'aime tant !
Toi, haussier !
Au pont de l'Alma, non, je ne l'écoute pas !
Il est incroyable !
Alors, tu le prends, tu l'emmènes dans ton bureau, tu ne lui donnes plus !
Ah, d'accord !
Tu l'emmènes dans ton bureau, tu vas jouer avec !
Quand je m'éclate dans un pylône !
Bon, alors, attendez, attendez, attendez, attendez !
Oh ! Maintenant !
C'est combien, Game Boy ?
Oh oui, Sandy, je joue, oui !
Oh oui !
Alors, on va garder Poupou le mystère !
Oui, je suis là !
Donc, tu restes !
Potiron du sexe !
Toi, tu vas te calmer, ou sinon, tu vas dégager !
D'accord !
Puis celle du sud !
Oui !
On va te garder !
Attends, c'est moi qui décide !
Attends, c'est toi qui décide, c'est moi qui commande, d'accord ?
Oui, d'accord !
Ok !
Donc, Manu, tu me balances le disque !
Tout de suite ?
Oui, oui, oui !
Il est 2h18, vous allez réfléchir à la troisième question !
D'accord !
Quels sont, pour vous, les poèmes les plus beaux ?
Et on répondra, avec Poupou le mystère, à la question IRC,
tout à l'heure, qu'on nous demande, comment j'ai fait pour...
Non, mais ils s'en foutent, maintenant !
Ils m'ont dit que Manu, on s'en fout !
Non, ils ne veulent pas que tu répondes, ils vont s'en aller, si tu réponds, alors !
Non, non, mais on va leur répondre, avec Poupou le mystère, et on se retrouve...
On va perdre des gens, Gérard, on va perdre des gens !
Eh ben, dans ce cas-là, on va s'écouter, quoi ?
On va s'écouter, attends que je te dise pas de conneries !
Je me mets...
Quoi ?
Je me mets un doigt dans le cul, non ?
Non, c'est pas ça !
Bouge la grosse !
Non, non, non !
Je me mets un carton dans les fesses, parce que je ne me suis pas essuyé !
Mais quand est-ce qu'on va l'avoir en CD, Bouge la grosse ?
Ah ben ça, je sais pas, faudra voir si tes débats sont bien !
Ouais, mais faudrait qu'on l'aille en entier !
Donc, pour l'instant, c'est, je viens de te le dire, le titre...
C'est, ben...
C'est toi qui l'as...
J'ai un carton dans les fesses, quoi ?
Attends, il y a Max...
Avec Je me suis mal essuyé !
Avec Je me suis mal essuyé, et donc, vous réfléchissez à la question...
Je me suis mal essuyé !
Avec Je me suis mal essuyé, et donc, vous réfléchissez à la question...
Quels sont pour vous les plus beaux poèmes ?
Donc, vous pouvez toujours nous appeler au 0800 70 5000...
Et 0800 308 5000...
Oh, ta gueule !
Ta gueule, toi, tu es un peu ignorant !
Bon à rien, qu'est-ce qu'il fait, là ?
T'es tombé dans la poubelle ?
Pauvre tâche !
Pauvre tâche !
Tâche !
Tildar !
Allez !
Attends, parce qu'on ne l'avait pas mis en entier, le truc, elle est là, grosse !
Elle est où ?
Elle est au standard !
Ta gueule, elle est au standard, attends !
Merde, ma grosse, ok ?
Tu ne vas pas lui raccrocher au nez, comme tu as l'habitude de faire ?
Donc, on se met le carton dans l'arrêt, et puis, voilà !
On se retrouve tout de suite après !
Manu, annonce le disque, s'il te plaît !
J'ai un carton dans l'arrêt, avec Je me suis mal essuyé !
Ok !
Voilà, et vous pouvez nous appeler au 0800 70 5000...
0800 808 5000 !
Et toujours l'IRC !
Toujours l'IRC !
www.funradio !
Et donc, c'est Rigo qui vous répond !
Voilà, on est...
C'est les débats de Gérard, quand même !
C'est toujours les débats !
Le !
Gérard, ok !
Sur Funradio !
Sur Funradio !
Par rapport à l'IRC, vite fait, je voulais juste dire qu'on a dépassé les 4500 quand même,
ce qui est un record, même si ça ne fait pas encore 4900 !
On est 4623, et je voulais saluer quelques personnes, Spoutnik, Izen, Cédric,
Yankee, Ice-T, Chocobo, Cédric, et les autres, quoi !
Allez, faites-moi plaisir !
Faites-moi plaisir !
Aujourd'hui, on est...
On est le...
Combien ?
On est le 3 décembre ?
Ouais !
Non, le 4 décembre !
Allez, faites-moi plaisir !
Montez-moi l'IRC !
Faites-moi monter l'Internet !
Faites-moi monter l'Internet à 5000 personnes !
Allez, on récupère !
Allez, allez !
Spring en fleurs !
Oui, mais restez à toi, Gérard !
Ouais, salut !
Salut !
Pour le...
Pour le...
Match Talk...
Chose...
Mystère !
Allez, bouge la grosse, là !
T'inquiète pas, on a une surprise !
Salut, Rigaud !
Salut, Manu !
Et salut, Fildard !
Salut, machin mystère !
Ouais, salut à tous !
Et puis moi, je pue de la gueule !
Ouais !
Non, je viens de te dire salut, Gégé, donc t'as pas entendu !
Ouais !
Non, mais moi, j'ai mal entendu ce que tu m'as dit !
Bon, allez, c'est pas grave, on y va !
C'est pas grave !
Puis, celle du Sud, j'espère que tu t'es calmée !
Salut, Gérard !
Verlaine !
Oui, bonsoir, Gérard !
Tu t'es calmée ?
Oui !
Euh...
Potiron du sexe, j'espère que tu t'es calmée !
Oui !
Et Santa Belgica aussi !
Oh, j'étais pas énervé, moi !
Bon, alors...
Ouais, Gégé, toi, t'es calmée ?
Maintenant, on va continuer le débat !
Sérieusement !
Je suis pas calmée, je te le dis !
Bon, qui qui est pas calmée ?
C'est String Enfleur, tu m'as pas demandé si j'étais calmée !
Bon, tu t'es calmée ?
Ouais !
Bon, alors, maintenant, on y va !
Quels sont pour vous les plus beaux...
Quels sont pour vous...
Les poèmes les plus beaux ?
On va demander ça à Santa Belgica !
Eh bien, un des poèmes les plus beaux qui existe,
c'est Ecolalie de la mémoire,
arborescent au trédit bitoir.
Tu le connais ?
Comment ?
C'est Ecolalie de la mémoire, arborescent au trédit bitoir.
C'est un poème belge.
Euh, je connais pas.
C'est beau, en tout cas.
Enfin, euh...
Potiron du sexe !
Ouais, bah, moi, le poème qui m'a le plus touché,
c'était le grand classique de la charcuterie,
ça, c'est un truc, ça m'a touché,
parce que ça parle de la mormoine poêleuse,
et j'aime bien.
Tu aimes aussi, Gérard ?
Non.
Mais tu connais ?
Non, je connais pas.
Tu veux que je t'envoie ?
Non, euh...
Oui, tu peux l'envoyer au 143 menu Charles de Gaulle,
92 521,
noyé sur scène SEDEX.
Oh, quelle belle voix !
Donc, tu peux...
T'es vrai, Gérard ?
Non, mais vous pouvez toujours nous écrire,
et puis m'envoyer des petits poèmes.
On peut t'écrire directement à toi ?
Oui, bah, vous mettez à l'intention de Gérard,
et...
N'ayez crainte.
Je serais...
Fildar m'avait dit qu'on pouvait pas.
Ah bon, Fildar, depuis quand que...
Attends, mais maintenant, il va vous rater.
Depuis quand que les gens,
ils ont plus le droit de m'écrire ?
Ouais, c'est quoi ce bordel, là ?
Fildar m'avait dit qu'on pouvait plus.
Il a dit qu'il y avait pas de fan club au 143 menu Charles de Gaulle.
Tu réponds, tu réponds.
Non, je parle pas, je parle pas.
Tu réponds aux auditeurs !
Faut savoir ce que tu veux, là.
Tu dis que j'éteins mon micro,
donc je parle pas.
Attends, Gérard ?
Oui ?
Je t'ai envoyé des chocolats,
tu les as reçus ou pas ?
Non.
Moi, j'ai envoyé des bonbons.
Attends, mais on t'a envoyé des trucs,
comment ça se fait que tu les as reçus ?
J'avais mis l'attention de Fildar pour Gérard.
C'est Fildar qui les a gardés ?
Fildar ?
C'est où ?
Je comprends pas.
C'est chez moi ?
Avec des millionnaires.
Moi, je lui ai envoyé des photos intimes, mais bon...
Qui c'est qui a envoyé des millionnaires ?
Verlaine, j'avais envoyé pour Noël, déjà, les cadeaux,
l'attention de Fildar pour Gérard,
parce que Fildar m'avait dit qu'il fallait lui envoyer à lui.
Ah non, mais Fildar, tu t'en...
Mais Fildar m'a dit qu'il fallait tout lui envoyer à lui.
C'est pour ça que j'ai envoyé une télévision couleur.
Mais Fildar, c'est pour ça que t'as des nouvelles sapes ?
Ah, le salaud !
Max !
Je t'ai envoyé des coton-tits,
je t'ai envoyé des t-shirts Nike.
Je t'ai envoyé une pochette surprise millionnaire,
tu sais, avec 20 tickets de millionnaire dedans.
Attends, l'autre, il m'a envoyé des trucs...
Oh !
Ah, mais calme-toi, Gégé !
Je comprends pas.
Ouais, je t'avais envoyé des chocolats, hein.
Attends, et l'autre, il me pique mon courrier !
Et les chocolats ?
Très déçu.
Il y avait des bons tickets au kiwi.
Eh non, il pique ton courrier !
On en parlera après.
Eh ben, je t'en faisais Chantal Goya, il l'a eu.
Bon, alors, question Verlaine.
Quels sont les...
Je tenais quand même à vous remercier pour les millionnaires et tout ça, les mecs, c'est cool.
Non, mais c'est un bâtard, lui, c'est pas grave, on va régler ça après.
Pour en revenir à l'IRC, il y a Fiji Lido qui te demande
si t'as entendu parler de l'hypraconductivité des poèmes le soir quand il fait nuit.
Non.
Non, j'ai pas eu l'occasion d'en entendre parler, de ça.
Attends, je comprends pas, qu'est-ce que ça veut dire, ça, Gérard ?
Ben, justement, moi non plus.
L'hypraconductivité, tu vois ?
Non, je sais pas ce que c'est.
Moi, je t'expliquerai après, là.
Tu me l'expliqueras.
Donc, Verlaine ?
Oui, ben moi, bizarrement, c'est un poème à toi qui m'avait le plus marqué, mais il y a longtemps, quoi.
Ah, ben, dis, dis, dis !
Ben, je me souviens à peu près du texte, je sais pas si t'en souviendrais, c'était, bien sûr, je voudrais te dire je t'aime.
Ouais.
C'était dans un camion frigo, c'était sur un air de trompette, avec, sur un fendrier, je sais pas si tu te souviens.
Ah, bon, ben, c'est...
Sur un aigle.
Ouais, ouais, ouais, c'est la merde.
Ben, Gérard, c'est vrai que tu couches avec Big Bill ?
Qui, qui, qui, qui, qui demande ça ?
Ben, moi.
Euh, Pissache du Sud.
Oui.
Donc, toi ?
Ben, moi, ce sont les poèmes de Yaponov.
Ben, Gérard, c'est vrai que tu couches avec Big Bill ?
Oh, là, là.
Pissache du Sud.
Ouais, moi, c'est un poète russe dont les oeuvres ont été traduites en français, c'est très beau.
C'est très dépouillé, t'as un mot par page, mais c'est très bien pensé.
Ben, Gérard, c'est vrai que tu couches avec Big Bill ?
Euh, Poupou le mystère.
Oui, ben, écoute, moi, ce que je peux te dire, c'est que, pour moi, les poèmes les plus beaux, c'est Baudelaire.
Ouais.
C'est très, très beau.
Oh, non !
Et, euh, bien sûr, les dix.
Oh !
C'est exactement grâce à ça, grâce à tes poèmes, que je t'ai connue, quoi.
Que j'ai fait ta connaissance, et puis, voilà.
Ah, ben, voilà, elle répond à la question de l'Internet, Gérard.
Il me mentait dessus, c'est tout.
Ben, la question...
Non, mais il y en a une autre.
Ah, une autre ?
Parce que l'IPRA, il perd contre l'activité, apparemment, tu sais pas ce que c'est.
On te demande si c'est vrai que...
Alors, attends, si les poèmes du Figaro signés Gégé de Suren, est-ce que c'est les tiens, c'est Chocobo qui demande ça ?
Non, c'est le Figaro.
J'ai jamais mis de poèmes sur le Figaro, et j'irai jamais mettre des poèmes.
C'est quelqu'un d'autre, alors.
Non, mais, là-dedans, j'irai jamais mettre...
Ben, il faut payer, en plus.
Comment ?
Il faut payer.
Oui, il faut payer.
Et, Poupou le Mister, pour l'instant, je réponds, tu me laisses parler, s'il te plaît, merci.
Ok, y a pas de problème.
Avant que je t'assomme.
Alors, ça, sûrement pas, parce que t'as pas...
Bon, allez, c'est bon, c'est bon, laisse-le répondre, putain.
Eh, oh, tu la laisses parler, toi ?
Tu la laisses parler, toi ?
Comment ?
Eh, Gérard, t'as le juste prix de ton cul ?
Euh, string en fleur...
Euh, donc, euh...
Tu réponds ?
Pour répondre à la question IRC, donc, non...
Vite, vite, vite, vite, vite.
Donc, on va demander à...
Ben, string en fleur, maintenant.
Eh, Gérard, t'as le juste prix de ton cul ?
String en fleur.
Voilà, oui, déjà, je voulais dire que Moby Dick Mister, là,
elle a pas beaucoup de goût au niveau des poèmes.
Et, deuxièmement, les plus beaux poèmes,
ben, c'est ceux qu'on fait avec le cœur, hein,
ou ceux qu'on fait avec l'alcool.
Non, mais, de toute manière, en principe,
quand tu fais un poème, tu le fais du fond du cœur,
pour la personne que t'aimes.
Ouais, tu peux le faire du fond du cul, aussi.
Non.
String en fleur.
Ouais, mais je te disais, avec l'alcool, reconnais que
quand t'es un peu éméché, ça aide pour l'inspiration.
Euh, non, je vais te dire une chose que...
Non, non, non !
Les plus grands poètes, ils ont toujours consommé un maximum, quand même.
Eh, je vais te dire une chose que...
Ouais, il y a autre chose.
Ben, attends, il y en a un, là, pour l'instant...
J'ai rien fait !
Non, mais c'est lui, là.
Tu vois, Pildar, tu me laisses ton micro,
et c'est tout. D'accord ?
Euh, Rigo ?
Question IRC, avant que je réponde.
Alors, est-ce que c'est vrai que j'ai lu
dans le Surenois magazine que Gégé donne
des cours de poème ? C'est Turpentine qui te demande ça.
Non, je donne pas des cours
de poème, et...
C'est peut-être une idée, ça.
Non, mais même, je donnerai pas mes cours...
Je donnerai pas comment que je fais mes poèmes,
ni rien du tout.
De toute façon, t'as pas le temps, t'es pas bouqué.
Comme Coca-Cola, c'est top.
Est-ce que tu lui donnes des cours de comique involontaire ?
Oh !
On se calme, derrière, on laisse parler
la personne qui pose la question.
Oui, donc, c'est beaucoup plus clair.
Donc, ce que je voulais te dire, c'est que
si, moi, tu me donnes des cours par correspondance
pour faire des poèmes.
Alors, les cours par correspondance...
Et donc, ce que tu n'as pas dit ?
On n'entend rien à ce qu'elle dit.
Non, mais c'est normal, parce que Pildar, il parle
dessus. Donc, alors,
les cours par...
Les cours par correspondance... Manu, tu vas te taire,
s'il te plaît. Donc, les cours par correspondance...
Putain, ça commence à bien faire.
Je vais pouvoir répondre.
Quel bordel !
Oui, mais je pense que ça va être les deux débats
qui vont foirer.
Si les deux débats foirent, la semaine prochaine,
j'en ferai qu'un, ça sera les jeux vidéo.
Donc, alors, avis aux amateurs...
Pour les autres...
Gérard, pour revenir au débat,
bravo, déjà. Et il y a
Chocobo, encore, qui te demande où est-ce qu'on peut trouver
ton papier peint, les poèmes de Gégé,
avec tes poèmes d'écrit dessus.
Alors, là, dans ces cas-là,
le truc avec les poèmes de Gégé,
donc, dans ces cas-là, vous achetez le best-of
qu'on a fait avec Max...
Le papier peint ? Non, mais le papier peint,
ça n'existe pas. Si, lui, il l'a vu
chez des gens. Oui, ben, il l'a peut-être vu
chez des gens. Moi, j'ai vu du papier toilette à Saint-Ouen,
la dernière fois. Je te jure, c'est vrai. Ouais, ben, moi, j'en ai rien
à foutre. Donc, si vous voulez savoir
plus... On me dit qu'il y en a qui ont vu
des 4x3 sur des nationales, aussi.
Non, ben, ça, c'est des conneries.
À côté du Mans. Oui, c'est ça.
T'as raison, toi, pucelle du Sud.
Continue comme ça,
et tu m'intéresses. Vas-y, cochonne.
Alors, donc,
pour répondre
à la question
quels sont, pour vous, les poèmes
les plus beaux, donc, c'est sûr qu'il y a
Verlaine, il y a Baudelaire,
il y a... Même, je pense
qu'il y a plusieurs personnes
qu'on en fait. Bon, pour dire que...
Herbert Léonard ?
Non, Herbert Léonard, c'est un chanteur.
Voyons, voyons.
On ne confond pas les chanteurs.
C'est un peu des poètes, les chanteurs.
Non, non, non. Justement, Gérard, on avait récupéré
sur Internet un petit sondage
à la question quel est votre poète préféré.
Donc, il y avait 43%
des gens qui préfèrent Pythagore.
24% des gens
préfèrent Lili à poil.
Ah, très bien. Et 100% des gens
détestent le poète de Suren.
Ah, là, c'est clair.
Non, non, mais ça, c'est des trucs confidentiels.
Non, c'est ma pochette, ça, Gérard.
Du calme. Non, non, mais attends.
Déjà, il y a un truc
que j'ai retiré.
Parce que dessus, c'est marqué Lili.
Alors, il est hors de question, donc tu fais gaffe
à ce que tu vas lire.
T'as jamais lu ses poèmes ?
La tienne, toi, connard.
Alors, doit-on parler plus souvent de...
Doit-on parler le plus souvent de quoi ?
Je n'ai pas répondu à ta question.
C'est qui ?
Je t'écoute.
Les poètes que j'admire beaucoup,
il y a par exemple un poète belge
qui est très connu, c'est Hergé,
qui a écrit les poèmes de Tintin et Mille.
Donc, il y a Rigaud
qui a une question IRC, non ?
Non, la question, c'est pourquoi mon micro
il ne s'éteint plus ?
Ben si, il s'éteint.
Alors, ça y est, Rigaud.
Ça y est, ça y est, ça y est.
On se calme, hein.
On va essayer de continuer le...
Doit-on parler plus souvent de...
Attends.
Doit-on...
Attends, attends.
Calme-toi, Gérard.
On reprend un peu de sa petite...
Doit-on parler plus souvent...
On va parler plus souvent des poèmes à la télé.
On va demander ça à Stringanfleur.
C'est quoi cette obsession du doit-on, là ?
Qu'est-ce que ça peut te foutre ?
Si tu ne veux pas répondre, tu le dis.
On prend quelqu'un d'autre à ta place
parce qu'il y a 24 lignes qui sonnent.
Gérard, toi, perso,
rapport au doit-on, tu mets un doigt ou deux doigts ?
Voilà, exactement.
Et toi, est-ce qu'on te demande
si tu mets deux doigts ou un doigt ?
Mais non, mais moi, je te le demande.
Gérard, pour revenir au débat,
Gérard, pour revenir au débat,
il y a Formos qui me dit que...
pour les débats à la télé,
il ne devrait plus s'en parler dans le Big Wheel.
Ouais, mais ça, c'est pas évident.
Donc, Stringanfleur ?
Tu peux me refaire la question, là,
parce que je suis largué.
Alors, doit-on parler plus souvent des poèmes à la télé ?
À la télé, non.
Je pense que, franchement,
les poèmes, ça reste dans le milieu de la radio.
Je pense qu'il y a quand même déjà suffisamment de gens
qui souffrent avec tes poèmes.
Donc, il ne faut pas trop que ça se diffuse à la télé
parce que sinon, tu pourrais quand même
contaminer pas mal de monde.
Non, mais attends, Stringanfleur,
dans ces cas-là,
moi, les poèmes que je fais,
c'est pour tout le monde.
C'est pour tous les auditeurs et les auditrices.
Je sais, c'est là qu'il y a le danger, justement.
C'est qu'il peut toucher tout le monde, ton poème.
Non, mais ça, de toute manière,
ça a touché déjà...
Bon, on va...
Non, non, mais attends...
Oui, Sylvain, tu parles de tes conneries, là ?
Allez, c'est tranquille.
C'est un peu le mystère, là.
C'est un peu le mystère, là.
Non, parce que tu me remets à l'antenne
et après, tu me remets à le standard, là.
Ça va pas du tout, hein ?
C'est vrai que t'es pas bon, ta fille d'art.
Il fait ça à tout le monde, hein ?
Ah, la menteuse.
Ah, non, non, je suis pas une menteuse.
Je dis toujours la vérité, hein.
Alors, Poupou le mystère.
Oui ?
Attends, attends.
Oui, Rigo ?
Alors...
On te demande si t'es bourré quand tu fais tes poèmes.
Non.
Bah non, je l'ai dit tout à l'heure.
J'en ai parlé tout à l'heure.
Gégé, c'est qui, ta muse ?
C'est Sandy, ta muse, ou pas ?
Non, Gégé, c'est Mumus tout seul.
Ah, est-ce que Sandy, c'est ta muse ?
C'est ton égérie ?
Est-ce que c'est là que tu trouves ton expiration, par exemple ?
C'est qui qui parle, là ?
C'est String en fleurs.
Bon, alors, String en fleurs, pour l'instant, tu viens de répondre, tu laisses parler, les gens.
Donc, Poupou le mystère.
Poupou le mystère.
Eh oui !
Elle est là !
Gérard, elle est là !
Elle est là, elle est là !
Elle est là, elle est là !
Elle est là, elle est là !
Elle est là, elle est là !
Elle est là, elle est là !
Elle est là, elle est là !
Elle est là, elle est là !
Vous m'entendez, là ?
Elle est là, elle est là !
Elle est là, c'est bon, Gérard, reviens !
Bon, alors, Gérard, c'est absenté du studio, je ne sais pas pourquoi.
C'est pareil, il est parti dans le...
Je sais, je vais te répondre !
Attends, c'est pas la peine, Poupou le mystère, il est parti.
Il va revenir, là.
Poupou le mystère, t'as pas un poème pour Gérard, pour le faire revenir ?
Bah, écoute, je vais essayer de trouver dans mes affaires, et puis je vais le lire par...
Allez, charge bien.
Gérard, Poupou le mystère, elle veut te lire un poème.
Et si, pas bien, il va te lire un poème.
Tiens, je t'en prie.
Non, mais là, il n'arrête pas de...
Les gens sont en art, comme ça, ça va pas.
Allô ?
Là, moi, c'est terminé.
Qu'est-ce qu'il s'est passé ?
J'en comprends rien, là.
C'est Caliméron le mystère.
Allô ?
T'es là, Poupou le mystère, Poupou le mystère, t'es là.
Oui, t'es là, sans doute.
Vas-y, balance.
Allô, l'autruche ?
Bah, il m'écoute, j'ai le jeu, ou pas ?
J'écoute !
Donc, c'était quoi, déjà, la question ?
Alors, doit-on...
Non, mais attends, ça va lâcher encore pas le dégât.
Mais non, il y a une basse cour derrière.
Elle suit pas, Gérard.
Non, mais moi, c'est simple, il est 2h40, je pense que je vais arrêter.
Ça va aller plus vite, hein.
Que certains auditeurs se calment de temps en temps, que ça fasse pas masse et que tout le monde s'y mette, quoi.
Alors, Poupou le mystère, tu veux répondre ?
Donc, c'est, doit-on parler plus souvent des poèmes, je sais pas quoi, là ?
Ouais, à la télé.
Ouais, bah, je pense qu'on devrait, sans doute, consacrer des reportages à propos des poèmes.
Des poèmes.
Et essayer de parler de ça, parce que c'est vrai qu'on n'en parle pas assez à la télé.
Et donc, voilà.
Moi, je pense qu'on devrait faire des reportages, quoi.
D'accord.
Régo ?
Oui ?
Attends, excuse-moi, Poupou le mystère, il y a une question hier, c'est ?
Oui, on te demande combien de poèmes tu as écrits dans ta vie ?
Alors...
C'est toujours le même.
Donc, les poèmes que j'ai écrits dans ma vie, donc, à l'heure actuelle, il y en a plus de 200.
Oh, quand même.
Alors...
200 quoi ?
200 feuilles ?
Non, non, mais attends, toi, t'éteins ton micro, parce que c'est moi qui ai la feuille, maintenant.
Bah, je te pose une question, Gérard.
Ouais, non, mais moi, c'est 200 poèmes que j'ai sur des feuilles.
Alors, à la question, quel est votre poète ?
Après, vous allez... Puis, celle du Sud ?
Oui.
Verlaine ?
Ouais.
Potiron du sexe ?
Oui.
Et Santa Belgica, donc, n'ayez crainte, je vois...
Vous allez répondre à...
Je vais répondre à la question, je vais quand même lire un petit sondage, là, que j'ai sur les yeux.
Il y en a un, par contre.
Celui-là, il va être vite lu.
Alors...
Ok, à quel poète aimeriez-vous ressembler ?
Merde.
C'est Gérard.
Celui-là...
C'est à la question, quel est votre poète préféré ?
Tarié ?
Non, mais ça, j'ai déjà lu.
On l'a déjà lu, celui-là.
Non, non, non, non, il a lu la haute.
Non, il a lu celui-là, tu t'es énervé à cause de ça, tu ne te rappelles même plus pourquoi tu...
Alors, à la question...
Que verriez-vous comme thème de poésie ?
Donc, 20% des gens sont aveugles et n'en font que d'écouter.
25% des gens verraient mieux avec des lunettes.
37% des gens ne voient pas le rapport.
Et 43% des gens n'aiment pas la question.
Donc, des trucs comme ça, moi, ce n'est même plus la peine qu'on fasse des débats.
Ça ne sert à rien d'essayer de jouer au con comme ça, à fil d'art.
Allez bien, tu vois, tu pourrais répéter la dernière question.
Pucelle du Sud.
Oui.
Donc, pour toi.
C'était quoi déjà ? Parce qu'on a beaucoup parlé, là.
Alors, doit-on parler plus souvent des poèmes à la télé ?
Non, non, je pense que c'est bien.
C'est bien que les gens ignorent que les poèmes existent.
Comme ça, ils ne vont pas évoluer culturellement.
Et puis, ça ne fera pas des intellectuels.
Verlaine ?
Oui, je pense qu'on amènerait une transaction translative si on parlait plus des poèmes à la télévision.
Ce qui permettrait de...
De plus voir en quoi est constitué le poème.
Et ça revaloriserait l'ensemble du monde de la poésie.
Ouais.
Potiron du sexe.
Il est parti, il est parti, il est parti.
Ah, il est parti.
Alors, Santa Belgica.
Ben oui, écoute, Gérard, puisque je représente le public belge,
il faut savoir qu'à la télévision belge, il y a énormément d'émissions de poésie.
Ça passe toute la journée avec des musiques de violon.
C'est un petit peu chiant.
D'accord.
Merci, Fildor, de le couper quand...
Ah, il est là, il est là.
C'est tout ce que tu avais à me dire ?
Santa Belgica.
Oui.
J'ai juste dit que c'était un petit peu chiant, et c'est tout.
Ah, d'accord.
Là, je ne comprends pas, parce que les trois quarts du temps, ça saute.
Je me demande ce qui se passe.
Pourquoi ? Les poèmes sautent.
Non, non, non, mais la ligne saute.
Ah, ce sont des poèmes en octosyllabes, alors.
C'est quoi ce bordel, là ?
Je ne sais pas.
Tu as bien vu, je ne touche à rien.
Si tu veux que je te dise...
Oui, je ne sais pas d'où ça vient, moi.
Putain, mais Léo !
Vous savez, ça veut dire quoi, là, ce bordel ?
Je ne sais pas.
Putain, mais ce n'est pas possible.
Depuis quelle date existent les poèmes ?
On va demander à Stringham Pleur.
Gérard, Gérard, Gérard !
Tu as ta gueule !
Va te faire enculer, connard !
Oh là là, ça dégénère.
Ouais, Gérard ?
Stringham Pleur.
Ouais, bah écoute, les poèmes, je pense que ça remonte à l'aube des temps.
Tu peux préciser ?
Bah, je ne sais pas, l'Antiquité, la Renaissance...
Le Moyen-Âge, la Grèce antique, tout ça.
Tout ça, il y avait déjà les plus grands poètes à cette époque-là.
D'accord.
On n'a pas entendu que tu arrives, heureusement, d'ailleurs, pour avoir des grands poètes, quand même.
Non, mais attends, moi, je les ai fait sur l'antenne de Paine Radio depuis 93.
Non, mais je sais, mais heureusement qu'on n'a pas attendu
et qu'il y avait des Platons et des Dioscures et tout ça avant toi, parce que...
Voilà, quoi.
Attends, Marc.
Si ça ne te plaît pas, ce que je fais comme poème...
Non, mais attends, écoute-moi...
Écoute-moi, si ça ne te plaît pas, dans ce cas-là, tu changes de radio, c'est tout, ça va plus vite.
Mais si, Gérard, je te dis que tu es le digne représentant de la lignée des pédagogues,
c'est plutôt un compliment, je veux dire, arrête.
Bon, Poupou le mystère.
Bah, écoute, moi, ce que je peux te dire, c'est que les poèmes existent déjà depuis Jésus-Christ.
Ah, bah, depuis 1900, hein, OK ?
Non, même avant 1900.
Ah, bon ?
Parce que Jésus-Christ, il est né avant 1900.
Ouais.
Donc, c'est un cas...
Mais moi, je suis bien né avant Jésus-Christ.
Ouais, mais toi, tu n'es pas Jésus-Christ.
Non, mais je suis qui ?
Je m'excuse, mais en fait, ça existe depuis que Jésus est écrit.
Oh, on se tait derrière, on la laisse parler.
Donc, tu disais, toi ?
Ouais, donc, je pense que les poèmes ont été créés à l'époque de Jésus-Christ.
Et alors, moi, je suis bien né avant Jésus-Christ.
Non, t'es né après...
Tu ne comprends pas ce que je veux te dire, mais...
Non, non, mais de toute manière, je ne comprends pas le français.
Ah, bah, si ce n'est pas qui le dit, alors, tu le reconnais, eh ben...
Puis, celle du Sud.
Ouais.
Bah, les poèmes, ça date depuis que les gens écrivent.
Hum.
On a commencé par ça, en fait.
D'accord.
On a commencé par l'écriture cunéiforme, et ils ont fait des poèmes, tout de suite,
pour séduire leur belle pour les sodomiser.
Ouais, bah, de toute manière, on n'a pas besoin de séduire sa belle pour la sodomiser,
comme tu dis si bien.
Mais, à l'époque, si.
Ouais, bah, peut-être.
Mais, je ne pense pas, à mon avis.
Euh, Verlaine ?
Oui, bah, moi, je pense que les poèmes existent depuis très, très longtemps, quand même.
Je ne sais pas exactement depuis quand.
Par contre, je suis sûr que la poésie, elle est apparue il y a trois ou quatre ans avec toi.
D'une camille téléphonique assurée, la vraie poésie, la pure.
Bah, disons, ça m'est venu comme ça, d'en faire.
Et puis, maintenant, ça ne m'empêche pas de continuer de les faire.
Non, c'est sûr.
C'est sûr que...
Attends, Verlaine.
C'est sûr qu'au début, tout le monde me disait, bon, bah, que j'en repasse.
Bon, c'est...
Tout le monde, même Max, m'a demandé à ce que j'en repasse.
Oui, vas-y, continue, je t'écoute.
Donc, bah, là, il y en a...
Il y en a quatre pour ce soir, donc on ne va pas faire les temps sereins, non ?
Je le sais bien.
Et d'ailleurs, Gérard, si tu pouvais me permettre, moi, j'en ai fait un petit.
J'aimerais bien que tu l'écoutes à la fin, à la fin, avec les tiens, pour me dire ce que tu en penses plus tard.
Non, mais de toute manière, tu vas lire le tien, toi, en premier.
D'accord.
Et moi, je lirai les quatre miens.
Maintenant, bon, bah, écoute, je vais te le lire maintenant.
Bah, vas-y, vas-y, fais-en un tout de suite.
Les gens de l'IRC, ils ne veulent pas t'entendre.
Ah, c'est comme ça ?
Enfin !
Ah, putain !
Mais, je...
Arrête !
Gérard !
Carrel !
On l'enlève, là !
Ah, il copie, là !
Arrête de taper !
Arrête de taper avec le téléphone !
Ah, bah, voilà, tu l'as trouvé !
Ah, bah, voilà, tu l'as trouvé !
Alors, il est où ?
Eh, tu viens chez moi après, Gérard !
C'est vachement bien !
Bon, Gérard, tu fais quoi, là, oh ?
Alors ?
Eh, tu l'as coupé !
Putain, t'es vraiment un bâtard, toi !
Ah, mais c'est vraiment très beau, tes poèmes, hein !
Eh, tu viens chez moi après, Gérard !
Ta gueule, toi, va te faire foutre !
Donc, de toute manière, on ne va pas continuer, on va s'arrêter.
Eh, tu viens chez moi après, Gérard !
Va te faire foutre, toi !
Vas-y, enchaîne, enchaîne, Gérard !
Non, non, mais, de toute manière, on arrête, là !
Oh, non, non, non !
On continue, on continue, là !
Je n'ai pas attendu tout ce temps pour rire !
Gérard, tu me le gères !
Allez, je te fais une petite surprise, pour les dix dernières minutes,
j'accueille Couscous à la place de Poitiron du Sexe.
Bonsoir, Gérard !
Bonsoir, à tous !
Salut, Couscous !
Bonsoir !
Bon, alors, Couscous, depuis quelle date existent les poèmes ?
Ah, moi, je pense que ça existe depuis que les poétons existaient, disons,
dans les années 1900.
Ah, ben, 1900, c'est la date que j'ai lue.
Hum ?
Après Jésus-Christ.
Bon, Verlaine, tu fermes ta gueule !
Ah, c'est pas Verlaine, là, hein ?
Eh, s'il crie, c'est à cause des clous, hein !
Ah, c'est bon, Gérard, rentre chez toi !
Allô, c'est Couscous, là !
Ouais, Couscous !
Qu'est-ce qu'il y a ? Qu'est-ce qu'il se passe ?
Allô, c'est Merguez !
Putain, Fuldar...
Gérard, pour revenir au débat sur l'IRC,
il y a D-Light qui te demande si, comme lui,
tu es fan du poète grec Sergei Boubka.
Je connais pas.
Pourtant, il a écrit de super trucs !
Il est génial !
Il est grand, il a un grand grand stylo !
Donc, il est 2h48,
2h49,
ça y est ?
Oh oui, oh oui, oh oui !
Allô, qu'est-ce qu'il se passe ?
Allô, c'est quoi ce bordel ?
Allô ?
Oui, allô, Fede, bonsoir, t'es au standard ?
Ouais, bonsoir, c'est Couscous, ça va pas ?
Bon, Gérard, pour continuer le débat, vu qu'apparemment, tu veux pas continuer,
moi, j'ai des questions à te poser.
Il y a Izen sur l'IRC qui te demande
lequel de tes poèmes aimes-tu le plus
? Ah, c'est une bonne question, ça.
Non, ça, justement, je l'ai pas là, et j'en ai fait
quatre nouveaux pour éviter
de changer.
Donc,
je vais en faire un,
et puis après, je pense qu'on va se mettre...
Non, on se met un disque...
Non, on se met pas de disque, Gérard.
On fera la conclusion...
On finit dans dix minutes, donc...
On fera une conclusion,
donc...
Donc, alors...
T'as pas répondu, Gérard, en fait, c'est lequel de tes poèmes que t'aimes le plus
? Le mieux que j'aime,
c'est... Je voudrais
te dire « I love you », mais tu
écoutes ton « What man ». C'est celui-là
qui me touche le plus,
et que tout le monde a apprécié.
Je sais, si je peux me permettre, Gérard,
j'étais pas encore ici, mais je t'écoutais
déjà, et il y en avait un où...
Je me souviens d'une phrase, en fait, mais ça faisait
« J'aimerais te tenir la main sur le dos d'une vache ».
Non. Et je pense que dans ce poème-là,
il m'avait captivé.
Non, je vais te dire une chose que là, tu vois...
Non, je décroche, je m'en souviens.
Non, mais attends, Manu, là, j'ai jamais été lire
ce que tu viens d'annoncer,
tu peux redire la phrase ?
« J'aimerais te tenir la main sur le dos d'une vache ».
Non. Ah si ? Non. Témoin.
Non, non, non, non, non. Alors là,
je peux te dire une chose que j'ai jamais
été lire ça à l'antenne. Bon, c'est pas grave.
C'était dans un poème. C'est pas grave, c'est pas grave.
Non, mais attends, il y a un nouvel auditeur
à la place de Verlaine que t'as viré, on a son copain Rambo.
Non, mais c'est pas la peine, Manu, c'est
de l'occlusion. Salut Rambo.
Donc, alors, on va...
Allô, on m'entend ?
Salut Rambo. Allô ?
Ouais, c'est Rambo, là.
T'es bonne, Gérard.
Elle mesure 1 mètre pour 400 kilos.
C'est le Sandy !
Eh, Sandy, attends, merde !
Ok ?
Sandy !
Voilà, alors...
Allô ?
Bon, ça y est, pour l'instant,
je veux lire les poèmes. Manu, tu mets
le double son, s'il te plaît.
On m'entend bien, là, je suis au Vietnam, là.
J'entends, j'entends. Gérard, on a Rambo au Vietnam,
donc tu peux... Bah, j'en ai rien à poutre.
C'est un grand poème, Rambo.
On peut me perdre parce que je suis sur une valise satellite, hein.
Putain, mais il va fermer sa gueule, lui.
Merci.
Alors, ça s'intitule
Mon bébé. On le fait tout de suite ?
Oui, on les paie maintenant.
Bon, bah, on y va, on y va.
On devrait plutôt peut-être faire la conclusion,
ensuite tes poèmes. Non. Je pense que
c'est mieux, quoi. Non, je paie. Non, mais vraiment.
Non, mais c'est pas toi qui commandes, c'est moi.
Non, mais comme ça, il fait les poèmes avec les auditeurs,
comme ça, c'est cool. Non, mais c'est pas...
C'était juste une suggestion, quoi.
Non, mais de toute manière, on va faire...
De toute façon, Max, il vient de me dire,
Max, on fait la conclusion et après, on fait les poèmes.
Voilà, tu vois, c'est pour ça que je te dis ça.
Sinon, je te le dirai pas, on est venus me le dire.
On est venus me le dire.
Tu m'éteins ton micro et tu te la fermes.
Fais la conclusion ! Non. Conclusion, d'abord, si, si, si.
Mon bébé, fais-moi l'amour. Non, sérieux.
Putain, mais c'est moi qui commande
le jeudi, d'accord ?
Bah, tu verras avec Max après, hein.
C'est toi qui vois, hein.
Mais bon, conclusion d'abord, quoi.
Non.
Bon, s'éclate-moi les fesses.
Non, mais quand vous aurez
fini de commander...
C'est pas nous.
Bon, Rigaud, tu peux me donner
le nom de combien de personnes ?
On a perdu, là.
Si tu fais pas ta conclusion tout de suite, ils s'en vont, les gens.
On a perdu 1200 personnes, là.
Oh !
Non, non, non, non, ça, j'y crois
pas trop, non plus, là-dedans. Bah, tu verras.
Bon, donc,
mon bébé.
Mon bébé, fais-moi l'amour dans un camion.
Manu, tu fermes ta gueule !
Non, mais, bah, je sais pas
ce que t'en penses, Phil, mais moi, je pense que la conclusion,
elle serait la bienvenue. Bon, alors, vous me faites chier,
il y aura pas de poème ce soir, c'est tout.
On fait conclusion et voir.
Ok, poème d'abord, ok. Non, non, non, non, conclusion.
Conclusion, on va demander à Serignan-Fleur,
comme ça, ça va aller plus vite.
Mais non, mais attends !
C'est qui qui commande le jeudi ? C'est moi ?
Non, c'est moi.
C'est toi qui ferme ta gueule ! T'as compris ?
Tu fermes ta gueule !
Tu fermes ta gueule !
T'es bon, Gérard. Ok ?
Là !
Maintenant, c'est moi qui commande. Alors, conclusion,
il y aura pas de poème. Bah, moi, pourquoi il y a pas de poème ?
Bah, ça, c'est pas à eux de commander,
c'est à moi. Pourquoi il y aurait pas de poème ?
Donc, moi, je fais les poèmes et je fais les conclusions
derrière. Bah, tu crois pas que ça serait peut-être plus intelligent
de faire la con ? Non. Non, parce que t'as tous les auditeurs
qui vont t'alentir, ils vont pas arrêter de t'emmerder. Et après, tu vas
gueuler. Tu fais ta conclusion, tu fais vite
une torchade en 10 secondes et tu prends
5 minutes de ton temps, entre vos 55
et l'heure, pour faire tes 4 poèmes tranquilles.
Alors, string en pleurs. Ah, c'est quand même inadmissible,
ça. Ta gueule à toi !
On te l'a vu. Ta gueule !
Ouais, GG.
String en pleurs, conclusion. Oui, tu m'entends, là ?
Oui. Ok, donc, bah, je voulais
te dire en conclusion que quand je suis
dans ma Mercedes et que je suis
à fond la caisse, je m'éclate
sur un pylône et que je me fracasse
la colonne.
Quand il y a du verglas, non, je ne déraperai pas
sous le pont de l'Allemagne.
Voilà, c'était pour toi, Gérard.
Gérard, pourquoi tu vas taper
Fildar tout le temps ? Il était beau, son poème.
Allez, à suivre. Poupou le mystère.
Poupou le mystère. Moi, ce que j'ai à dire à GG,
c'est que, là, franchement, je suis vachement dégoûtée
parce que, là, les débats se passent
très mal. On lui pose des questions,
il répond pas correctement
en question. C'est vrai. Et, là,
je comprends pas, là.
Pour moi, c'était nul.
Merci, au revoir.
Après, c'est...
Attends, merci, au revoir.
Attends, c'est toi qui commande depuis quand ?
Pourquoi tu coupes saucisson à l'ail ?
Poupou le mystère.
Poussel du Sud.
Poupou le mystère.
Ouais, non, mais je suis là.
Tu restes là parce que tu me diras
ce que tu penses des quatre poèmes.
Non, mais dépêche-toi parce que j'ai une grosse envie d'aller aux toilettes.
C'est que ça contient...
Allez, Poussel du Sud.
Bon, Poussel du Sud.
Moi, je voudrais te faire une conclusion en faisant un poème.
Gérard est optimiste
rien ne lui résiste
car il a des kystes.
Ok, merci.
Verlaine ?
Non, c'est Rambo.
Rambo ?
Allô ?
Allô ?
Rambo, ouais.
Ouais.
Vous m'entendez, là ?
Ah, tu fais ta conclusion !
Gérard, il est au Vietnam.
Attends, il y a un décalage.
Non, je suis au Cambodge, j'ai changé.
Ah.
Ouais, bientôt, tu seras à Paris.
Eh, il va vite, ton hélico.
Je voulais juste dire
qu'au niveau des poèmes,
bon, je te laisse parce qu'il y a des Khmer rouges.
Il dégage.
Hop.
Santa Belgica.
Oui, Gérard, un instant,
parce que j'étais en pleine création.
Alors, eh bien, c'est très simple.
Moi, mon père spirituel,
c'est un certain J.Suren,
qui est un auteur contemporain,
plutôt temporain, d'ailleurs.
Et je trouve qu'il était nécessaire
de présenter, avec le maximum de rigueur,
ce trésor de mots français
qui est classé selon l'homophonie des syllabtoniques.
D'accord, d'accord.
OK, on a compris.
Hop.
Euh, couscous ?
Ouais, Gérard, il n'y a pas de problème.
Mais le débat, il était pas mal.
Sauf que ça gueule un petit peu trop,
mais il n'y a pas de problème.
Quand tu veux, tu viens à la maison.
OK, j'y pense.
Toi, Manu, je vais t'éclater.
Qu'est-ce que j'ai fait ?
Toi aussi, je pense que tu vas perdre comme Filda.
J'ai rien fait ?
Je pense que...
Tout à l'heure, on va discuter.
Hein ?
Rigo, combien sur l'Internet ?
On a perdu un peu.
On est quand même à 3000 et quelques.
Je demande vite fait.
3000 combien, les gars ?
3125.
C'est pas mal.
On est à 4500.
Bah ouais, mais je t'ai dit,
si tu faisais pas ta conclusion tout de suite,
ils partaient, les gens, ils sont partis.
Non, mais il y en a...
Bon, euh...
Regarde, ben regarde, regarde.
Tu vois où, un son, là ?
Là, tu commences à m'énerver.
Ça ?
Vas-y, écoute.
Attends, me prends pas pour un con.
Ouais, c'est pareil.
Ça, c'est Olivier.
Voilà, donc c'est pas moi.
Bon, ben, y aura pas de poème.
Y a pas de double son, là !
Non, non, attends, faut pas déconner.
Il te reste 3 minutes, dépêche-toi.
Y a rien, là.
Allez, allez, allez.
Poupou le mystère, elle est toujours là ?
Ouais.
Non, mais toi, t'es...
Non, mais elle est là !
Je suis là.
T'es là, Poupou le mystère ?
Ouais.
Poupou le mystère, t'es là ?
Poupou le mystère !
Oui, je suis là.
Non, c'est pas toi.
Mais si !
Non, c'est pas elle.
J'ai envie de faire pipi.
Attends, c'est un trap.
T'as un trap, ça, attends.
Me fais pas chier, toi.
Pêche-toi, j'ai envie de faire pipi.
Voilà, bravo.
Bon, Gérard, y a quand même sur IRC une conclusion de paradoxe.
Il dit que...
T'as cassé, regarde !
Oh, il a pété le standard.
Bon, je vais refaire ma conclusion de IRC, de paradoxe.
Conclusion, les poèmes de Gégé sont aussi nasses que les surprises Kinder,
que le dernier top album d'André Verschuren,
et que les Feux de l'Amour, et que Témoin numéro 1, et que Skyro très unis.
Alors là, André Verschuren, c'est pas moi.
Bon, Manu, ça suffit, s'il te plaît !
Ça suffit, maintenant !
Vous faites que du boulot de naze, là !
On fout, maintenant !
Pour les émissions de demain, comment je vais faire, moi, à cause de toi ?
Bah, attends, tu t'en prends après lui ?
Non, non, c'est toi qui a cassé le truc en baissant le truc, en cassant.
Bah, vas-y, maintenant, Gérard, vas-y.
Donc, si elle écoute Poupou le Mister, c'est pour elle, les quatre qui sont dédiés.
Donc, mon bébé.
Mon bébé, fais-moi l'amour dans un camion.
Mon bébé, fais-moi l'amour sur une voiture.
Mon bébé, fais-moi l'amour dans une niche.
Celui qui s'amuse avec les micros va fermer sa gueule et vite.
D'accord ?
Mon bébé, fais-moi l'amour sur un Magnum.
Mon bébé, fais-moi l'amour sur mon Godot.
Godzilla.
Mon bébé, fais-moi l'amour sur un Saint-Pangé.
Mon bébé, fais-moi l'amour sur une toupie.
Mon bébé, fais-moi l'amour quand tu as tes règles.
Mon bébé, fais-moi l'amour sur un Bambi.
Mon bébé, fais-moi l'amour sur une girafe.
Voilà, le premier.
Le deuxième.
Bravo.
Le deuxième, aimer.
Alors, je voudrais dire je t'aime sur une carte orange.
Je voudrais te dire je t'aime sur un trèfle.
Je voudrais te dire...
Je t'aime sur un compresseur.
Je voudrais te dire je t'aime quand ça ne va pas.
Je voudrais te dire je t'aime sur un livre.
Je voudrais te dire je t'aime sur un cheval.
Je voudrais te dire je t'aime sur une cornemuse.
Je voudrais te dire je t'aime sur un dalmatien.
Je voudrais te dire je t'aime sur un concombre.
Je voudrais te dire je t'aime sur un corbeau.
Troisième, amour.
Mon amour, je voudrais te faire des caresses sur une chouette.
Mon amour, je voudrais te faire des caresses sur une cigale.
Mon amour, je voudrais te faire des caresses sur un cormorant.
Mon amour, je voudrais te faire des caresses sur un nuage.
Gérard, excuse-moi, c'est quoi un cormorant ?
Ta gueule.
C'est quoi un nuage ?
Va te faire foutre, toi.
Mon amour, je voudrais te dire je t'aime.
Je voudrais te faire des caresses sur une...
Cigogne.
Mon amour, je voudrais te faire des caresses dans l'espace.
Mon amour, je voudrais te faire des caresses sur un chevreuil.
Mon amour, je voudrais te faire des caresses sur une chicorée.
Mon amour, je voudrais te faire des caresses sur un chouca.
Mon amour, je voudrais te faire des caresses sur un chromosome.
Le dernier.
Il s'intitule poulette.
Ma poulette, donne-moi ton amour sur un mini-tel.
Ma poulette, donne-moi ton cœur sur une platine.
Ça, je pense, en parlant de platine, c'est...
C'est au DJ.
Au DJ.
Il faut dire quand même.
Donc, ma poulette, donne-moi ton cœur sur un briquet.
Ma poulette, donne-moi ton cœur sur une carotte.
Sur une carotte.
Ma poulette.
Donne-moi ton cœur sur un fax.
Ma poulette, donne-moi ton cœur sur un radis.
Ma poulette, donne-moi ton...
Donne-moi ton cœur sur un volcan.
Pardon.
Oh, le déculasse.
Ma poulette, donne-moi ton cœur sur une assiette.
Ma poulette, donne-moi ton cœur sur un livre.
Et ma poulette, donne-moi ton cœur quand je te dis grenouille.
Voilà, terminé. Point final à la ligne.
Et on se retrouve la semaine prochaine.
Le thème du débat portera sur les jeux vidéo.
Et c'est tout.
Gérard, quand tu dis donne-moi ton cœur sur un radis,
tu parlais pour les jardiniers ?
Pierre Pout, à toi, c'est pas toi que je m'adresse.
Et pour faire plaisir à Sandy,
à moins que Rigaud, il y a peut-être une question inversée.
Oui, conclusion, la poésie est écrite par des vieux frustrés
qui devraient se pendre pour faire un minimum d'argent.
Moralité, t'en vas à la cruche à l'eau
qu'à la fin, Gérard nous les brise.
Eh ben, c'est dommage.
Très beau, dit-on.
C'est dommage parce que...
Les...
Il y a une autre question.
Une autre conclusion de Turpentine.
Le débat n'avait ni queue ni tête comme toi.
Eh ben, c'est bien.
Eh donc...
Ça s'est plutôt bien passé.
Ouais, ben...
Non, non, mais ce que toi t'as cru,
mais de l'autre côté, je peux t'assurer que c'était vraiment bien.
Donc maintenant, est-ce qu'on peut avoir...
Fildar était quand même meilleur.
Vas-y, passe-la nous.
Poupou le mystère.
S'il te plaît.
Poupou le mystère.
Poupou le mystère.
Putain, Fildor.
C'est lui.
C'est toi, Gérard, quand t'as pété le scandale.
Non, non, non, non, non.
Putain.
Qu'est-ce que tu fais, là ?
Allô ?
Elle est où ?
Ben...
On repasse l'heure directe.
Oh là là, là, là, là, là.
T'as bêté vraiment.
Putain, mais c'est...
Dégage, dégage.
Viens.
Mais qu'est-ce que tu fais, Gérard ?
Viens de là.
Mais quoi ? C'est bon, je pourrais se faire le coin.
Viens, viens.
Je veux te voir.
Allez, rappelle l'heure directe, s'il te plaît.
Attends, je vais en numéro, si tu veux.
Non, non, je te le permets.
Ça va, c'est pas toi.
Viens, viens, viens.
Bon.
Il sait même pas son numéro.
Oh là là, là, là, là.
Dépêche-toi, fais vite.
Il reste deux minutes.
Oh là là, là, là, là.
Hop.
C'est long, c'est long.
Mais t'as fait deux fois le zéro.
T'as pas besoin.
Y a pas besoin, oui.
Oh là là.
Dégage, je vais le faire.
Laisse-moi faire.
Qu'est-ce qu'il se passe ?
Ben, il arrive pas à faire son numéro au téléphone, le Gérard.
Allez, dépêche-toi.
On va pas lui dire, parce qu'il entend même pas.
Si, vas-y.
Y a Dylan qui dit qu'il a trouvé...
Il a trouvé que Gérard avait réagi avec poésie ce soir.
C'était très romantique.
Merci, Gégé, pour cet intense moment d'extase littéraire.
Sergueï Boubka n'aurait pas fait mieux.
Vas-y, Manu.
Vas-y.
Allô ?
Salut.
Viens, t'es un peu le Messire.
Putain, non, tu es...
Oh là là.
Mais j'ai rien fait !
Arrête !
Arrête, Gérard !
Ça va pas, Gérard, arrête !
Mais elle est là !
Mais qu'est-ce que t'as fait ?
T'as fait la mauvaise ligne, elle est là.
Mais qu'est-ce qu'il se passe, Gégé ?
Ben alors ?
Qu'est-ce que ça sert de t'énerver, Gérard ?
Bon, pour le Messire.
Oui ?
Ben, c'est moi.
C'est moi.
Alors ?
Alors, qu'est-ce que t'en as pensé ?
Alors ?
J'ai rien touché.
Bon, dégage, Manu.
Je prends la banque.
Dégage.
Ben, si tu veux, vas-y.
Casse-toi, casse-toi.
Ben, vas-y, vas-y, fais ton malin.
Fais ton malin.
Vas-y, tu vas bien me faire rigoler.
On va dire que c'est l'autre, là-bas.
Oh l'enculé, là.
Oh la pisse de pute.
Gérard, il est parti.
Il faut peut-être expliquer aux gens.
Je ne capte rien.
L'enculé est parti.
En fait...
Bon, on va couper ça.
Bon, alors, Gérard, qu'est-ce qu'il s'est passé ?
Il lui a raccroché au nez, fil d'arbre ?
Un machin mystère ?
Bon, on recommence.
Bon, allez, refais le numéro, mais vite, Gérard.
Vite.
Attends, laisse allumer la micro.
Allez, Gégé.
Vas-y, Gérard.
Ah, il est parti se planquer, tu m'étonnes.
Ah, putain.
C'est occupé ?
Ouais.
Ouais, maintenant, ça, c'est un occupé.
Elle ne répondra plus.
Putain, putain.
Oh là là.
Putain, putain.
Bon, sinon, moi, j'ai trouvé ça bien, quand même, tes débats, ce soir, Gérard.
Franchement.
Moi aussi, ouais.
Putain, cause de putain.
C'est dommage qu'on n'ait pas pu aller plus loin dans les jeux vidéo, mais...
Putain.
Dans les jeux vidéo, dans les jeux télé.
Putain.
Gérard, tu...
Qu'est-ce qu'il y a ?
Gérard, reviens !
Gérard !
Il est parti.
Ils sont partis en courant, dans le couloir.
Bon.
Ben, reviens.
C'était débat, on fait quoi, avec Rigaud, nous ?
On n'a pas de micro pour arriver dans le couloir.
Les gens, ils nous écoutent.
Bon, ça va, Rigaud, c'était bien le Cosmic Laser, cet après-midi, quand même.
C'était cool.
C'était bien marré.
Non, mais moi, je vais lire un petit peu l'IRC, alors...
Il n'y a plus personne, là, à l'antenne, là ?
Allô, l'IRC ?
Gérard, fais quelque chose, là-dedans, on est en train de...
Vas-y, tu mets la chanson, j'essaie de...
Ma poulette, j'y...
T'as eu une course poursuite dans les locaux de la radio,
il a failli se faire déchirer la gueule.
Dégage, toi !
Non, Gérard, maintenant, reste là, Gérard !
Arrête, c'est bon !
Let's groove tonight.
Bon, finis là, on arrête là, c'est bon, on s'en fout,
tu lui demandes en antenne, on lui demande en direct ?
Vas-y.
Il compose le numéro.
Voilà, c'est bon.
Je m'en occupe, je m'en occupe, vas-y, va te mettre en face.
Allez.
C'est là, là ?
Vas-y, Gérard.
Allez, on y va.
Vas-y, mets à ta place !
Reprends-moi mon casque, là.
Je la prends, là.
Oh là là, t'es relou, Gérard.
C'est tout au standard, Manu.
Allô ?
Oui ?
Euh, bébé ?
Ouais ?
Bon, qu'est-ce que t'en as pensé ?
Comment ?
Qu'est-ce que t'en as pensé des quatre poèmes ?
Ben, écoute, ça m'a touché énormément, hein.
Ouais, ben, t'inquiète pas, tu étais encore plus touché.
Parce que...
Putain, qu'est-ce que t'as fait, encore ?
T'es là ?
Au fil d'art !
Putain, mais vous me faites chier, allez, au fil d'art !
Hop, on...
Non, c'est le truc qu'elle fait, là.
C'est le fil d'art qui a encore fait ça.
Là, le truc, le potard qu'elle fait.
Bon, pour...
Là ?
Ouais.
Faites la fête, la grosse !
Et voilà, c'est dédié pour samedi, et on se retrouve la semaine prochaine.
Sur Femme Radio !
Sur Femme Radio, et demain, Max, le Star System, à partir de 22h !
Wouhou !
C'est le café !
== Le débat sur l'argent ==
=== Contexte ===
Ce débat occupe une place particulière dans la compréhension de cette émission. Sa clôture illutre un point clé, souvent débattu, quant à l'innocence de Gérard de Suresne sur le système autour de lui et de son émission. En effet, en din d'émission, alors qu'il identifie, très clairement, que les titres qu'il lit sont faux et loufoques, il veut lire les vrais, il n'y arrive pas. Il revient alors aux titres écrits par l'équipe. C'est une preuve absolue qu'il est parfaitement conscient de ce qu'il se passe, mais s'en acquitte de bonne grâce parce qu'il sait ce qu'il en tire, malgré le prix à payer à son niveau. Prix à relativier quand on sait l'apport de l'émission dans sa vie et que, cette même vie, il la réécrit souvent au gré d'une mémoire authentiquement traumatique.
=== Les personnages ===
=== Transcription ===
Les débats, pas de radio et pas d'insultes de Gérard.
Et voilà, donc vous venez d'écouter Manu s'il te plaît.
C'est Roudoudou avec Peace and Tranquility to Earth.
Et voilà, il est 0h32, donc bienvenue sur VN Radio.
Vous pouvez nous appeler au 0875 000 et 0803 085 000.
Et toujours sur l'IRC www.fr, il y a Rigaud qui vous attend.
Et Rigaud, si tu pouvais nous dire à peu près combien qu'on est.
Je suis là, bonsoir à tous.
On a dépassé les 2000 déjà, ça va très vite ce soir.
On est à 2543,1, c'est pas mal.
C'est beau ce que tu fais Gérard, c'est beau.
Donc j'espère que ça ne va pas faire comme la semaine dernière.
On s'échappe, la semaine dernière on était à combien Rigaud à peu près ?
Je ne sais plus, mais on n'avait pas fait beaucoup la semaine dernière.
Je crois qu'on était des...
Descendus à 3005.
Oui, mais ça va aller ce soir.
Donc à un moment donné, ça va aller.
Ça va aller, ça va aller Gérard.
On espère.
Ça va aller.
Un fil d'art.
Ça va aller Gérard.
Ça va aller, on fait le débat.
On y va Gérard, j'arrive.
On y va.
Bah oui, mais on y va.
Ton premier débat portera sur quoi Gérard ?
Sur l'argent.
Sur l'argent.
Alors la première question donc...
Vas-y, pose la première question pour les auditeurs qui nous écoutent déjà.
Alors pour vous, l'argent, fait-il votre bonheur ?
Donc voilà, et donc on va accueillir...
Merci fil d'art.
On va accueillir des gens, oui.
Donc on va accueillir Tony.
Tony, bonsoir.
Bonsoir Gégé, bonsoir Manu.
Bonsoir Tony.
Bonsoir fil d'art.
Salut.
Bonsoir.
Salut Tony.
Non, non mais...
Tu vois, il y a un problème fil d'art.
Ouais.
C'est que Tony, il faudrait que...
Permettez qu'on passe toutes les semaines.
Non mais j'ai des choses à dire, c'est pour ça.
Non, non mais attends.
103.3.
Déjà 101.
Non mais je me suis trompé parce que tu vois, j'ai rayé là.
C'est pas ça.
Ouais, ouais, c'est 101.
101.9.
101.9.
101.9.
Tony, tu ne commences pas, d'accord ?
Ok.
La suite, Tabouret, bonjour.
Alors Tabouret.
Salut Gérard.
10 demandes d'Axe, on peut écouter Fun Radio sur 95.3.
Ouais, c'est ça.
Donc Sandwich, 23 ans de tour.
Bonsoir Gégé.
102.8.
Oui, c'est ça.
Alors, tu me fais bouder, 10 demandes.
Bonsoir Gérard.
Tu me fais bander.
Ouais, bander.
Ouais, ben, non mais tu vois, Fildar.
Qu'est-ce qu'il y a ?
Non, non, attends, Fildar.
Là, il y a...
Oh, qui c'est qui a un portable ?
C'est Sandwich, mais elle n'a que ça.
Ah non.
Non, parce que les portables, c'est pitoyable.
Tony, pour l'instant, tu t'écrases.
Non, mais elle n'a que ça parce que chez elle, elle n'a pas le télécom.
Ah ouais, non mais attends.
Moi, dans ce cas-là, moi, je ne fais pas des débats avec des portables.
C'était bien prévu.
Parce que regarde, là, déjà...
Ça commence.
Je vais essayer de la rappeler, on va voir si la ligne passe mieux, OK ?
Et puis tu la reprends dans deux minutes.
Alors, tu me fais...
Bon, allez, tu ne commences pas, d'accord ?
Tu me fais bander.
Oui, je suis là.
Donc, on peut écouter, donc, à Ifto, 96.9.
Ah, tu me confirmes la fréquence ou pas ?
Oui, oui.
Ouais, bien sûr, pas dans mon cul, ma tête est malade.
On le savait, ça, Gérard.
Non, non, mais attends.
Déjà, hé, Fildar, tu me la reprends, tu la réveilles un peu, parce qu'à 19 ans...
Allez, Gérard, on y va, on y va, on enchaîne.
Après, on a...
Fildar, le prochain coup, tu écris mieux.
Oseille.
Oseille.
Ouais, bonsoir, Gégé, bonsoir.
Donc, maintenant, Royan sur 99.
Salut, Oseille, ça roule ?
Ouais, ça roule.
Et après, j'écarte...
Quoi ?
Barret.
J'écarte Barret.
J'écarte Barret, Paris, 101.9.
Bah, si tu le dis, hein.
Bah, ça va, et toi, Gérard, mon petit Gérard, comment vas-tu ?
Non, non, mais attends, je suis pas ton petit Gérard, d'accord ?
Vous allez pas me casser les couilles, maintenant ?
C'est mignon.
OK ?
Alors, première question, donc, vous l'avez entendue.
Pour vous, l'argent peut-il le bonheur ?
Ouais, ouais, ouais, oh !
Qui c'est qui commence à dire, tu peux la répéter ?
Parce que je vais pas répéter les questions 50 fois, hein.
Bon, d'accord.
D'accord.
Alors...
Allez, première question, on y va, on répond.
Bouge ton doigt, mets ton doigt dans mon cul.
Celui qui dit ça, ou celle qui dit ça, bah, commencez par la fermer, d'accord ?
Et puis, vous allez arrêter de redipler comme des porcs.
Gérard, si tu commences jamais, on fera jamais le débat, hein, donc pose la question.
Alors, première question...
Tony, tu la fermes, c'est pas toi qui commandes.
Non, mais Tony est en attente, donc il est pas là, donc vas-y, j'ai l'attaque.
Alors, première question...
Première question...
Pour vous, l'argent fait-il le bonheur ?
On va demander à Tony s'il est là.
J'ai pu en attendre, là ?
Non.
Ah, c'est dommage.
Non, t'as alors... Pourquoi c'est dommage ?
Non, non, parce que j'avais dit des choses marrantes, mais c'est pas grave.
Bon, alors, tu dégages.
Allez, hop, il a...
Retourne voir, puis le dernier...
Non, non, mais attends, j'ai rien dit, là.
Il a rien dit, là, Gérard.
Je réponds à la question.
Y a pas de souci, hein.
Je réponds à la question.
Parce que là, tu as pas commencé.
Tu passes toutes les semaines dans les débats.
J'ai des choses à dire.
Non, mais tu passes toutes les semaines dans les débats.
Tiens, oh !
C'est moi qui commande !
Bon, pour répondre à la question, moi, j'ai pas trop d'argent.
Eh, oh !
Toi, déjà.
Hop !
J'en veux pas.
Pas de problème.
OK ?
Pas de souci.
Allô ?
Ça va pas faire comme la semaine dernière.
Tu peux répondre ?
Attends.
Eh, oh !
Moi, c'est pareil.
D'accord ?
Parce que là, ce soir, vous avez pas me cassé les couilles.
Parce que sinon, je suis caléba et je me casse.
Oh non !
OK ?
Ouais, d'accord, d'accord, d'accord.
On y va.
Non, mais calme-toi, calme-toi.
Bon, alors, Tony, pour l'instant, tu réponds à la question.
Ça fait toutes les semaines que tu passes.
Ouais, mais arrête de m'agresser comme ça.
Moi, je veux...
Non, mais attends.
La semaine dernière, t'es passé.
Alors, on dirait rien de bon.
Mais non, mais s'il dit rien de méchant...
Bah ouais.
Non, mais même.
Moi, j'ai pas.
Même.
Même.
Eh, y a 24 lignes qui sonnent.
Donc, faut prendre sur les 24 lignes.
Je les ai fait sonner, les 24 lignes, moi.
Non, mais tu les as fait sonner, mon cul !
Bon, alors, moi, j'ai pas beaucoup d'argent, mais je suis heureux.
Voilà.
Hop, je les ai zappés.
Hop.
Alors, tabouret.
Ouais, moi, je pense que l'argent...
Eh, là, attends, tabouret.
Ouais.
Mais attends, Fildar, tu me prends quelqu'un d'autre.
OK.
D'accord ?
OK.
Non, non, mais...
Eh, là, ça commence à bien faire !
Alors...
Oh, bah, dis donc, Gérard, calme-toi.
Bon, Gérard, là, on va pas avancer, quoi, si tu commences comme ça, sans déterminer.
Non, mais, sans déconner, moi, je vais te dire une chose...
Sans déconner...
Bon, ça y est...
Mais, Gérard, ça fait 8 minutes qu'on attend le débat, ça commence !
Alors, tabouret ?
Ouais, bah, moi, je pense que l'argent fait le bonheur de ceux qu'on n'ont et le malheur de ceux qu'on n'ont pas.
Tu peux expliquer ?
Bah, comme disait Coluche, quoi, l'argent fait pas le bonheur des pauvres.
D'accord.
Euh, sandwich ?
Bah, écoute, moi, je crois que l'argent fait pas vraiment le bonheur, parce que c'est pas parce que t'as du fric que tu vas être heureux, quoi.
D'ailleurs, si t'as des problèmes de santé ou même si t'as pas d'amis, je veux dire, tu te méfies, quoi.
Ah, voilà !
Voilà ce que...
Oh, qui c'est qui a un portable, là ?
C'est moi, c'est moi, j'ai un petit...
Bah, c'est, euh, sandwich.
J'ai rappelé, mais c'est toujours pareil, je suis désolé.
Bon.
Là, je peux vraiment pas faire mieux, hein.
D'accord.
Euh, tu...
Tu me fais bander, là ?
Ouais, ouais, ouais.
Enfin, moi, j'ai pas beaucoup d'argent, mais je veux dire, moi, je suis heureuse dans ma vie, et puis, de toute façon, quand on est trop riche, on a plein d'hypocrites autour de nous.
Voilà.
Euh, Ozaï ?
Ouais, bah, c'est un peu ce qui m'est arrivé, moi, ça m'a fait mon malheur, parce que j'ai fait un gros héritage, et depuis que j'ai plein de thunes, et bah, tout le monde arrête pas d'essayer de me taper, parce qu'il y a ma famille, mes amis, et voilà.
La nuit, vous ?
Ouais, y a pas que moi, hein.
Ouais, bah, ouais.
Bah, ouais, hein.
Non, euh...
J'ai la carte, euh, Rigo, oui.
Y a une question sur IRC, c'est Oxip qui te demande s'il faut beaucoup d'argent pour être pauvre.
Euh, ça, je vais répondre.
Oh !
Tu sais qui veut répondre à ma place, là ?
Toi.
Non, mais, euh, faudrait peut-être...
Ton cerveau.
Attends, mon cerveau, tu sais ce qu'il te dit, toi ?
Pas grand-chose.
Il me dit, euh...
Oh, ouais, Fildar !
Fildar, on commence pas la première question avec des gens pourris, hein.
Bah non, mais c'est des gens que j'ai pris sur les 24 lignes, j'essaie d'en trouver d'autres, Gérard.
Alors, euh, Tony, pour l'instant, tu t'écrases.
Mais il est pas là, Tony, Gérard.
Il est pas là.
Alors, euh, j'ai... j'ai carte...
Marais.
J'ai carte Marais.
Euh, si tu le dis, mais moi, en fait, moi, j'ai eu le même problème que...
Je crois que c'est Oseille.
J'ai le fils de milliardaire.
Je n'aimerais pas la marque.
Et, euh, bah, il y a plein de gens autour de moi qui savent ne pas que c'est mon pognon et c'est l'or.
Bon, alors, euh...
D'accord.
T'as pas 10 balles ?
Euh...
Je peux te faire un million.
Euh, par contre, qui c'est qui a un sandwich, je pense,
qui avait posé une... qui avait répondu à la question.
Oui, c'est...
Et quand t'as des amis, t'as...
Et quand t'as de l'argent, t'as des amis.
Et quand t'as pas d'argent, t'as plus d'amis, c'est ça ?
Non, mais ce que je veux dire, c'est pas parce que t'as du fric que tu vas forcément avoir de bons amis, hein.
Non, mais...
Ouais.
Non, mais, attendez, attendez.
J'étais un peu d'accord.
J'étais un peu d'accord avec la personne qui avait répondu comme quoi on avait des hypocrites,
mais je suis un peu d'accord avec elle, c'est vrai, hein.
Bon, alors, moi...
Les gens, ils n'y aiment rien pour ton fric, quoi.
Hum ?
Non, mais, Malheur, il y a une question que...
Oh, mais, c'est quoi, là, le son, là ?
Bah, écoute, le son, il est comme il est, hein.
Il faut s'en accommoder, puis y aller, quoi, hein.
Non, mais, Gérard, excuse-moi, je peux raccrocher, hein ?
Non, non, non, non, non, non, non, non.
Gérard ?
Euh, oui, Rigo ?
Oui, à propos d'argent, il y a Yankee sur IRC qui te demande combien t'as payé pour animer les débats.
Alors, ça, ça regarde personne, et c'est tout.
Donc, sa question ne tient pas debout.
Donc, je vais répondre à peu près à la question.
Vas-y.
Donc, alors, pour vous, l'argent peut-il le bonheur ?
De toute manière, je vais répondre la question à Sandwich.
Hum, hum. Vas-y, vas-y, vas-y.
Euh, donc, moi, je peux dire une chose.
C'est quand t'as des amis, tu as de l'argent, et quand t'as pas d'argent, tu n'as plus personne.
Donc, tu te démerdes toi-même.
Ouais.
Ouais.
Hein ?
Donc, ça veut dire ?
Ouais.
Bon, allez, vous arrêtez, là, parce que vous commencez à me casser les couilles.
Tout à fait, ouais.
Non, mais ils t'écoutent. Vas-y, Gérard, continue.
Ouais, ouais, attends.
Continue ce que tu voulais dire.
Ah, ah, hum, hum, hum.
Non, mais...
Je veux dire pas, là, à ces auditeurs, c'est qui qui les a choisis ?
Ben, j'en sais rien, moi, continue.
Donc, c'est pas la peine d'essayer de vouloir me contredire.
Donc, là-dessus, quand t'as de l'argent, t'auras toujours quelqu'un qui t'aidera.
Ta gueule, toi !
Bon, alors, vous me faites chier, je réponds pas à la question.
Mais vas-y !
Non, non, non, non, non.
Non, pour l'instant, vous déconnez !
Vous avez pas à commencer comme ça, tous les deux !
Parce que sinon, je vous balance !
Ok ?
Mais arrête de gueuler, on n'a rien fait !
C'est toi qui crie tout seul, là !
Non, non, non, non, pour l'instant, qu'est-ce que tu me fais, là ?
Ben, je fais rien, je vais couper les auditeurs pour qu'ils répondent à la question.
Arrête de gueuler !
Arrête de gueuler !
C'est bon, il faut les couper.
Mais ils sont coupés !
Non, non, tu es...
Non, mais au moins ça, parce que sinon, il est minuit et demi, on tiendra pas.
Pour l'instant, Manu, tu as...
Ils sont coupés, tu réponds pas à la question, Gérard, j'y peux rien, après.
Non, Manu !
Mais crie pas, il n'y a pas besoin de crier pour parler.
Punaise, mais...
Eh, Manu, toi, je crois que ça va être pareil, hein.
Allez, vas-y.
Donc, alors, je vais répondre à Sandwich.
Vas-y, Gérard !
Non, mais attends, tu permets ?
Ben, vas-y !
Ben, ça fait qu'un quart d'heure qu'on a démarré, d'accord ?
Mais pour l'instant, ça fait un quart d'heure que tu me fais de la merde !
Ben, un quart d'heure que t'avances pas, aussi.
Ouais, mais ça fait un quart d'heure que t'es en train de me faire de la merde !
Gérard, tu peux parler du débat et arrêter de parler de l'équipe ?
Ouais, mais attends, pourquoi ?
Non, mais là, tu continues, parle du débat, on fait le débat.
Non, mais attends, Rigaud !
Rigaud, pour l'instant, il n'y a que toi qui fais du bon boulot,
les deux autres, là, pour l'instant, nous font de la merde !
Ok ?
Alors, c'est clair et net.
Ou on travaille en équipe, on fait du bon boulot,
ou on travaille pas !
Un patron, il s'énerve pas, il gueule pas !
Il n'y a pas besoin de gueuler !
Hein ?
D'accord, Manu ?
Ça y est ?
D'accord, Pildar ?
Ah, moi, je suis ok, hein !
D'accord, Gérard ?
Bon, alors maintenant, il n'y a que Rigaud qui va faire du bon boulot.
Comme d'hab !
D'accord, ok !
Vous faites de la merde, les mecs !
Nous, on fait rien !
Ouais, pour l'instant, vous me faites de la merde !
Bon, on y va, on y va, on y va, on y va, on y va !
Quand tu fais ton débat, parle pas de ce qui se passe ici,
passe plutôt aux auditeurs, à ceux qui écoutent la radio.
Alors, avez-vous de l'argent de poche par vos parents ?
On m'a demandé un tabouret !
Ouais, non, moi, je travaille, donc mes parents ne me donnent pas d'argent.
Je suis bien toute seule à mes besoins.
Ouais, mais... d'accord.
Ouais, mais quand j'étais petite, ouais, ils m'en donnaient un peu, ouais.
Ah, voilà !
Je piquais dans le porte-monnaie de ma mère.
C'est qui, celui-là, qui dit tout à fait ?
Bah, c'est vrai !
Quand elle était gamine, tout à fait, il lui donnait de l'argent.
Non, mais attends !
C'est qui, là ?
C'est qui qu'on récupère ?
Non, non, c'est...
Attends, que je retrouve...
Apparemment, tiens, je t'ai récupéré un truc.
Oui, c'est ce que j'ai déguisé.
Spécial sur l'Internet, avec...
J'ai récupéré l'adresse.
Et là, t'as des questions...
Il y a des trucs qui ont été faits, c'est sur le...
C'est pour l'euro.
Il y a un 36, un www.euro.
C'est des questions qu'ils posent sur l'agence, sur des jeunes étudiants.
C'est marqué où, www.euro ?
Non, c'est pas marqué, là, mais...
C'est là où ça a été pris.
Je l'ai récupéré, ça, sur le site de l'euro.
D'accord.
Sandwich ?
Sandwich !
Oui, oui, je suis là, Gérard.
Bon, tu réponds à la question, ou pas ?
Bah, écoute, tu m'as coupé dans mon élan.
J'étais en train de parler, je t'explique, quand même.
Alors, j'étais en train de te dire que j'étais plus chez moi,
et que, bon, bah, je travaille, mais étant petite,
moi aussi, j'avais un peu d'argent de poche, mais...
C'est pas la grosse fortune, quoi, quand même.
Hum.
Voilà.
Tu me fais bander ?
Bah, non, mes parents me donnent pas d'argent tous les mois,
mais quand je leur demande, ils me le donnent facilement.
Ouais.
Ouais.
Euh, Oseille ?
Ouais, alors, tu m'entends ?
Ouais.
Ce qui se passe, c'est que moi, j'ai fait un héritage, donc, en fait, je suis...
Bon, alors, Oseille !
Oseille, ton héritage, on n'en a rien à foutre, OK ?
Alors, tu vas avoir...
Non, non, tu vas avoir pile d'or au standard.
Attends, il répond à la question, et toi, tu t'énerves.
On n'a pas le droit d'être riche, dans le débat ?
Alors, ouais, c'est vrai.
Non, mais attends, on parle pas d'héritage !
Bah, écoute, écoute...
Je te demande, avez-vous eu de l'argent de poche par vos parents ?
Eh ben, il a eu un héritage !
Pourquoi ? Parce que t'as eu un héritage, toi ?
Eh ben, ouais.
Bah, ouais.
Eh, alors ?
C'est que là, j'en veux pas de ça !
Et maintenant, attends, je t'explique, maintenant, c'est moi qui donne de l'argent de poche à mes parents,
parce qu'ils se sentent...
Non, mais c'est ça, allez, hop !
Allez, hop, bonne nuit !
C'est sympa !
Allez, hop !
Allez, hop, Gérard, Gérard, Gérard !
Allez, hop, Gérard, Gérard, Gérard !
Ça y est, je l'ai viré, Gérard.
Non, mais là, tu vas pas commencer, toi.
Non, bah, je vais lui repiquer ses thunes, et puis il aura pu dire...
Non, non, mais tu te démerdes !
D'accord.
Eh là, vous me faites du bon boulot, parce que, pour l'instant, vous commencez à me...
À Brèges !
Comment ?
Non, elle dit, continue la question.
Non, elle dit à Brèges !
Ouais, bah, c'est un peu...
À Liège ! À Liège, en Belgique, je crois qu'elle est belge.
Oh, ouais, c'est ça, t'as raison, Manu.
Fous-toi bien de ma gueule !
Ouais, ouais, c'est ça.
Ah, le métro, deux secondes.
Euh, j'ai les cartes marées.
Non, j'ai les cartes marées.
J'ai les cartes marées, c'est vrai.
J'ai les cartes marées, vas-y.
Bah, en fait, moi, je t'ai dit, je suis fils d'Axel, de milliardaire,
et moi, en fait, je cite pas de marque,
j'envoie mes domestiques travailler à ma place, au McDo,
pour qu'ils me gagnent de l'argent de poche.
Putain, mais vous savez...
Eh, vous savez ce que c'est, un débat ?
Bah, moi, je te réponds à la question que tu poses ici.
Non, mais moi, je te demande, est-ce que tu sais ce que c'est, un débat ?
Oui, un débat, on pose une question et j'en réponds.
Ouais, et bah, pour l'instant,
t'es à moitié dehors.
J'ai pas besoin d'argent de poche de mes parents,
puisque j'envoie mes domestiques travailler.
D'accord, allez-y, allez-y, faites de la scène.
Moi, là, je dis, l'équipe va pas.
Comment ?
L'équipe, elle va pas, là.
Ouais, bah, pour l'instant, c'est vous qui allez pas.
J'ai répondu aux questions.
Euh, qu'est-ce que c'est ?
Tabouret, je pense qu'elle a répondu.
Donc, à la place de Tony, on accueille J'ai pas une thune.
Ouais, ouais, mais attends, Fildar.
Oui.
Non, non, non, non, non.
Non, non, Fildar.
Non, non, non, non, non.
Non, Fildar.
Mais pourquoi ?
Fildar, non.
Non, je te dis.
Il t'a dit non.
Tu vois, parce que là, pour l'instant,
t'as pas viré, tu l'as pas viré,
tu l'as fait prendre sur un autre nom.
Pas du tout, bonsoir.
T'es en mon cul, Tony.
Alors, c'est pas la peine.
Non, non, non, non, non, non, non, non, non. Moi, je...
Non, non, je travaille pas. Je travaille pas comme ça.
Bon, alors, on reprend tabouret, sandwich.
Euh...
Non, non, mais tu vas sur les 24.
Oui, bah oui, sur les 24. Je monte sur les 24.
Ouais, bah, tu te dépêches.
Parce que, pour l'instant, pour l'instant, je crois qu'avec Manu, j'ai dit, on fait du bon travail ce soir.
Oui, mais là, Gérard, c'est toi qui avances pas, quoi. Il l'a viré, maintenant, Tony. Alors, on y va.
Non, mais attends, pour l'instant, il reprend sur un autre nom.
Non, non, moi, je suis pas d'accord.
Je suis pas d'accord.
Gérard, il y a plein de questions sur l'IRC, donc je vais en lire une vite fait.
Il y a Kenéda qui te demande combien tu donnes d'argent de poche à Sandy pour qu'elle reste avec toi.
Alors, à Sandy, ça, ça regarde personne, donc c'est mon problème personnel, donc...
C'est un problème, quand même, alors.
Non, non, mais ça, ça regarde personne.
Ouais, mais c'est toi, même, tu dis, c'est un problème.
Ça regarde pas les auditeurs, donc, ça questionne, j'y réponds pas.
Après, Rigo ?
Quoi ?
D'autres questions, non ?
Si, si, peut-on acheter de l'intelligence avec son argent de poche ? Demande Blouder.
De l'intelligence, je pense pas, non.
Non ?
Non, après ?
Non, et je sais plus qui c'est qui me demandait combien d'argent t'avais pris dans la poche de Christine.
De Christine, alors ça, tu vois, le mec, celui qui parle de Christine, il va...
Il va faire du bonheur.
Ouais, ben, bien sûr...
En monnaie !
Donc, si c'est pour entendre des conneries comme ça, c'est pas la peine.
Donc, alors, je peux vous dire une chose, avez-vous de l'argent de poche par vos parents, donc, ça dépend des parents,
parce qu'il y a des parents qui peuvent vous donner jusqu'à 50 francs, d'autres qui vous donnent rien du tout,
donc, là-dessus, c'est des parents qui sont pas très riches.
Ben, moi, parce qu'ils veulent pas.
Ben, ouais, c'est qu'ils veulent pas, toi...
Non, mais il y a des parents qui veulent pas donner d'argent de poche à leurs enfants.
Ouais, mais ça, c'est...
Ils préfèrent qu'ils le gagnent par eux-mêmes, en faisant des petits boulots.
Ouais, mais ça, de toute manière, si les parents n'aident pas leurs enfants pour trouver quelque chose,
je pense qu'on n'y arrivera pas.
C'est-à-dire ?
Donc, pour que les jeunes aillent de l'argent, il faut quand même que les parents soient derrière pour les aider.
Ouais, mais tu vois...
Parce que si on n'a pas...
C'est peut-être que de les aider, il faut qu'ils aillent trouver un petit boulot.
Ouais, mais si on n'a pas de parents...
Ouais.
Donc, tu peux pas avoir d'argent pour les aider.
Tu comprends ?
Ouais, ouais, ouais, je comprends, je comprends, je t'écoute.
Toi aussi ?
Ouais.
Donc, si t'as des parents qui veulent te donner de l'argent, ils seront là.
Moi, je comprends pas, j'ai pas...
Ben si, ben...
Attends...
Si t'as pas de parents, ils peuvent pas te donner d'argent de poche, regarde.
Ah ouais, voilà.
Donc, ils peuvent pas t'aider.
T'es obligé de le voler.
Pareil, euh...
Non.
Quoi, dans la poche de ton ex ?
Non, non, non.
Non, non, y a pas de voler.
C'est que là, bon, ben, tu fais carrément la manche.
T'es le distor.
Non, non, non, t'es pas obligé de faire la manche comme tes gamins, que t'as pas de parents.
Attends, attends, si, si, si, si, si, si.
Tu fais des petits boulots.
Mais oui, non, non, non.
Tu livres du lait, tu t'achètes des gens.
Non, non, non, non, t'as des gens qui font la manche, je veux pas dire...
Ouais, mais on parle de l'argent de poche.
On parle pas des S9.
Les S9, ils veulent pas de l'argent de poche.
Quand ils sont dans la rue, ils veulent de l'argent pour manger, nuance.
Bon, Rigo, tu voulais rajouter quelque chose ?
Ouais, je voulais te demander comment on fait si on a des parents,
mais qui sont pauvres et qui peuvent pas te donner de l'argent de poche.
Ben, le problème, c'est que tu reviens à la manche.
Ah, tu vas faire la manche, finalement.
Ben oui.
T'as pas assez de thunes pour aller en Méditerranée, donc t'es baisé, quoi.
Voilà.
Alors, troisième question.
Vas-y.
Je te refais une liste, Gérard.
T'inquiète pas, ça arrive.
Donc, on a toujours tabouret, sandwich, tu me fais bander.
À la place de Oseille, il n'y a pas rappelé.
Oui, bonsoir.
Oui, bonsoir.
Et on a toujours G4 Marais, voilà.
Ouais.
Toujours là.
Oui, salut.
En espérant que...
T'en es sûr de ce que tu me racontes, Filtre ?
C'est-à-dire ?
T'en es vraiment sûr des noms, là ?
Ben oui.
Ouais, ben, je pense que...
Pour l'instant...
Manu.
T'as prévu, Gérard, que tu peux te dépêcher.
Non, non, mais si t'as envie d'aller pousser...
Non, non, non, non, non, non, non, non, non, non. Non. Non. Non, mais dépêche-toi un petit peu, parce que quand même, il est une heure, et si on continue comme ça, on va pas y arriver.
Attends, si t'es pas contente...
Et si vous êtes pas contentes dans ces cas-là...
Non, non, je suis très content, mais bon, tu fais du boulot.
Bon, alors, si t'es... Alors, toi, c'est qui, toi ?
T'es qui, toi, qui vient de dire ça ?
C'est un bon auditeur.
Ouais.
Qui tient rien. T'as la liste.
C'est la police, un peu, Gégé, ça va plus, là.
Non, non, mais de toute manière, ça va être Fildar. Maintenant, Fildar...
Non, c'est pas Fildar. Arrête avec Fildar.
Ok, mais vous vous calmez derrière, s'il vous plaît, c'est moi qui commande le jeudi.
Bon, la question, c'est...
Gérard, j'ai une bonne question, là, sur IRC.
Voilà.
Y a Turpentine qui te demande comment on fait pour avoir de l'argent de poche quand on a pas de poche.
Ah, tu peux acheter en fait.
Comment ?
Tu peux acheter en fait.
Mais c'est... Tu piasses dans le sac.
Non, tu peux acheter un sac.
Ouais, ben, le mieux, c'est de voler dans un sac à main.
Et c'est pas tellement...
C'est pas tellement recommandé.
Ouais, non, faut pas le faire, même, ouais.
Quoi, tu dis aux gens de voler dans un sac à main ?
Non, non, non, non, non, même... Je le déconseille.
Je le déconseille complètement.
Alors, donc, troisième question.
Est-ce que... Est-ce que vous travaillez pour avoir de l'argent ?
On va demander à Tabouret.
Ouais, ouais, moi, je travaille. Et je gagne de l'argent.
Sans indiscrétion, tu fais quoi comme travail ?
Ben, je trouve que c'est indiscret, donc...
Je te réponds pas.
D'accord. Alors, dans ces cas-là...
Non, j'ai pas envie de te dire ce que je fais. Je trouve ça indiscret.
Parce que, bon, c'est pas...
C'est pas quelque chose dont on parle à la radio si facilement.
Bon, attends. Dans ces cas-là, quand Max...
Quand Max vous demande ce que vous faites comme boulot, vous lui répondez.
Et quand c'est moi, vous me répondez non.
Non, mais...
C'est pas du tout ça.
C'est bon, Tabouret. C'est bon.
Sandwich. Sandwich. Sandwich.
J'en ai pas non plus.
Sandwich.
Tu vois comment faire ?
Je suis là, je suis là.
Oui, moi, je travaille, oui.
Et sans indiscrétion, tu fais quoi ?
Moi, je suis secrétaire dans une entreprise.
Voilà.
Tu me fais bonder ?
Ben, je travaille pas, mais voilà.
Et tu cherches quelque chose ?
Non, pas pour l'instant, d'abord.
Non, mais pour l'instant, tu t'empoutes, tu te dis...
Je touche plus par le chômage, c'est pas la peine que je travaille.
Non, attends, je... Non, euh...
T'es étudiante, à mon avis ?
Oui.
Dix ?
Euh... Dix-deux ans, ouais.
Ok.
Euh... Gérard ?
Oui ?
Sur IRC, il y a Philippe Détoubifry, le vrai,
qui te demande combien tu serais prêt à payer pour virer Fildar.
Bonne question.
Ça, j'attends toujours.
Apparemment, on devait nous trouver d'autres personnes pour remplacer Fildar, parce que...
Non, mais c'est pas le débat.
Non, mais c'est pas ça, la question.
La question, c'est combien tu paierais pour le virer.
Oh, mais moi, je paye pas, c'est pas à moi de le payer, c'est à la direction.
Ok.
Donc, euh...
J'ai carte marée, là, je sais pas quoi.
Allô, oui, je suis... Tu vois, j'ai pas besoin de travailler, parce que je suis milliardaire, en fait,
et je vis de l'argent que je place en bourse, et je comprends vraiment pas que les pauvres travaillent,
parce que c'est si facile de gagner de l'argent en bourse.
Non, mais attends, tu... Eh, tu te fous de ma gueule, à 19h, t'es...
À 19 ans...
À 19 ans, t'es milliardaire...
À 19 ans, t'es milliardaire...
Ah, oui, parce que je suis le fils d'Axel... Tu vois, je suis un fils de milliardaire...
Ouais, bah, alors, pour l'instant, tu vas fermer ta gueule...
D'accord ?
Tu vas fermer ta gueule, parce que pour l'instant, t'es en train de me dire des conneries.
D'accord ?
Comment ?
C'est quand même le fils du boss, hein.
Ça peut aller loin, Gérard, s'il y a...
Ouais, non, mais attends...
Mais attends...
Comment ?
Ouais, t'as raison.
Eh, ma mère ! Ma mère, tu sais ce qu'elle est ?
Eh, je t'en meurs, c'est une pute !
Eh, bah, la tienne, elle t'en meurt, espèce de salope !
Allez, vous me faites chier !
Ça, c'est des filles, ça...
Hop, terminé ! Je vous répondrai pas !
Oh, mais si, Gérard !
Non, non, non !
Castez-vous le plus souvent avec votre argent ! Hop !
Avant la question, Gérard, il y a une autre question de l'IRC, de Chocobo Gold,
qui te demande combien il doit payer pour avoir l'honneur ou l'horreur de te rencontrer.
Zéro franc !
Eh, Fildar !
Oui ?
Fildar !
Fildar, maintenant, tu vas prendre 24 lignes,
et tu vas te manier le cul, parce que là, tu commences à me faire du boulot de merde !
D'accord, je...
Il est zéro heure !
Il est presque une heure du matin !
Ouais ?
Pour l'instant, tu me donnes que des cons !
D'accord, bah, je vais essayer de trouver des gens intelligents, d'accord ?
Ouais, ouais !
Non, non, mais, hé, là !
Gérard ?
Oui, mais j'arrête pas de rappeler !
Gérard, depuis que t'as dit qu'on pouvait te rencontrer gratos,
ils veulent tous te rencontrer,
et il y en a un maximum qui vont venir devant la radio.
T'es énervé ? T'es énervé ?
Ouais, je suis énervé, pourquoi ?
Parce que, normalement, j'ai eu Manu !
Avec Manu, il m'a dit qu'il me faisait du bon boulot !
Attends, il fait du bon travail !
Tu t'énerves pour rien, tu réponds jamais aux questions !
Il me fait du boulot de merde !
Non, mais t'arrêtes pas, il s'en fait une demi-heure !
Mais il me fait du boulot de merde !
Ça fait une demi-heure que je t'écoute, ça fait une demi-heure que je t'entends le cul gueuler,
j'en ai rien vu !
Moi, je zappe, j'écoute pas, ce soir, y a pas d'audience !
Et alors ?
Non, c'est pas de sa faute, c'est de la tienne, tu t'énerves, tu n'arrives pas à gérer !
Tu gères pas ton débat !
Je te repasse encore la liste, une dernière fois !
Vas-y, vas-y, trouve-moi des auditeurs, et pas des...
Non, non, non, non, prends pas les mêmes, et demande pas qu'ils changent leur nom !
Poussin, bonjour !
Salut !
Voilà, merci !
On va mettre un disque après, parce que là...
De toute manière, c'est maintenant !
On va peut-être...
On va peut-être accueillir les auditeurs, et tu vas poser des questions pour qu'ils réfléchissent, bah si !
Cachez-vous avec votre argent de poche,
cachez-vous le plus souvent avec votre argent,
et on s'écoute !
On s'écoute, j'ai pas de tude pour me faire tirer l'arrêt avec des petits suisses !
Bah ouais !
Eh, c'est pas mal, parce que là, j'ai aucune fiche pour annoncer les disques,
donc vous pouvez nous appeler au 0803 085000 et 0870 5000 !
Et voilà, donc, toujours le débat de Gérard, il est 1h03 du matin,
donc vous pouvez toujours nous appeler au 0803 085000, même si ça répond pas, ce n'est pas grave,
donc, ou sinon, au 0870 5000...
Et c'est fan radio, quand même !
La radio où tu bosses, c'est fan radio !
Toujours, toujours, toujours, Rigo qui vous attend sur l'IRC www.fr !
Ouais !
Et donc, vous êtes bien sur un fan radio...
Ouais, on est 3482-4, donc on y va, on fait ça bien !
C'est pas mal, c'est pas mal !
Gérard, on fait ça bien !
Donc...
On l'écoute même pas !
Si, si, si, j'ai entendu, Rigo, 3000...
Non, mais le débat, il va bien se passer !
Ouais, mais j'espère !
Si, si !
J'espère !
Je l'espère, parce que si ça se passe mal, la semaine prochaine, il n'y aura rien !
De toute manière, comme ça va être bientôt les vacances de Noël, donc...
C'est pas le débat, ça, Gérard !
On va se mettre un peu en vacances !
On va écueillir Poussin, 20 ans de besoins, donc on peut écouter un peu de radio sur 100.9.
Poussin, bonjour !
Salut, Gégé !
Bon, allez, vous arrêtez derrière, parce que là, vous commencez à me casser les couilles !
Ok !
La suite, donc, on a toujours Tabouret, Gérard ?
Tabouret, 10 demandes d'Axe, c'est bien, parce que tu pourrais me mettre les fréquences,
Ah, si ça ne te dérange pas, Pildar !
Non, mais ce n'est pas grave, on va la trouver, vas-y !
Celui d'après, c'est qui ?
Sandwich, 23 ans de tour !
Oui, salut, Gérard !
Tu me fais bander !
Ouais, salut !
Non, mais tu peux répondre comme il faut ?
Bah oui ! Bonjour, Gérard ! Bonsoir, Gérard !
Pas à pluie !
Oui, enchanté de pouvoir enfin te parler, Gérard !
De 21 ans, Royan !
Ça fait !
Et...
Camembert !
Bonsoir, je suis Camembert, j'appelle de Chuby, j'ai 19 ans.
Ouais, et...
Ah, 19 ans ?
C'est bizarre, parce que j'ai 20 ans, moi !
Je me suis trompé, je suis désolé !
Non, mais...
C'est rien !
C'est rien, c'est rien ! Arrête de t'acharner sur lui, on a l'impression que c'est une bête fauve, c'est bon, fous-lui la paix !
Fous-lui la paix, Gérard, Pildar !
Ouais, mais attends !
Tu me donnes bien les fréquences !
Mais alors ?
Toi, t'écoches bien les noms, toi tu fais bien des fautes de français, je te dis pas, t'es gentil, quand tu vas faire de la radio, tu fais pas de fautes de français !
Alors, Camembert, 20 ans, de Chuby-Z, donc on peut écouter plein de radios sur 101.9.
C'est FM.
Hein ?
T'es gentil, quand tu dis 101.9, c'est FM, si c'est pour dire n'importe quoi, Gérard, tu les dis pas.
101, 101.9, FM.
Voilà !
Voilà, il faut être précis.
Si ça te plaît pas, c'est le même prix, Camembert.
Allez, ça recommence.
D'accord !
Et je la regarde tous les vendredis soir.
Comment ?
Je regarde ton émission tous les jeudis soir.
D'accord ! Donc, t'as tes PS ?
Bah ouais, je regarde celle-ci.
Ouais, bah...
Eh ! Eh ! Eh ! Stop ! Stop !
Y'a une chose que j'ai oubliée, pour tous les auditeurs...
Vous y allez plus.
Pour... Manu, tu me l'es mis en attente ?
Ça y est.
Donc, pour tous les éditeurs de Fun, qui écoutent à l'heure actuelle Max, le Sarc Système,
dans 10 minutes...
Vous avez Techno Max sur M6. Donc...
Et pour le moment, c'est le débat, hein. Ouais, c'est quand même ton débat, quoi.
Et on reprend le débat. Donc, cachez-vous le plus souvent avec votre argent. On va demander
à Poussin.
Oui ?
Oui, Poussin. Oui, Poussin. C'est quand tu veux, tu réponds.
Bah, qu'est-ce que j'achète le plus souvent ? Bah, des fringues, du maquillage. Et puis,
bah, c'est tout.
Ouais, ouais, ouais.
Et puis, bah, c'est tout.
Et puis, bah, c'est tout.
Et puis, bah, c'est tout.
Et puis, bah, c'est tout.
Et puis, bah, c'est tout.
Et à boire. Qu'on boive en boîte.
Et puis, des clopes.
Et puis, des clopes.
Et puis, des clopes.
D'accord. T'achètes pas mal de trucs, elle, quand même, hein.
D'accord.
D'accord. T'achètes pas mal de trucs, elle, quand même, hein.
Ouais, ouais.
Ouais, ouais. Non, mais, de manière... Je répondrai moins.
Ouais, ouais. Non, mais, de manière... Je répondrai moins.
Ouais, ouais. Non, mais, de manière... Je répondrai moins.
D'accord.
Euh, t'as bourré.
Ouais, bah, moi, j'achète à bouffer, parce que... Il faut que je me nourrisse et mon
loyer, là, aussi. Il faut que je paye mon loyer. Donc, tu vois, j'ai pas trop de fric
pour m'acheter des fringues, ni du maquillage, ni...
Non, mais, attends. À 19 ans...
... acheter à bouffer, enfin...
T'as bourré. T'as bourré. T'as bourré.
Ouais, ouais.
T'as bourré.
Oui.
Pour l'instant, t'es étudiante, toi ?
Non, pas du tout. Je travaille. Qu'est-ce que tu crois ? C'est pas parce qu'on a 19
ans qu'on est étudiant, hein.
Non, mais, eh... Tout à l'heure. Tout à l'heure.
Non, mais, eh... Tout à l'heure. Tout à l'heure.
Maintenant, je me démerde. Mes parents m'ont foutu dehors. Donc, je me démerde. C'est
tout.
Ouais, non, mais, attends. Attends. T'as bourré. T'as bourré. Ça, c'est... C'est
un truc que...
Quoi ?
Je veux pas parler. Donc, dans ces cas-là, t'avais qu'à... Quand je t'ai demandé :
"Avez-vous de l'argent de poste par vos parents ?"
Ouais.
Donc, t'aurais pu me répondre correctement à la question.
Bah, je t'ai répondu correctement. Je t'ai dit que je travaillais, que mes parents
m'en donnaient pas.
Hum-hum.
Et...
Ouais.
Et...
Ouais.
Ouais.
Ouais.
Ouais.
par vos parents.
Donc, tu auras pu me répondre
correctement à la question.
Je t'ai répondu correctement. Je t'ai dit que je travaillais,
que mes parents ne m'en donnaient pas.
Non, non, mais ce n'est pas ce que je voulais faire.
Bon.
Donc, tu as bourré, toi, alors ?
Oui, je t'ai dit.
Il faut que je me nourrisse.
C'est tout.
Ça part de là. Mais vas-y, passe à autre chose.
C'est lourd.
Oui, mais ça, c'est...
Fais gaffe, elle va tomber du tabouret, si tu comptes.
Non, non, non, non, non, non.
On rééquilibre la mortelle.
Non, non, mais attends. Pour l'instant,
son truc,
il est foireux. Elle va réfléchir et on la reprendra.
Non, non, non, non, non.
Non, non, il n'est pas foireux.
Mais vas-y, ne te l'amende pas, ce n'est pas grave.
Non, non, mais ne t'inquiète pas,
j'ai connu ta situation.
Oui, mais c'est bien, je te l'amende pas, passe à autre chose.
Ok. Sandwick ?
Ben écoute, moi, déjà, j'ai mon loyer à payer.
Et puis, en deuxième,
j'ai des petits cadeaux à mon copain,
du moins, mon nouveau petit copain,
parce que je suis très attentionnée, voilà.
D'accord.
Tu me fais bonder ?
Ouais, ben, j'achète des disques,
des casquettes de théo,
ben tout, quoi, les vêtements, tout ça.
Ouais.
Par à lui ?
Ouais, ben moi, écoute, je dépense ma thune, quand même,
pour sortir un petit peu, aller dans les boîtes,
boire des coups, tout ça.
Et, ben, quand même, il faut reconnaître que,
je ne sais pas si tu vas encore poser ton boîte, mais ça,
écoute, quand même, un maximum de fric.
Ouais, mais...
Ben, voilà.
Non, mais attends.
Quand t'es jeune, tout ton argent de poche,
il passe dans le compot.
Attends, quand t'as pas de fric,
quand t'as pas de fric,
comment tu peux faire pour aller en boîte ?
Mais si, j'ai de l'argent de poche,
même si j'en ai pas beaucoup,
moi aussi, j'ai le droit de me déchirer un peu, quoi.
Donc, voilà.
Mais je viens de te poser la question,
si tu n'as pas de fric,
quand tu n'as pas d'argent,
comment tu fais pour aller en boîte ?
Ben, tu...
Par exemple, j'ai des mecs qui bossent...
Oh, le dernier, vous pouvez la fermer !
Tu connais, par exemple,
des mecs qui bossent dans une radio
et puis ils te font rentrer gratos à la boîte
et ils te payent des coûts ?
Bon, euh...
Pas appuyé !
Ben, non, mais c'est un exemple,
tu me demandes, moi.
Je sais pas, cherche-toi,
tu connais des gens de la radio,
donc peut-être que tu peux rentrer gratuit
et boire à l'oeil, j'en sais rien, moi.
Non, non, attends...
Je sais pas si t'as quand même remarqué,
le prix des consos
et le prix de l'argent en boîte,
c'est quand même cher,
tu peux pas dire le contraire.
Non, mais si !
Le prix de l'argent, c'est inabordable.
Le prix de l'argent...
Non, mais attends...
Je veux tirer 100 balles,
ça t'en coûte 500,
je veux dire, c'est quoi, ces histoires ?
Attends, tu payes combien pour aller en boîte ?
En général, vous aurez autour de 300 balles,
ça dépend de la boîte,
mais vous aurez autour de 300 balles, quoi.
Ben ouais...
Si tes parents te filent 50 balles
et que la conso, c'est 50 balles,
tu peux même pas boire dans la boîte,
tu dois être obligé de boire dehors.
Voilà, exactement.
Camembert !
Je fais une collection
et donc ça me coûte très cher
d'acheter des choses pour la collection.
En général, j'achète...
Ouais, parce que je collectionne les ampoules.
Alors j'achète beaucoup d'ampoules
pour ma collection.
Non, mais attends, Camembert,
t'as bien compris la question ?
Oui, je te dis,
j'achète des ampoules pour ma collection.
Gégé, pour une collection d'ampoules,
c'est pas une lumière, hein.
Non, mais pour un cent,
je crois que t'es en dehors de la plaque.
Non, mais attends,
je te dis que j'achète des ampoules.
Je pense...
Non, mais attends,
t'achètes des ampoules pour quoi faire ?
Ben, je fais collection.
T'es grillé, toi, ou quoi ?
Non, attends, je suis grillé pour un cent,
c'est toi qui es grillé.
Non, l'auditeur est grillé.
Il est grillé complet.
C'est toi.
Ben, dis-donc, c'est dis-donc, c'est...
C'est toi qui es grillé
parce que tu réponds pas
à la question correctement.
Bon, tu veux que je te dise quoi ?
Que j'achète des disques,
que je veux au ciné...
Attends, c'est qui, là ?
C'est Camembert.
Attends, Camembert...
T'as fermé ta boîte à Camembert.
Tu as pas de poutre de ma gueule,
tu vas répondre correctement
à la question.
Je vais te foutre de ta gueule, putain.
Il y a pas de putain, d'accord ?
D'accord.
On dit moment de travail,
OK, Tony ?
Ah, non, non, c'est pas toi.
Non, non, c'est pas Tony.
Non, c'est pas moi, Tony,
je te promets.
Bon, ben, attends, je vois...
Attends, c'est la voix de Tony.
Tony, il a une voix de canard.
Non, de toute manière,
n'ayez crainte,
j'ai l'impression que ce soir,
vous avez envie de me faire chier.
Et toi, c'est pas grave.
Qu'est-ce que tu fais ?
C'était quoi la question, déjà ?
Parce que j'ai un peu oublié.
Non, mais attends, toi, pour l'instant,
c'est pas toi que je m'adresse.
Moi, ce que je fais,
c'est que je m'achète à bouffer
et, bon, je me paye des vêtements.
Tu fais des petits cadeaux.
Oui, des cadeaux à 100 euros.
On me demande combien ça te coûte
de l'Adidas tous les mois.
De l'Adidas tous les mois,
pour l'instant,
je n'en trouve pas dans les magasins.
C'est ça qui m'emmerde.
Tu veux le faire importer en France, non ?
Parce que si tu n'en trouves pas en France,
eh bien...
Attends, toi,
je vais te faire importer
une voiture, toi.
D'accord, c'est cool.
Sinon, en parlant de petits cadeaux,
tu fais bien des petits cadeaux à Sandy
ou des trucs comme ça, non ?
Ah oui, mais ça, Sandy, c'est différent.
Bah non, c'est là où tu dépenses ton argent.
C'est quand même dans le débat.
Non, mais attends, Sandy,
c'est différent.
Sandy, c'est ma femme.
Donc, à une femme,
tu as le droit d'y faire ce que tu veux.
Toi, par exemple,
est-ce que tu fais des cadeaux à ta femme ?
Non, jamais.
Non ?
Non.
T'es un peu vache.
Bah ouais.
Moi, jamais.
Même pas.
Moi, j'aimerais bien avec des tresses.
Même pas.
Ou des chaussures compensées.
Je ne sais pas.
Filder, fais gaffe,
parce que tout à l'heure,
tu vas te prendre un café dans la tranche.
Non, j'aimerais bien les tresses à ma copine.
T'as même pas essayé
d'y acheter un petit bouquet de fleurs
à ta copine.
Rien, rien, rien.
Je suis un rat.
Putain, t'es un rat d'un.
Eh ouais, j'ai plein de filles,
mais je garde tout pour ma gueule.
Je suis un rat.
T'es un rat d'un, Rigo.
Oui, il y a Desesperado
qui te demande
combien t'as acheté samedi.
Zéro franc.
Ah bah ouais, on le savait.
Ah si, ah si.
Ah.
Ah si, trois francs.
Prix de gros.
Ah bah non, trois francs.
C'est dans le sentier, non ?
Euh, Manu.
Ah, j'ai rien mis.
Alors là, j'ai rien fait.
T'éteins ton micro, tu bosses.
Quoi ?
Trois francs, c'est quoi ?
Pourquoi trois francs ?
Trois francs, c'est le prix d'une lettre.
Ah !
Il est malade !
Il y a Yannix qui te demande
trois francs, ça fait combien en euros ?
Alors, trois francs en euros,
alors là, je peux pas lui répondre.
50 centimes, c'est la moitié.
Ouais.
Non, c'est 7 francs 50 l'euro.
Non, c'est 6 francs 60 l'euro.
Donc ça fait, ça fait 3 euros.
Bon, j'ai un sondage sauf frais, sinon,
concernant l'argent.
À la question, avez-vous de l'argent,
15% des personnes répondent
oui,
38,654% répondent des fois,
127% répondent 1,
et 2% répondent j'aime pas, j'ai rien.
C'est bien, si c'est même pas bas,
qui reste chez eux.
Ils y sont, je crois.
Donc, pensez-vous,
pensez-vous que sans argent,
pensez-vous que sans argent,
la vie serait plus dure ?
On va demander à Poussin.
De quoi ?
De quoi ?
J'ai pas entendu la question,
j'ai pas entendu la question,
j'étais avec Fildar.
Ah, t'étais avec Fildar.
Je vous demandais de se réveiller un peu,
parce que, Gérard,
si tu peux parler bien devant ton micro,
par contre, ce serait super sympa.
Pensez-vous que l'argent serait plus dur ?
Pensez-vous que sans argent,
la vie serait plus dure ?
Bah ouais, c'est clair.
Donc, tu peux préciser ?
Bah, je peux préciser, en effet.
Bah, l'argent, en fait, c'est matériel, quoi.
Comment ça ?
Eh bah, ça sert à vivre,
sans ça, tu peux pas avoir une maison,
à manger.
Voilà, quand l'argent, t'es pas le bonhomme,
il contribue.
Ouais, mais sans argent, donc,
tu fais quoi, alors ?
Tu fais rien.
Bah, sans argent, t'es à la rue, c'est clair,
t'es sous les ponts.
Hum, d'accord.
OK, je vois à peu près ce que tu veux me dire.
Tabouret ?
Ouais, bah, moi, je pense que sans argent,
la vie serait géniale.
Y'avait pas d'argent, en fait, du tout.
Donc, t'aurais pas besoin de payer pour avoir les choses,
t'aurais les choses naturellement.
Non, mais attends.
Attends, tabouret.
Oui ?
T'as vraiment compris le sens de la question ?
Oui, oui, j'ai compris.
Je veux dire, si l'argent n'existait pas,
bah, t'aurais pas de problème du tout
pour acheter les choses,
puisque t'aurais rien à acheter.
T'aurais même pas à faire le geste,
tout sera à toi.
T'en fous ?
Non, mais attends, je crois que, là,
tabouret, ça m'étonnerait que tu comprennes ma question.
Euh, sandwich ?
Ouais, Gérard, je trouve que, déjà,
la vie est assez dure comme ça.
Déjà, rien qu'avec du fric.
Alors, si on en avait pas,
je crois que c'est la question.
Ah, enfin !
Une qui répond bien à la question.
Elle a un portable, c'est pour ça que t'as...
C'est pas moi, hein ?
On n'y peut rien, je suis désolé.
Le sandwich, c'est avec un portable ?
Oui.
Ah là là, ah là là !
Non, j'avais bien précisé, lors des débats,
pas de portable !
Bah oui, je suis déjà passée plusieurs fois,
j'avais pas de portable avant,
mais là, je suis désolée.
Ouais, mais...
C'est pas tellement aujourd'hui, hein ?
Ah ouais, mais, dans ce cas-là,
t'essayes de voir...
Tu demandes à...
à Fildar qui te rappelle
sur une cabine téléphonique, parce que là...
Non, mais là, j'ai l'air...
Non, mais attends, là, dans ton portable...
Non, mais attends !
Attends, sandwich ! Là, pour l'instant,
dans ton portable, on entend ma voix.
Oui.
C'est agréable, quand même.
Alors là, moi, ça me plaît pas.
D'accord ?
T'essaies de trouver une cabine téléphonique
et tu dis à Fildar
où qu'on peut t'appeler.
C'est impossible.
C'est impossible, Gérard, là.
Ouais, ben, si.
Y a rien qui est impossible.
Gérard, sur Yanty, y a Yanty qui te demande
comment tu fais sans argent pour payer ton portable.
Alors, sans argent,
ben, de toute manière...
Euh...
Une fois que la carte
était à mon nez, ben,
je la renouvelle pas.
Alors, tu me fais bander.
Ben ouais, ben, c'est clair, quand on a pas d'argent,
on peut pas s'en sortir, mais...
Si on a la volonté de réussir,
et de travailler,
c'est sûr qu'on peut en gagner facilement.
Sondier, t'es grillé.
Non, c'est pas Sondier, tu vois.
C'est pas Sondier, là,
qui est au téléphone.
Donc, t'as tout pour celui
qui dit que c'est Sondier.
Parce que pour l'instant, Sondier, elle est en train de...
Elle fait quoi, Sondier ?
Pour l'instant, Sondier, elle t'emmerde.
Mais ils ont rien dit, c'est pas grave.
Non.
Alors, pas à lui.
Ouais, ben, écoute, bon, moi, je suis tout à fait d'accord avec lui.
Je pense que, effectivement, sans argent, la vie est plus dure.
Ça, je crois que c'est clair, c'est acquis.
Par contre, ce qu'il faudrait savoir,
savoir si c'est inné, d'ailleurs,
c'est, est-ce qu'avec de l'argent,
la vie est-elle plus molle ?
Moi, je pense que c'est plutôt à ça qu'il faudrait s'intéresser.
Je voudrais savoir ce que t'en penses.
Non, mais, je te demande si, pour vous,
pensez-vous que, sans argent, la vie est plus dure ?
Tout à fait, tout à fait.
Mais est-ce qu'elle est plus molle si t'en as, quoi, avec ?
Attends, on te me dit, la vie sera plus dure,
même que t'ailles avec de l'argent ou pas ?
Parce que, je reviens,
je reviens à une question.
Est-ce que,
pour, je ne sais même plus la question
que j'avais répondue, de manière,
voilà, pour vous, l'argent fait-il le bonheur ?
De manière, je reprends les questions,
donc, c'est à peu près
à la question numéro un
que tu veux répondre, toi.
Non, ce que je voudrais savoir, en fait, c'est que tu parles de la vie est dure,
est-ce que toi, t'es dur pour de l'argent, quoi ?
Non, non, non, non, non, attends,
tu deviens dur si on te donne de l'argent ou pas ?
Non. Non ? Tu restes mou ?
Non, mais moi, de manière,
avec de l'argent, de manière,
t'iras partout. Sans argent,
t'auras rien. Et de manière,
je reviens à la première
question, pour vous, l'argent
fait-il le bonheur ? De manière, je ne sais plus
qui c'est qui m'avait posé
la question, la question
est simple. De manière,
quand t'as de l'argent, t'as des amis,
et quand t'as pas d'argent,
tu n'as personne. Et ça,
c'est un truc qui me dégoûte,
c'est bien ça.
Ça, c'est bien ça, parce que
quand t'as de l'argent, tu as tout le monde
qui vient te voir, qui vont venir te dire
« Ah, bah oui, tiens,
je réponds tout après. »
Rigaud, oui ? Bah non, continue de répondre.
Non, non, vas-y, vas-y.
C'était juste Mulder, le vrai,
sur l'IRC, qui te demande
si tu penses que sans argent, t'aurais pu téléphoner
tous les soirs à la fin de ta cabine.
Ah, bah ça, de manière, vu que
c'est un numéro vert, tu peux téléphoner,
téléphoner comme tu veux.
Il n'y a pas de problème, même avec
une carte ou qu'il te reste une unité,
tu peux appeler le 0875000,
que si tu vois que ça sonne occupé,
tu vas taper le service et t'insistes.
Et Gérard, est-ce que tu penses que c'est la monnaie
qui dirige le monde, c'est la monnaie qui dirige la Terre
et qu'on ne peut rien y faire ?
La vie, c'est comme ça, on n'a pas tout ce qu'on veut, mon gars.
Qu'on le veuille ou non, quoi.
De toute manière, maintenant, il faut...
Non, mais...
Non, mais il y a des trucs qui...
qui sont assez durs à l'heure actuelle,
c'est que maintenant, sans argent, tu ne peux rien faire.
Donc toi, tu penses qu'il faut arrêter de compter
à mon barrette et compter...
Si tu n'as pas de caillasse, t'es un chien, hein ?
Non, mais même...
Si tu n'as pas de thune, tu ne vaux rien, c'est clair.
Mais même, c'est pas parce que tu n'as pas de thune
que tu ne vaux rien.
C'est quand même beau, la vie, quoi.
Viens voir le docteur, n'aie pas peur.
Le docteur Doc, il n'est plus là.
Tu viens d'avoir 15 ans,
intéressant, quoi.
Arrête tes conneries, Filder, s'il te plaît.
Ah, il fait chaud, hein ?
Non, il est grave.
Pour l'instant, Filder, lui...
Lui, il ferait mieux de se taire.
Camembert, Camembert, pourquoi ?
C'est un passement de jambe sur le bit de flambe, hein ?
Comment ?
C'est un passement de jambe sur le bit de flambe.
Non, non, d'accord. Alors, Camembert, c'est terminé pour toi.
Non, non, pour l'instant, tu viens de répondre
à côté de la plateforme.
J'ai compris la question, effectivement.
Je pense que si on n'avait pas d'argent,
moi, sans argent, je ne pourrais pas tâcher
puisque je ne pourrais même pas avoir un téléphone
puisqu'il faut déjà l'acheter avant de pouvoir faire le 0800.
Non, non, non, non, non, non, non, non, non, non, non, non.
Le téléphone, tu dois l'acheter.
Non, tu n'as pas besoin d'acheter un téléphone.
Le truc,
une chose
qu'il faut bien se dire dans sa tête,
tu prends une carte,
pour prendre une carte téléphonique
et avec une carte téléphonique,
tu peux avoir,
tu peux l'avoir, le numéro.
Parce que...
Pour avoir une carte téléphonique,
il faut l'acheter,
même si tu n'as pas d'argent.
Il faut l'acheter, même si tu n'as pas d'argent.
Il faut l'acheter, même si tu n'as pas d'argent.
Et s'il ne reste plus qu'une unité, il faut déjà l'acheter.
Non, non, non, non, attends, le 0803-08-5000,
il est gratuit.
Donc moi, je peux te confirmer,
moi, je l'ai déjà fait plus d'une fois,
avec une unité.
Oui, mais je suis d'accord.
Non, non, mais attends, tiens mon verre,
pour un instant, tu me laisses répondre.
Je réponds à ta question, on est bien d'accord.
Avec la carte, avec une unité,
tu peux appeler toute la nuit,
jusqu'à temps qu'on te réponde.
Je suis d'accord, mais pour appeler,
il faut déjà avoir une unité.
Et pour avoir une unité,
il faut déjà avoir acheté une carte.
Et pour avoir acheté une carte, il faut avoir de l'argent.
Bon, dans ce cas-là,
t'essayes de voir si t'as des bons amis.
De toute manière, les amis,
il faut les compter sur les 5 doigts d'une main.
On est d'accord, Camembert ?
Nous sommes d'accord, mon petit Gégé.
Donc, moi, pour l'instant,
j'ai que 3 amis.
Donc, sur 3 amis,
je peux m'en sortir.
Mais oui, mais moi, j'ai pas d'argent,
donc j'ai pas d'argent.
Donc, je peux pas me faire passer de carte.
Mais non, mais attends,
t'as des voisins ?
Oui, mais non, je suis SDF.
Non, mais attends, tu te fous de ma gueule, là, ou quoi ?
Non, non, je t'appelle d'une cabine.
Bah, la carte, je l'ai trouvée dans le nom de la cabine.
Ah, il a du bol, quand même.
Il a quand même un peu de bol, ce mec.
J'ai peur qu'il me demande qui sont tes amis.
Qui sont tes amis ?
Mes amis sont...
Je donnerai pas les noms à l'antenne.
Non, mais tu donnes pas les noms.
Non, mais je sais pas, ça peut être une voisine,
ça peut être un copain,
un copain d'école, j'en sais rien.
Non, non, je donne pas les noms à l'antenne.
Mais c'est pas des noms, ça, de dire que c'est ta voisine ou un copain d'école.
C'est pas les noms, c'est de dire ce que c'est.
Non, non, mais j'ai trois amis,
et ces trois amis-là, j'y tiens.
Atos, Porto, c'est Aramis, non ?
Voilà.
Tu peux me donner
la petite fiche, là ?
Ah, pour le disque ?
Donc, pose la question.
C'est la combien ?
La sixième.
Ah, encore quatre.
Je taquine. Vas-y, pose.
Alors, avoir un portable
avec ou sans argent,
peut-on y arriver ?
Et on va s'écouter.
Si quelqu'un veut gagner de la thune
à ma place,
c'est OK.
Avec des cacahuètes en plus.
Donc, vous pouvez toujours nous appeler
au 0803 085000 et 0870 5000.
Et toujours lire
c'est www.fr.
Et pour les Belges,
0033 147 259 50.
Et on se retrouve tout de suite après.
Et voilà, donc, vous venez d'écouter
un remix qui a été fait
par un auditeur, donc,
deux sur moi, donc...
Qui se vend sous le menton, je te rappelle.
Donc, je sais pas qui c'est qui a fait ce remix.
On sait pas non plus que ça se vend sur les marchés au puce.
Ouais, c'est ça.
Et donc,
qu'est-ce que je voulais vous dire d'autre ?
Donc, le premier disque, c'était
si quelqu'un veut gagner
de la thune avec ma
place, c'est OK.
Donc, avec des cacahuètes en plus.
Donc, pour l'instant,
vous pouvez toujours nous appeler au 0803 085000
et 0870 5000.
Et toujours lire
c'est www.fr.
Rigo vous y attend.
Voilà, et ça cartonne grave du fait que le débat s'est calmé.
Il y a beaucoup plus de gens.
On a dépassé les 4000 déjà.
On est à 4122, moins en racine de 3.
4000, un 4, un 1.
4000, un 1.
4122.
Racine de 3 qui vaut à 4 quand même.
Non, non, 4122.
Donc,
alors, qu'est-ce que je voulais vous dire d'autre ?
On va peut-être faire un petit sondage, non ?
Un petit sondage, alors.
Combien dépensez-vous d'argent par mois ?
Donc, 50%
dépensent plus de
100 000 euros.
Donc, pour l'instant, l'euro,
on n'y est pas encore.
Oui, mais ça a été cherché sur le site de l'euro.
C'est pour ça que c'est en...
1 euro.
D'accord, Régo.
Attends, il y a le métro, là.
Je m'en fous.
20% dépensent moins de 3 francs.
Ça, c'est pas beaucoup.
Donc, ça, je ne sais pas.
25% veulent être payés
pour répondre à la question.
Ils vont se faire foutre.
Que dalle.
5%
pensent que Gérard de Suren
gagne de trop.
Alors, ça...
Hop !
Qu'est-ce que t'en penses, toi ?
Poubelle !
Qu'est-ce que t'en penses, Gérard de Suren ?
Poubelle, c'est des conneries.
Tu crois que tu ne gagnes pas assez ?
Ça, c'est pas ton problème.
C'est pas ton problème, c'est mon problème.
Est-ce que t'aimerais être augmenté, alors ?
Ça, tu peux le dire.
La direction écoute.
Ça, ça ne regarde personne.
Si j'ai besoin de demander quelque chose,
je passe par mon chef.
Moi, je te dis, pour ce que tu fais,
je donnerais beaucoup plus.
Je te donnerais beaucoup plus d'argent.
Toi, pour l'instant, tu fais déjà ton boulot.
Je suis prêt à donner
la moitié de ma paie, si tu comptes.
Pour l'instant, donne...
Attends, attends...
C'était pour blaguer, vas-y.
Non, non, non, non, non, non, non.
Mes genoux.
Gérard de Suren fout.
Pensez-vous que l'argent est important ?
Donc, 60%
ne savent pas à quoi ça sert.
C'est ça, à quoi l'argent ?
En fin de compte, ça sert à manger.
Donc, 20%
préfèrent l'art.
Alors là, je ne vois pas le rapport
avec l'argent.
Bah si, ils préfèrent l'art que les gens.
L'argent.
Bah, dans ces cas-là,
30% n'ont jamais répondu.
Alors, est-ce que l'argent
fait le bonheur ?
Donc, c'était la question...
C'était la question, la question,
la question, la question...
1.
Alors, donc, 50% ne savent pas
ce que c'est le bonheur.
C'est dommage, parce que le bonheur,
ça n'arrive pas qu'aux autres.
Ça peut arriver à tout le monde dans la vie.
Et c'est simple.
Et il y en a, il y en a qui se moquent
parce qu'ils n'ont pas encore trouvé
leurs chaussures à leurs pieds.
N'est-ce pas, chef ?
Allez, hop !
Oh, tu l'as cassé, hein !
Tu l'as cassé, hein !
On va te mettre un peu de...
On va te mettre un peu de sucre, hein !
On va te mettre un peu de sucre sous les pieds.
Ah, ça va donner un...
Pour que tu trouves la chaussure, on va te mettre du sucre.
Ne t'inquiète pas, tu vas la trouver.
Tu vas voir.
Je pense qu'avant...
D'ici...
D'ici le...
5 ou 10 ans, ça sera bon.
Non, d'ici le 2-3 janvier,
tu auras quelqu'un de sûr.
Tu verras.
Tu verras.
Tu trouveras ton bonheur.
Gérard, tu me dis,
il y a Yankee qui te demande si le bonheur, pour toi,
c'est pas de te payer un cerveau.
Non. Moi, mon bonheur, je l'ai maintenant.
Je suis tranquille.
Ah, t'es insortable ?
Non, mais moi, j'ai mon bonheur.
Moi, j'ai pas eu...
Moi, j'ai...
J'ai trouvé la chaussure à mon pied.
Ouais.
Donc, le chef, il va la trouver pour le 2-3 janvier.
Coupe-toi les ongles, quand même, des pieds.
Non, non, mais...
C'est des corps, à ce niveau-là.
Non, non, mais faut qu'il essaye de voir.
Tu mets des chaussures en transpiration ?
20% n'ont pas d'argent.
Ça, c'est sûr que...
Là-dessus, on peut rien faire.
Et 30% ne comprennent pas la question.
Alors, là...
Ils sont cons, parce que c'est quand même simple.
Parce que l'argent fait le bonheur.
Le bonheur, c'est l'argent, c'est tout.
Ouais, non, mais...
Ils ne comprennent pas la question, donc c'est pas grave.
Bon, on n'a pas d'argent, ça, c'est sûr que...
De toute manière, avec...
Si t'as pas d'argent, de toute manière, tu peux rien faire.
De toute façon, c'est la conjoncture.
Voilà.
Avec Patel.
Donc, on va...
La conjoncture qui vit.
Donc, on va récupérer Poussin.
Allô ?
Ouais, Poussin.
Ouais, Poussin, ouais.
Donc, tabouret.
Ouais, toujours là.
Sandwich.
Toujours là aussi.
Tu me fais bander.
Toujours là aussi.
Parapluie.
Galopos.
Et Camembert.
Je suis dans ma cabine, c'est ça.
C'est bon.
C'est quoi, là ?
Donc, Camembert, s'il repasse avec...
Non, mais c'est pas Camembert, c'était une fille.
Je sais pas si t'as remarqué, mais t'as quatre nanas, quand même.
Quatre nanas.
T'as quatre nanas, gamin.
C'est parce que ça groove.
Ça groove grave, là.
Ça prend la couche.
Tu vois, elle écoute de la musique, en plus.
Faudrait peut-être qu'elle arrête aussi.
Tu vois, ou tu me fais bander, t'arrêtes ta musique.
Elle brandit, là.
Voilà.
Donc, avoir un portable...
Elle est chouette, en plus.
Merci, je peux poser la question ?
Vas-y.
Bon, oui.
Avoir...
Gérard ?
Attends, il pose la question, Camembert.
Vas-y, Gérard.
Vas-y.
Avoir un portable, avec ou sans argent, peut-on y arriver ?
Oui.
On va demander à Poussin.
Moi, je pense que, déjà, quand on achète un portable, il faut avoir de l'argent.
Et quand on vend un portable, il faut...
Bah, il faut investir.
Et que ça se réfléchit, quoi.
Parce que, déjà, ça rapporte, quoi.
Ouais, mais tu peux aller plus loin dans...
Bah, pour m'analyser ?
Bah...
C'est vrai, c'est une analyse.
Bah, aller plus loin, euh...
Non, mais tu...
Hé, Fildard.
Tu coupes la personne qui s'amuse à dire ça, et tu coupes ton micro quand je parle.
D'accord.
Je vous rends de ça.
Tu devrais le savoir, de toute façon.
Le dictateur.
Alors, euh...
Donc, euh...
Pour toi, Poussin.
Ouais.
Bah, moi, j'ai répondu.
Ah, t'as répondu ?
Bah, oui, moi, je pense que...
Je sais pas, avoir un portable...
Je sais pas, il faut investir...
Je sais pas, ça s'investit, quoi.
Non, mais attends...
Ça s'est réfléchi.
Non, mais attends.
Par exemple, si quelqu'un te vend un portable...
Ouais.
Tu...
T'achètes une carte ?
Une carte ?
T'achètes une carte, euh...
Sans abonnement.
Bah...
Bon, c'est...
Hé !
Attends, Poussin.
Hé, celui qui s'amuse derrière à dire des conneries, arrête !
Allô ?
Parce qu'elle est avec ses copines, Poussin, c'est pour ça, quoi.
Non, non, non, c'est pas Poussin, attends.
Non, t'es pas mort !
Non, moi, je suis toute seule, moi.
Attends, Pilsard, tu...
Pilsard, tu me fais du bon boudon ?
On avait comment...
On avait...
Bah, c'est impeccable, vas-y, je vais...
Ouais.
Ouais, c'est impeccable.
Donc, t'as bourré.
Moi, j'ai pas fait une réponse.
Réponds-moi !
Bah, vas-y, Poussin.
Bah, moi, je dis que quand on a un téléphone, il faut investir, voilà.
C'est pour ça que tu m'interromps ?
Ouais, t'avais déjà fini, alors, Poussin, hein.
Ouais, bah ouais, d'accord.
Ok.
Ah, d'accord.
Euh, t'as bourré.
Derrière, les mecs, vous fermez vos gueules.
Ok.
Merci.
Ouais, bah...
T'as bourré.
Ouais, bah, moi, une fois, j'ai gagné un portable sur Fun.
Ouais.
Et, euh...
Et, en fait, quand j'ai reçu le dossier, les abonnements étaient trop chers.
Donc, j'ai pas pris, quoi.
Non, non, mais attends, attends.
Et, de toute façon, mes amis m'ont dit qu'ils m'appelleraient pas sur un portable, c'était trop cher.
Alors, t'as bourré.
Je vais te dire une chose.
Ouais.
Que lorsque tu gagnes un portable...
Ouais.
Sur Fun Radio...
Ouais.
Normalement, la mise en service, c'est gratuit.
Oui, la mise en service, oui, mais tu payes tous les mois un abonnement, et moi...
Et alors, bah, dans ce cas-là, si t'as pas envie de payer d'abonnement, tu reprends, tu fais une chose...
Ouais.
T'en gagnes un tous les mois.
Tu retournes là où le portable, tu l'as eu...
Ouais.
Et tu demandes à avoir une MobiCard.
Ouais.
C'est clair, net, précis ?
C'est la pub, ma...
Hein ?
OK.
Ouais, ouais.
Bah, je ferai ça, ouais, avec mon dossier.
Ouais.
OK.
D'accord ?
Ouais, mais enfin, merci quand même à Fun de m'avoir offert un portable.
Y a pas de quoi, y a pas de quoi.
Et tu l'as gagné quand, par Fun Radio ?
Oh là là, y a, je sais pas, six mois.
Ouais.
Ouais, c'est ça.
Ah, c'est pas mal, hein.
C'est pas mal.
Ouais.
Bon, fil d'or.
Hop.
Je peux même pas participer.
Non, non, toi, tu t'écrases.
Ah, super.
Toi, tu t'écrases, tu fais ton boulot.
Ouais, bah, je veux faire.
Hein, OK.
Euh...
Tu me fais bander.
Merde.
Merde ?
OK, bah, t'fais refoutre.
C'est bon pour...
Tu me fais bander, tu me...
Tu me prends quelqu'un d'autre.
OK.
T'as rappelé ?
Ouais, bah, écoute, c'est clair qu'il faut avoir de l'argent pour avoir un portable potable, quoi.
Donc, moi, ce que je te conseille, c'est le Tattoo.
C'est un peu moins cher.
C'est tous les trucs genre Tattoo, Tamtam, Cobi.
Oui.
Parce que tu vois, bon, alors, après, le problème, c'est que tu ne peux pas que ton numéro passe à l'antenne.
Je crois que tu connais le problème.
Sinon, bah, tu peux...
Tu prends un téléphone avec un fil et puis tu tiens une rallonge.
C'est des merdes.
Euh...
Bah, tu tiens un câble, il n'y a que ça à faire.
Si t'as pas de thunes pour avoir un sans-fils...
Non, mais attends, tu vois, le Tattoo, c'est pareil.
De quoi ?
Parce que le Tattoo...
Non, non, mais attends, attends, attends.
Attends, je vais te répondre par appui.
Le Tattoo, d'accord, on...
Moi, j'ai eu des problèmes avec.
Mais j'ai été forcé de faire changer mon numéro.
Hein, t'es...
Ouais, je me souviens, ouais.
Donc, t'es au courant ?
Yes.
Hein ?
Do you know...
Do you know speak English ?
Yes, I want to talk to you in the ass.
Yeah.
Yes.
Yes, I want to explore...
Yeah, yeah, yeah.
Ah, non.
Ah, non.
You want to talk to me in the ass ?
Non, je...
Euh...
Déjà, je peux te dire une chose.
Il faut que tu mettes une pile dedans.
C'est vrai.
Ouais, une pile, ça coûte pas trop cher, c'est bon.
Euh...
Ouais, mais...
Vu les piles qu'on a dedans, c'est pas évident.
Si tu reçois beaucoup de messages que t'es une star,
c'est sûr, les piles, elles se vivent rapidement, quoi.
Dites-le moi en position vibrante, en permanence, dans la poche,
tu vois ce que je vais dire ?
C'est sûr, ça se vive.
Hum-hum.
Ah ouais.
Non, mais, te dire, le tatou...
Ouais.
Le tatou avec la pile, si personne t'appelle,
donc, il va s'éteindre à une certaine heure que tu programmes,
il va se rallumer à la même heure.
Ouais, Gérard, sans vouloir te vexer,
c'est pas...
Ni le débat, c'est pas les tatous ni les portables, quoi.
C'est la thune.
Ouais, mais...
Donc...
Donc, j'ai bien répondu à ta question, par appui ?
Ouais, impeccable.
Camembert ?
Pardon, impeccable.
Ouais, on aime mieux ça.
Camembert ?
Oui, ben moi, en fait, je pense qu'on peut avoir un portable sans avoir l'argent,
parce que j'étais dans la rue, parce que je fais le def,
et puis il y a un camion qui est passé,
et puis il y a une caisse qui est tombée,
et puis il y avait plein de portables dedans.
Non, mais attends, là, pour l'instant, Camembert,
t'es en train de me dire des conneries,
Alors si c'est pour continuer à dire des conneries. Non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non, non.
Gérard, Gérard, sur l'internation, on te demande de répéter la question parce qu'ils n'ont pas entendu.
Alors, avoir un portable avec ou sans argent, peut-on y arriver ?
Ok.
Alors, septième question. D'après vous, l'euro sera-t-il plus efficace que le franc ?
Ça, c'est une bonne question.
On va demander à Poussin.
C'est dégueulasse.
Je n'ai pas entendu la question.
Oh !
Est-ce que l'euro est quoi ?
Est-ce que l'euro sera plus efficace que le franc ?
Non, moi, je pense que non. Parce que déjà, pour les personnes âgées, ça va être compliqué.
Et le temps qu'on assimile tout ça, il nous faudra bien, je ne sais pas, au moins cinq ans.
Non, mais déjà, déjà, il faut se dire une chose.
Ouais.
Avant que tous les autres répondent.
Moi, je peux vous dire une chose, que l'euro, pour l'instant, c'est prévu pour là, 2000, pour 1999.
Donc, ça ne sera que les pièces.
Les billets seront prévus qu'en l'an 2000 ou 2002.
Ben, vas-y, continue !
En l'an 2000 ou 2002.
Donc, maintenant, j'ai vu des pubs.
Il paraît qu'on peut...
On peut garder même la carte bancaire.
Les petits dessins animés, là, à la télé, c'est ça ?
Ouais.
Des trucs.
Ouais.
Ils peuvent...
On peut garder...
Par exemple, t'as une carte bancaire, tu vois, une carte bleue.
Ouais.
Et tu pourras payer avec ta carte bancaire.
En franc.
En franc ou en euro.
Et comment je fais pour choisir ?
Avec ma carte bleue, il y aura un bouton dessus ?
Non, non, mais...
Je sélectionne euro ou...
Non, non, ça sera là, au magasin, où tu iras.
Gérard ?
Oui, euh...
Si on regarde ici, on me dit que l'euro, c'est quand t'as bien mangé.
Non, non, non, non.
Ça, ça n'a rien à voir.
Et on te demande si l'euro sera plus fort qu'elle le paie.
Non, ça, je ne réponds même pas.
C'est Zeewee qui demande ça.
Ouais, ben, Zeewee, je n'y réponds même pas à sa question.
Pas de politique.
Donc, poussin.
Ouais.
Donc, pourquoi ?
Ben, pour moi, c'est une source d'emmerde, quoi, parce que ça ne sert à rien.
Déjà, l'avantage, c'est que ça va être une monnaie européenne.
Et moi, je pense que, déjà, moi, déjà, ça me fait chier parce que ça ne sert à rien, voilà,
quoi.
Les personnes âgées, ça va, ça va...
Franchement, les personnes âgées, ça va leur faire chier, quoi, tant qu'elles affluent
tout ça.
Elles vont crever, donc...
Voilà, quoi.
Tu sais, qui c'est qui dit que les personnes âgées peuvent crever, là ?
Je n'ai pas dit qu'elles peuvent crever, j'ai dit que...
Ah, c'est dégueulasse, Sam.
C'est dégueulasse.
Mais non.
Non, non, non, mais attendez, attendez, attendez.
Il faut bien se dire une chose, que l'euro, ça va emmerder tout le monde.
C'est que là, ça ne sert à rien.
Et ça, ça va, je dis, emmerder plus les personnes âgées.
Le tabouret.
Oui.
Donc, pour toi ?
Moi, je pense que c'est génial, l'euro.
Et moi, j'attends vraiment une monnaie mondiale.
Ce n'est pas que pour l'Europe, c'est vraiment pour le monde.
Je ne sais pas, ça paraît le mondiaux, je ne sais pas, le périod.
On ne s'emmerderait plus, au fond de terre, à changer les monnaies.
Ce serait la même monnaie partout, pareil.
Non, mais de toute manière, l'euro, tu vas être obligée de changer, hein ?
Oui, non, mais je suis d'accord, mais...
En euro, par exemple.
Mais tu vas être obligée de changer.
Tu vas être obligée de changer le franc contre l'euro.
Oui, bien sûr.
D'accord.
D'accord ?
Il y a quelqu'un qui se fait tirer sa caisse, hein ?
Tu me fais bander.
Non, elle est partie, tu me fais bander.
C'est pour ça que je voulais t'annoncer.
Donc, ta sandwich, quand même, Gérard, ne t'oublie pas.
Puis tout à l'heure, elle est là, elle attend.
Ben, sandwich.
Ben, merci, quand même, ouais.
Tu as répondu à la sixième ?
Ben non, je n'ai pas répondu, mais bon, ce n'est pas grave.
Non, non, mais attends, je...
Non, elle veut...
Non, non, non, attends.
Avoir un portable avec ou sans argent, peut-on y arriver, donc, pour toi ?
Ben non, pas pour moi, non.
Non ?
OK, septième.
Merci.
Septième, ouais.
Ouais, donc, je voulais...
Ouais, mais attends, il faut préciser les gens qui restent.
Ben oui, ben, c'est marqué.
Ben ouais, mais si tu me dis...
Si je fais tout le monde et que tu ne me précises pas qu'il y a une personne qui n'a pas répondu,
il faut me le dire, hein.
Ben oui.
Non, c'est alors sandwich.
Ben, écoute, moi, pour moi, au niveau de la manifestation qu'elle finit, elle parlait, là.
Moi, je suis un peu...
Je suis un peu...
Comment dire ?
Je ne suis pas vraiment d'accord, parce que je crois que ça va être trop tard, de toute façon.
La manifestation, elle ne changera rien, hein.
Non, mais même, de toute manière, l'euro, là, il arrive dans moins de 15 jours.
Oui.
Donc, juste après les fêtes de...
L'arrêt de vous ?
Ah, c'est le 1er janvier, l'euro ?
L'arrêt de vous ?
Ouais.
1er janvier, là ?
Le 2 janvier.
2 janvier 99, t'auras les pièces.
On va faire comme toi, on va payer notre dinde en euros, là.
Non, non, non, tu vas faire les fêtes de fin d'année, si tu veux, avec le fond normal.
Ah, là ?
Et au moment de...
Le 2 janvier, juste après les fêtes de fin d'année, tu vas avoir de l'euro.
Mais là, par contre, il ne faudra pas mélanger, par exemple...
C'est un bordel, hein.
Non, mais attends, regarde.
T'as déjà des euros ?
Non, non.
Je prends 5 francs.
Moi aussi, j'en ai.
Tu vas avoir des euros en plus.
Et là, je ne sais pas, parce que...
Des zéros ou des euros ?
Oh, tais-toi, toi.
Non, il faut savoir.
Tais-toi, toi.
Tu l'ais, toi.
Bah, OK.
Non, je ne sais pas, parce que moi, j'ai une pièce, là, je ne sais pas, d'où qu'elle sort.
Il faudrait que je voie si c'est pas un euro ou pas.
Non, mais c'est un genre de pièce d'emprunte.
Mais il y en a déjà, des euros, actuellement ?
Non.
Ben, je pense.
Gérard, il y a Turpentine qui te demande si la vie sera moins dure avec l'euro.
Euh, non, je pense qu'elle sera pareille, hein.
Ouais, c'est la même chose, c'est de la monnaie, de toute façon.
Ouais, mais même, elle sera aussi dure, hein.
De toute manière, en fin de compte, c'est pas pour nous que ça va être le plus dur.
Ça va être pour les personnes âgées, comme certaines personnes m'ont dit.
Ouais, tout à fait, tout à fait.
Ouais.
Ça va être le plus dur, ça va être pour les personnes âgées.
Il faut les tuer à la naissance.
Ouais, non, mais attends, il faut les tuer à la naissance, et si on vous tue, vous, à la naissance,
bande de cabs.
Gérard, sur IRC, il y a Daf qui me dit que le masque de Zorro, il est déjà sorti, hein.
Bon, ben, attends, lui, il est carrément en dehors de la plaque.
Après, Sandwich, donc, à la place de Tu me fais bander, on a Roblochon, 19 ans, de Brest.
Salut, Roblochon.
Salut.
Voilà, donc, il peut répondre.
Ouais, Roblochon, je t'écoute.
Ben, ouais, je sais pas, tu peux répéter la question, parce que j'ai pas bien écouté, là, en fait.
Eh, putain, mais merde !
Il est au standard avec moi, GG, merde.
Non, mais attends.
Non, moi, quand je suis...
Gérard, arrête de tourner comme ça, tu fais mal à la tête, t'as vu ?
Ah, le portable qui vient, là.
Ouais, le portable...
En plus, il y a quelqu'un...
En plus, il sonne, ben, je vais essayer de gérer le portable, Gérard, vas-y, pas la Roblochon.
Alors, Roblochon, je t'écoute.
Non, mais attends, tu peux répéter la question, parce que j'ai...
Alors, d'après vous, l'euro sera-t-il plus efficace que le franc ?
Ben, ouais, je sais pas, peut-être.
Ouais, ouais, ouais, ouais.
Hum ?
Par rapport à d'autres pays, ouais, ça ira mieux.
Euh, Camembert ?
Euh, non, Camembert, attends, 5 minutes.
Sur IRC, il y a Sardine qui te demande, avec l'euro, est-ce qu'il va falloir changer les billets du Monopoly ?
Ben, pour l'instant, les billets ne sont pas prévus.
Donc, les billets sont pas avant l'an de...
Pas avant 2002.
Donc, qui commence pas à nous casser les burnes ?
Ben, il y aura que des pièces au début.
Au début, oui.
On aura des pièces de 5000 balles ?
Non, ça sera des pièces... Je sais même pas...
Des pièces de voiture, des pièces de moto ?
Non, euh, donc...
Donc, Camembert ?
Non, parapluie, Camembert, il est parti.
Alors, parapluie ?
Ouais, ben, écoute, moi, ce que je peux te dire, c'est que l'euro, ça marchera mieux en Europe.
Et que, si t'es en dehors de l'Europe, donc, par exemple, en France, ben, il vaut mieux utiliser le franc.
Hum.
Par contre, ce que je peux te dire, c'est que ça va poser des problèmes, parce que, tu vois, ça va plus te faire des contrôles.
C'est-à-dire que, bon, je prends un exemple, faut pas que tu t'énerves, imagine, tu vas aux putes te faire sucer, ça coûtait 100 francs.
Hum.
Maintenant, il va falloir que tu viennes avec de la monnaie.
Parce que, t'imagines la galère, les putes, elles vont se travailler avec des sacs entiers de monnaie.
Parce que, 100 francs, ça fait quoi ? Ça fait 15 euros et des centimes, tu vois ?
C'est clair.
Et, t'imagines, les putes, elles vont passer leur temps avec des tonnes et des tonnes de monnaie.
Ouais, avant...
Oh, oh, oh, derrière, vous le laissez parler.
Avant, quand j'allais pécho une red bat kiff, c'est 100 francs.
Là, pareil, ça va plus faire des contrôles, c'est pas possible, ça va être trop une galère.
Ouais, tu m'étonnes, maintenant, on va avoir plein de pièces dans les poches, et voilà.
Mais, ouais, mais, mais, attends, attendez, attends, attends, attends, reblechons, reblechons.
Ouais.
Je vais calmer tout le monde.
De toute manière, s'assoyez avec des pièces ou des billets, de toute manière, on sera toujours emmerdés.
Mais, on sera toujours bien sucés, ça c'est clair.
Ça c'est clair.
Mais, t'imagines, les putes, elles vont se trimballer avec des sacs en deux pour se trimballer la monnaie, quoi.
Mais, tu dis pas putes, c'est ce que tu dis.
Ah, pardon, les péris, pas péris.
On dit maman travaille, ok, on passe péris.
Gérard, attends, sur l'URC, il y a Mulder, le vrai, donc le vrai, qui te demande si l'euro fera de toi un homme riche.
Non.
Non, pourquoi ?
De toute manière, même avec de l'euro, tu pourras pas être riche, c'est pas facile.
Mais dans quel sens ?
Non, mais ça serait impossible, tu peux pas être riche avec de l'euro, ça c'est impossible.
De toute manière, ça va être un débat que je pense qu'on...
Ah, on va le faire, ce truc-là ?
On le fera l'année prochaine.
Si, si, tu l'as déjà fait l'année dernière.
Ah, je pense qu'on l'a cassé.
On a déjà fait un débat sur l'euro.
Ah, je m'en souviens.
Comme si j'y avais participé, je m'en souviens.
Mais t'as pas fait sur l'EP, par contre.
Ah ouais, c'est vrai.
T'as fait sur l'euro, mais pas sur l'EP.
Euh, Vasquerie.
Oui, bonsoir, je suis Vasquerie, j'ai 21 ans, j'appelle de Lyon.
Ouais, ben, on le sait, j'ai la fiche...
Ouais, ben, je t'écoute.
En fait, moi, j'ai de la famille en Italie.
Ouais, mais t'as pas une vache qui pleure ?
Je suis pas t'excité.
Oh, c'est rien, ouais !
T'as pas une vache qui pleure ?
Tu m'as vanné, tu m'as vanné.
Mais par contre, oui, donc j'ai de la famille en Italie, donc je voyage beaucoup.
Et c'est clair, quand je passe au change,
parce qu'il faut changer l'argent,
ben, je perds beaucoup.
Tandis qu'avec l'euro, je perdrai moins.
Le voyage sera plus abordable.
Par contre, c'est un aspect négatif,
parce qu'en Italie...
Hé, là, attends.
Vache qui rit.
Hé, la salope !
Qui est en train de se prendre son pied.
Arrête !
Et par contre, je vais saluer
un petit Lyonnais qui travaille à la radio
le matin de 6h à 9h.
C'est M. Babart !
Parce qu'il nous écoute,
et il me dit à chaque fois...
À ce temps-là, il écoute, c'est sûr.
C'est con, parce qu'on ne lui sait pas le débat.
Non, oui.
Ouais, ben, on se calme après, Bart.
Il va vous laisser, il va vous réveiller
demain matin, entre 6h et 9h.
Euh, on se calme derrière !
Pour revenir au débat,
il y a Perforas sur l'IRC
qui te demande comment...
Le vrai ?
Ouais, le vrai, aussi.
Et, putain, il y a de la célébrité ce soir.
Comment est-ce qu'on pourra jouer pile ou face avec l'euro ?
Eh, c'est pas con.
Ah, ben, alors là, déjà,
il faudrait que j'aille d'une pièce d'euro
pour essayer de savoir d'où
est le côté pile ou face.
Donc, huitième question.
Bon, parce qu'après, on va attaquer
le deuxième débat.
Oh !
Ouais, mais ça y est, pour moi, t'as fini.
Attends, je voulais juste ajouter
que, ben, l'euro, tu vois,
qu'en Italie, un euro, ça vaut 6 000 lire.
Non, ça vaut pas 6 000 lire,
ça vaut 6 francs, 6 francs 50.
C'est pas en Italie, c'est pas en Italie.
Oh, mais, mon dieu !
Un euro, ça vaut 6 000 lire italienne.
T'en fous de ton cul !
Eh, moi, t'en es une salope !
Attends, attends, attends !
Mais, c'est un mec, ça.
S'il vous plaît, s'il vous plaît !
Un peu de calme !
Non, ça y est, c'est terminé.
Non, mais attends, j'ai pas fini. Maintenant, tu me laisses parler.
Oh, si je veux !
Erreur, je peux te poser une question ?
Oh, ta gueule, elle est la tienne !
Non, mais calme !
Donc, tu me laisses...
Tu me laisses parler, Gérard ?
Non, t'accouches, parce qu'il a déjà eu...
Donc, en Italie, un euro, ça vaut 2 500 lire.
Et donc, tu passes de 2 500 à
un, donc tu y perds.
Quoi ?
Attends, attends, je prends des notes, je fais des divisions.
En Italie, un euro...
Gérard, prends des notes, merde !
Tu fais une tournée en Italie, après.
Alors, un euro, ça fait...
Non, non, laisse tomber, laisse tomber, laisse tomber !
Mettez-vous de l'argent !
Un euro...
Mettez-vous de l'argent aux autres !
Bon, ça y est, ça y est, ça y est, ça y est !
Oh !
253 couronnes.
Non !
Gérard, assieds-toi, assieds-toi, frappe pas, file d'un.
3, 2, tu marques, ok ?
Voilà.
Oh, merde !
Et sinon, Gérard, il y a Yannix sur l'IRC qui te demande
comment on fera pour retirer de l'argent
quand ce sera en euros, vu que là, on tire
100 francs, c'est un billet, mais...
En euros, on va tirer des pièces ?
Ah, voilà. Voilà la question
que j'attendais. Enfin, une bonne question sur l'IRC !
Il y a que toi qui parraille bien,
pour l'instant, Rigo.
C'était une question de Yannix.
Le vrai Yannix.
Mais ça y est, Gérard,
arrête de me faire des signes, je sais ce que je fais.
Alors, donc, pour...
Bon, ça y est, bravo !
C'est le tel à bien travailler !
Bravo, Rigo !
Merci, les mecs.
Bon, faut s'appeler les Blancs, hein.
Donc, pour l'instant, les billets,
ils sont prévus
pour 2002.
Donc,
par distributeur,
je sais pas si t'auras les pièces, t'auras toujours
les billets normaux. C'est faux.
Quoi, c'est faux ?
Ouais.
C'est grave.
Pourquoi c'est faux ?
Bah, je sais pas, c'est toi qui pose la question.
Ah non, moi, j'ai pas le micro allumé, hein.
Bon, enfin, bref.
Mettez-vous de l'argent.
G, G, G, G, G, G.
Ok.
Je vous écoute.
Ouais, c'est par rapport à ce que les billets
et les pièces, c'était en 2002.
T'es juste comme un héros.
Attends, toi, la salope,
tu vas te faire baiser par
quelqu'un d'autre, Gérard.
Oh, qui t'en cul.
Bah, moi, je t'emmerde.
Gérard, je te pose une question.
Vas-y.
En fait, je voulais te demander, tu me dis, à partir de 99, on va avoir des pièces en euros.
C'est pour ça, je le dis, parce qu'elle a pas donné son prénom.
C'est pour ça, ouais, c'est pour ça.
Ouais, bah, faudrait peut-être préciser. Vas-y, je t'écoute.
Excuse-moi, excuse-moi, Gégé.
En fait, je voulais te demander, tu vois, par exemple, dans les téléphones,
dans les cabines, il y a des téléphones à pièces.
Non, non, depuis maintenant, non.
Maintenant, c'est des cabines à cartes.
Ouais, bah, disons, dans les péages, dans les billards,
dans les baby-foot, il va falloir payer en euros, maintenant.
Ah bah, oui.
Et ils vont faire comment ? Ils vont changer les baby-foot ?
Ils vont changer les pièges ?
Non !
Les pièges, ils vont acheter des jetons.
Non, non, non, non, non.
Les pièges, elles seront de la même taille, en fait.
Non, non, non, non.
Ce qui va se produire, et ça, là, je pense que je suis pas assez informé dessus.
Faudrait voir avec des personnes des champs de café
que là où ils ont les plus peur les billards et les baby-foot ou autres,
donc, pour savoir comment ça va se passer avec les pièces en euros.
Oui, alors, Rigaud ?
Oui, il y a Benichou, le vrai, sur l'IRC, qui donne un petit sondage sauf presse.
Est-ce que l'euro sent mauvais ?
23% des gens ont répondu non.
38,894% disent oui quand il sort de la Lyonnaise.
Et 86,70% disent oui quand il sort de la poche de Gérard.
Ouais, bah, ça...
Merci, merci, Rigaud.
Bravo.
Le truc, je vois pas du tout...
Je vois pas du tout le rapport avec les questions.
On est combien ? On est combien, là ?
On est à 4, là.
On stagne autour de...
Ça va, toi, Phil ?
Non, on est 4 dans le studio.
Toi, t'as ton micro et...
Ça tourne autour de 4 500, quoi.
On stagne un peu, mais c'est déjà énorme.
4 500 ?
Ouais.
Ça a monté par rapport à tout à l'heure.
Ouais, mais c'est un peu mieux que la semaine dernière, parce que la semaine dernière...
Je demande combien on est.
4,5 et 2,0, j'ai dit.
4 528, toi.
Ah, bon.
Ah, 2 et...
On n'est plus que 4 522, maintenant.
Non, Gérard, on va faire la conclusion, là, parce que c'est 2 heures.
D'accord ?
Ben, non, on peut se...
Ah, ben non, attends.
Si on veut faire l'autre débat, on va jamais arriver à 3 heures.
On arrête à 3 heures, donc on va faire la conclusion, quand même.
Ben, attends, pour l'instant, c'est toi qui commande.
Ben, attends, depuis quand t'es passé chef, toi ?
T'es passé chef ?
Non, mais je suis pas passé chef, je te demande si on peut faire la conclusion.
Non, mais attends, pour l'instant...
Eh, c'est moi qui commande.
C'est moi qui commande.
C'est moi qui commande.
Ben, dis ta question.
C'est moi qui commande, Gégé.
Alors ?
Conclusion.
Les femmes devraient-elles payer leur mari ?
Attends, on va demander à Poussin.
Poussin !
Oui !
Les femmes devraient-elles payer leur mari ?
Ouais.
Pourquoi elles devraient payer leur mari ?
Ah, je te pose la question.
Ben, non.
C'est les mecs qui payent leurs femmes, quoi.
Ils les entretiennent.
Ah, d'accord.
C'est normal, parce qu'une femme, elle est censée faire la cuisine.
C'est les mecs qui le disent, ça.
Hum ?
Alors, voilà, quoi.
C'est les mecs qui entretiennent les femmes.
Moi, c'est comme ça, quoi.
Et tu crois qu'on va continuer à vous entretenir ?
Ben, non.
Ça rêve, là.
De toute façon, maintenant, les femmes, elles sont égales aux hommes.
Alors, je sais pas, moi.
Ah, non, non, non, non.
Attends, Poussin, Poussin.
Bon, attendez, attendez, attendez.
On va répondre à ces conneries, là, Gérard.
Attendez, attendez, attendez.
Mais c'est pas macho ?
Mais dis-tu que ça, Gérard ?
Bon, Poussin.
Attendez, Gérard.
Gérard va répondre.
Attendez.
On laisse...
On va demander à Tabou.
Ouais, je vais répondre juste derrière.
Gérard, Tabouret.
Ouais, ben, manquerait plus que ça, encore, qu'on paye les hommes.
Hum ?
Sandwich.
Des fois, ouais, si je pouvais payer le mien pour qu'il ferme sa gueule, je le ferais.
Attends, qui c'est qui vient de dire ça ?
C'est Tabouret, Tabouret.
Tabouret.
Sandwich.
Sandwich est parti, Gérard.
Son portable est mort.
Ah, ben, d'accord.
C'est quoi, là, ses conclusions, Gérard ?
Non, non, c'est pas la conclusion, c'est...
Gâteau, désespère pas, ça va arriver, hein.
C'est la dixième.
Ça va bien, alors.
En notion ?
Ben, moi, je pense que ouais, parce que, vu qu'elle nous font chier toute la journée,
ça serait à peu près normal, quoi.
Puis, ouais...
Attends, attends.
Hé, derrière, derrière, vous vous taisez ?
Ah, les filles.
Hein, Tabouret et Poussin, toutes tes...
Ouais, ça me vaut les gueules, un peu.
Oh, tu restes poli, tu...
Tu restes poli, Robleson.
Ouais, on parle pas comme ça aux salopes.
Bah, toi, le salope, tu fermes ta gueule.
Ouais, excuse.
Ok ?
Ouais, tu fermes ta gueule, pas de ta mère.
Ok, cochonne.
Oh !
Bon, Robleson.
Ouais.
Robleson.
Robleson, tu dégages ta conclusion, je la veux pas.
Non, mais c'est pas Robleson qui dit...
Ouais, tu dégages, salut.
Hop, le Robleson, il...
Ça sent pas bon, là.
Il pue, voilà.
Parapluie.
Ouais, bah, écoute, moi, je suis plutôt dans le style gigolo,
donc me faire entretenir par des vieilles cochonnes de 50 ans
qui sont pétées de thunes, ça le fait.
Non, mais attends.
Attends, attends.
Parapluie.
Ouais.
Hé, les femmes de Bretel, payez leur mari.
Bah, justement, moi, je te dis, je prends des vieilles,
je leur mets une cartouche une fois dans le mot, elles sont contentes,
en attendant, elles m'arrosent deux thunes, et c'est bon.
OK.
Voilà.
Euh, Vasquerie ?
Bah, moi, je pense que c'est une bonne idée,
parce que c'est toujours nous qui payons tout,
le ciné, les sorties, machin, tout ça,
et ce serait une bonne idée qu'on retourne et nous fait d'un salaire.
Alors, là, moi, je suis pas d'accord avec vous,
parce qu'en fin de compte,
en fin de compte, les femmes,
elles sont là pour nous faire à bouffer,
elles sont là pour nous laver notre linge,
pour nous entretenir,
pour faire la vaisselle et tout.
Maintenant...
Non, non, non.
Non.
Qu'est-ce qu'il faut pas ?
Tu vas pas te faire sucer par ton chien,
c'est bien ta femme qui te suce,
donc elles sont là aussi pour sucer.
Attends, toi, tu fermes ta gueule,
tu vas te faire sucer par une pute.
Bah, écoute, c'est logique, non,
j'ai ce qu'il faut faire.
C'est des femmes.
Ouais, mais, de toute manière,
jusqu'à maintenant, moi...
C'est pas la loco.
Alors, moi, la loco, attends, merde,
alors, conclusion, ça t'apprendra.
À cause de toi, je...
Merci beaucoup.
On va commencer ta conclusion.
Non, non, mais, vous allez voir.
Vous allez voir au deuxième débat.
La conclusion de l'IRC, Gérard.
Ouais, donc, il y a Yankee sur l'IRC.
Attends, faut que je la retrouve,
parce que je sais plus où elle est passée.
Conclusion, pour faire un débat sur l'argent,
il faut déjà en posséder.
Quand on fouille dans les poubelles,
il faudra mieux qu'on fasse un débat
sur les déchets domestiques.
Ça, c'est pas un débat que je ferai.
Et il y a Turpentine sur l'IRC
qui dit que ton débat,
il avait ni queue ni tête comme toi.
Dans ces cas-là,
si ça leur plaît pas sur l'IRC,
dans ces cas-là,
qu'ils arrêtent de dépenser leurs poignons.
De toute manière,
l'IRC,
il faut le payer.
Avec de l'argent.
Donc, il faut avoir de l'argent.
Quand est-ce que c'est la grève, Rigo ?
Le 13.
Je crois que
c'est pour bientôt.
Il vient de te dire le 13, on est le 11.
Donc, dans deux jours,
merde !
C'est bien marrant tout ça !
Un dimanche !
T'as tout compris, t'assures.
C'est vraiment mortel.
Alors, conclusion, on va demander à Poussin.
La conclusion, moi, je dirais que ce débat
était très intéressant.
Grâce à toi, Gégé, j'en ai pris plus sur l'euro.
Puis voilà, merci Gégé.
Il n'y a pas de quoi.
Tabouret ?
Moi, l'argent, j'en ai pas.
Donc, je lance un appel.
S'il y a un vieux qui est prêt à claquer, qui m'écoute
et qui a plein de fric, je suis prête.
Non, mais attends, Tabouret.
Tu te fous de ma gueule ?
Non, mais je crois que tu prends le train.
Tu prends le train.
Pourquoi ?
Parce que tout à l'heure, quand je t'ai posé une question
sur de l'argent,
tu m'as dit
je ne suis pas lycéenne et je travaille.
Oui, ben oui, mais je travaille
mais je ne gagne pas beaucoup d'argent.
Une fois que le loyer est payé, je n'ai plus rien, c'est tout.
Moi, je cherche un vieux.
A la rigueur, je l'aide à mourir
et puis j'ai tout son fric et je m'éclate avec.
Je l'aime à mourir, c'est ça ?
Oui, c'est ça.
Robloçon, il n'est plus là ?
Non, tu l'as vu ?
Non.
Un parapluie ?
Oui, ben écoute, l'argent, l'euro,
je voulais juste te dire que je ne sais pas si tu savais,
mais avant l'euro, ça s'appelait l'écu
et je voulais savoir pourquoi la Banque de France et toi
vous visez des fixations sur le gerbille et le caca
et je voulais te dire que tu as bien une tronche
à être payé en monnaie de singe, voilà.
Alors moi, je vais te dire une chose, parapluie.
Non, mais attends.
C'est coupé.
Toi, tu mets ça à ton micro, tu m'énerves avec ton micro.
Maintenant, tu me remets parapluie à l'antenne ?
Oui, je suis là.
Ben moi, je vais te dire une chose,
parce que ce que tu viens de me dire comme conclusion,
ben moi, je t'emmerde.
Ah ben, on est deux alors.
Ok ?
Et je te chie dans le bec.
Vas-y.
Ok, alors bonne nuit.
Bonne nuit.
Vas-y, Ray, pour terminer.
Ben moi, j'ai trouvé que c'était un débat assez intéressant.
On a appris pas mal de choses
et je voudrais terminer, si tu le permets,
sur une citation de Descartes
qui est tout à fait dans le cadre du débat
de plus à quoi servirait l'infinie puissance
de cet infini imaginaire
s'il ne pouvait jamais rien créer.
Voilà.
Bonne soirée.
Ok, bonne soirée à toi.
Donc, moi, ma conclusion,
il y a peut-être une autre conclusion, non ?
Conclusion, Fildar,
passe-moi ton stylo, s'il te plaît.
Ouais.
Jolie conclusion, Hugo.
C'est toi qui bosses le mieux.
Voilà.
Alors, moi, conclusion,
ben moi, ce que je peux vous dire,
c'est que pour l'argent,
donc sur l'euro,
donc maintenant,
ça va être assez compliqué
parce que ça va être pour les personnes âgées,
donc ça, ça va être le plus dur.
Sinon, qu'est-ce que je pouvais vous rapporter,
vous dire d'autre ?
Bon, ben,
donnez à ceux que...
Donnez ce que vous pouvez
à des associations
que vous êtes sûrs
de connaître,
mais faites attention.
Faites attention parce que
l'argent ne fait pas le bonheur.
En fin de compte,
on croit que l'argent fait le bonheur,
et en fin de compte, non.
C'est pas avec de l'argent qu'on y est.
Avec de l'argent,
on peut aller partout dès qu'on en a,
mais si on n'en a pas, ben...
Qu'est-ce que je peux vous dire d'autre ?
Si on n'a pas d'argent,
ben, on crève.
Et donc, comme j'ai dit,
comptez vos amis.
Parce que les amis, ça se compte sur les 5 doigts d'une main.
1, 2, 3 !
Ouais, moi, j'en ai que 3.
Et comme le remix, il dit,
et 1, et 2,
et 3, 0.
Donc, voilà.
Bravo, bravo, bravo !
Alors, on va se retrouver pour le deuxième débat
qui va porter sur les jeux vidéo.
Et donc, on va s'écouter.
La petite fermière du bois
avec des oursins dans le cul.
Ouais, les Zeldas où il y a...
Plus le...
Plus le remix de merde.
Euh...
Alors, toi,
quand tu viens là,
tu vas prendre une blague dans ta gueule.
Oh, mais, Gérard !
Alors, plus le remix de merde.
C'est pas ça.
Donc, tu me donnes la pochette, Manu, si tu veux.
Quelle pochette ? Mais tu vas rien comprendre.
La pochette de quoi ?
Ça, on ne le met pas tout de suite, ça.
Si, si.
Non, on ne le met pas tout de suite.
Si, c'est le deuxième.
C'est ça.
Parce que plus le remix de merde.
Eh ben, alors, tu me les donnes.
Je vais les annoncer gentiment.
Eh ben, vas-y, fais le malin.
Alors, euh...
Vas-y, on va se marrer, là.
Vas-y, fais le malin.
Alors, le premier, c'est quoi ?
Le premier, c'est...
C'est plage 10.
Plage 10.
Alors, plage 10...
On va se marrer.
Allez.
Alors, c'est, euh...
Soon...
Soon die.
Oui, one...
D'accord.
Donc, en fin de compte,
je vous dirais pas le premier donc c'est en fin de compte le premier c'est la première du bois
avec des oursins dans le cul et le deuxième pour terminer donc un remix de merde donc c'est pas
c'est ça le noir là c'est qui qui pro prodigy avec firest artères donc à tout à l'heure pour le
deuxième débat sur fun radio n'oubliez pas
ce système s'empêcher
== Le débat sur les jeux vidéo ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Et voilà, donc vous venez d'écouter. Fildar, s'il te plaît, tu peux l'annoncer. C'était les Pro DJ avec Firestarter, c'est ce que tu as dit tout à l'heure, Gégé. Ah ouais, mais moi, c'était pas ce qui était annoncé, c'était en principe plus un remix de merde. Ah non, mais on l'a pas mis, parce qu'on a changé au dernier moment la prog. Ah ouais, ben d'accord. Ok, donc vous êtes toujours sur PN Radio, donc au standard, c'est Manu qui vous attend. Ouais ! Donc au 0803 0803.
0800 75 000 à moins que le 0803 le 0800 ne fonctionne plus. Ils essayent les deux et puis ils verront bien. Ouais, voilà. Donc Manu vous attend toujours au standard. Rigaud toujours sur l'internet, prêt à répondre aux questions. Ouais. Donc... Ouais, y'a pas de problème. Et ben... Fildar à la réa, en espérant qu'il va me faire du bon petit boulot comme le premier. J'espère.
Donc, il y aura une surprise pour... Ben, pour les auditeurs qui ont l'habitude d'écouter Max le soir. Je vous dis pas quoi, parce que sinon... Bon, sinon, on peut l'annoncer, Fildar ? Ben, je sais pas, je sais pas, c'est une surprise, je sais pas. Ben si, ben, tu l'as, là. C'est... Ça va être dévié pour toi, Sandy, ma chérie. Ça va être fête à fête. Relaxation, ouais. Le pouvoir de la méditation. Mais non, c'est pas ça !
Là, tu l'as, là, là, devant tes yeux. Je te suis dessus, Christo. Mais non, mais non, c'est pas ça. Ça va être... Ça va être dédié pour Sandy, ça va être fête à fête. C'est ça ? Voilà ! Voilà. OK, d'accord. Et comme elle l'adore, on va lui dédier, malgré qu'elle... Ça lui rappelle des souvenirs. Ouais, mais... Non, mais ça lui rappelle pas des souvenirs, Manu. Ben, je sais pas pourquoi, elle l'aime bien. C'est pas le débat, c'est pas le débat. Non, mais elle aime bien, parce que... Depuis qu'elle l'a écouté, bon, ben... Ben, voyons, balance tout, toi.
Gérard, on va peut-être commencer à accueillir les auditeurs, parce qu'il est déjà 2h20. Donc, le deuxième débat, donc, il est 2h18. Oui, c'est vrai, il faut qu'on avance. Donc, le deuxième débat porte sur les jeux vidéo. Et pour les jeux vidéo, on va accueillir Monica Latégresse. Salut, Gégé. 19 ans, de Paris. On peut écouter FN Radio sur 101.9 FM. Ouais, salut, Gégé. Donc, bonsoir à toi. Bulbul Gomme, 20 ans, de Marseille. On peut écouter FN Radio sur 103.9 FM.
Salut, Gérard. Salut, Philippe Barre. Salut, Manu. Salut. Lara... Lara Graff. Hein ? Lara Graff. Ah, ben, moi, j'ai Graff. Ah, c'est Graff. Donc, 21 ans de Max et Bill. On peut écouter FN Radio sur 95 FM. Bonsoir, Gérard. Bonsoir, Manu. Bonsoir, Philippe Barre. Et bonsoir, Max. Max, il est... Pour l'instant, il est en train de préparer son petit...
Ah, j'ai regardé Techno Max tout à l'heure. Ah, ben, c'est bien. Ah, ben, au moins des... J'espère que tout le monde l'a regardé. Ouais. Et l'éditeur suivant, c'est quoi ? Donc, c'est Pierre Mario. C'est Lara Graff. Bonsoir. Super Mario, 19 ans, de... Albertville. D'Albertville. On peut écouter FN Radio sur 97.5 FM. Oui, Rigo. Je voulais juste dire à Super Mario que je suis fan. Ah, OK. Ah, merci. Pac-Man, 23 ans. Oui, bonsoir, toute la populace. Salut. On peut écouter...
On peut écouter FN Radio sur 101.9. Yes, c'est pareil. OK. Et Sonic, 19 ans, de Tokyo. Oui, j'appelle du Japon. J'ai un décalage. Je vous écoute sur Internet. Et il est 8h du matin à Tokyo. Ah, OK. Il fait beau, non ? Non, il se clope. Alors, donc, que peut-on faire avec des jeux vidéo ? On va demander ça à Monica la tigresse. Ben, qu'est-ce qu'on peut faire ? Ben, on peut jouer avec.
C'est une bonne chose. Ben, en principe, des jeux... En principe, les jeux vidéo, c'est pour jouer avec. Ben, qu'est-ce qu'on peut faire avec ? C'est pas pour se branler. Ben, on peut... Ça passe longtemps, quoi. On se défoule dessus. Quand on a passé une journée de travail, on est stressé et tout. Et le soir, quand on rentre, une partie de Tekken... Ah, une partie de Tekken ! Attends... Une partie de Tekken ! Non, mais... Ah, non, mais là... Non, mais là... Vraiment trop con, hein.
Là, t'es vraiment trop conne, hein. Ouais. Là, t'es vraiment une tigresse, hein. Ben, c'est une partie de Tekken. Allez, c'est bon, va te coucher. Oui, ben, ça sert à se défendre. Ça sert à se défendre. Et puis, ça sert à se défouler quand les gens nous prennent la tête. Parce qu'on fait des petits Mortal Kombat, des choses comme ça. Voilà, tu peux répéter, parce que là, j'ai... Je te dis que ça sert à se défouler quand il y a des gens qui t'ont pris la tête. C'est un Mortal Kombat.
Non, mais celui qui a une... Il y en a un qui est en train de jouer aux jeux vidéo, en plus, c'est pas cool. J'ai l'impression que c'est... Tiens, ça, je reconnais ce... Celui-là, je l'ai pas, je suis jaloux. Non, mais moi, je le reconnais, parce que c'était la première fois que j'ai connu Max. Oh, ta gueule derrière !
On va demander à l'oragraphe. L'oragraphe. Ouais, ben, je sais pas qui c'est qui m'a écrit ce nom-là, mais je prononce comme c'est marqué. Allez ! Ouais, donc, normalement, c'est fait pour se défouler, mais aussi, si t'as la table qui est bancale, tu peux le mettre sur le pied. Ah, sur le pied ? Ouais, sur le pied de la table. Comme ça, ça te fait une table droite. Ah, une table droite ?
Ben, la boîte. La console. La console, tu la mets dans ta PlayStation, et puis, la boîte, tu la mets sous le... sous le pied. Ouais, d'accord. Attends, je regarde vite fait. Oui, il y a Oxyd sur IRC qui te demande si c'est vrai que Sandy a fait des jeux vidéo quand elle jouait avec ton joystick et que toi, en même temps, t'appuies sur tous ses boutons. Et c'est toujours Game Over. Alors, lui, je lui réponds même pas à la question. Ça vaudra plus... Ça ira plus vite. Super Mario. Et sinon, il y a Yankee qui te demande
si c'est vrai que Tom. C'est clair. C'est un nouvel manette de jeu, ça. C'est clair, ouais. Euh, je réponds même pas à des questions pourrites sur l'Internet, parce que là... Mais qu'est-ce que c'est pourrite ? C'est pourrite. Tes questions, Rodrigo. Non, non, mais... Non, mais c'est pas les miennes, non. Non, non, mais... Les gens d'IRC posaient des questions qui... Qui mettent en valeur robot, quoi. Merde. Qui ont un rapport... Posez des questions qui ont un rapport avec des jeux. Filder, pour l'instant, tu t'écrases, parce que... Allez, mortel débat.
On y va. Euh... Super Mario. Bah, moi, je pense que les jeux vidéo, ça se sert déjà pour se défouler. Puis en plus, on peut se détendre surtout avec, quoi. Comment ? On peut se détendre avec. On se détend, quoi, le soir. Parce que parfois, c'est relou qu'on rentre le soir, on est bien vénère et tout. Alors, on se détend. Voilà. Et par exemple, si t'as... Si t'as pas de jeux de vidéo, si t'as pas de PlayStation, tout ça, c'est quoi ? Comment tu fais ? Bah, je sais pas. Tu te débrouilles. Tu m'as de quoi ?
Tu t'es fait un pote. Qui en a eu ? Comment ? Tu tapes sur ta femme. Oh, non. Mais attends. Alors, là, qui c'est qui vient me dire ça ? Les filles. Non, mais dis ton nom, celle qui vient me dire ça. T'as le courage de dire ton nom, mais... Pétasse, là, qui vient me dire ça ? C'est quoi, Sam ? Oh, là, là, putain, j'aime bien... Elle vient pas de fou, hier. J'aime bien les salopes, là, comme ça. C'est pas moi. Bon, mais attends, c'est pas moi, c'est... C'est pas moi, c'est pas moi. Mais non, mais c'est jamais personne. Mais allez, arrêtez vos conneries, là.
Non, non, bah, c'est pas moi. Non, il y en a trois. Moi, je suis respectueuse. Euh, Pacam. Non, Pacman. Pacman. Pacman. Pacman. Pacman. Écoute, une console, ça te sert, bah, par exemple, si t'es chômeur ou t'es étudiant et qu'il sèche les cours, déjà, ça t'occupe. Et puis, deuxièmement, ça peut aussi te servir à mettre une branlée à Tekken 3 à des standardistes dans une radio, quoi. Ouais, bah, alors, Pacman, je vais te dire une chose, que si c'est pour me dire des conneries comme ça sur... Excuse-moi, Gérard, j'ai une rectification à faire à des gars qui s'occupent de l'IRC et des branlées. Merci.
D'accord. Attends, Gérard, moi aussi, j'ai Internet, j'ai un message IRC, je peux te le lire ? Non. Non, non, non, non, non, non, non, non, il y a pas de message à lire. Hop, terminé. Ah, moi, j'en ai un, par contre. Ouais. Il y a un truc qui dit qu'il y a un jeu où on est camionnaire et on gagne des points en faisant des bouchons et les ennemis, c'est des plaques de verglas, ça s'appelle Super GG Bros. Ah, bah, lui, je l'emmerde. Euh, Sonic. Euh, oui, en fait, moi, effectivement, les jeux vidéo, ça me servait avant, quand c'était des cartouches, à caler mes meubles.
Au bon cas, je mettais les cartouches, mais maintenant, avec les CD, c'est galère. Donc, j'ai décidé de me reconvertir en pirate, je grave des CD, je me fais de la tuerie. Oh, ça s'interdit, ça. Euh, Sonic. Attends, tu demandes combien tes disques ? Sonic ! Sonic ! Sonic ! Je suis intéressée. Euh, terminé pour lui. Hop. Allô ? Bon, euh, puis... C'est pas moi, hein.
Eh, là, ça... Manu, tu gères un peu, là. Bon, Manu, euh... On va voir que c'est bien du standard. Hop, je coupe. Je remets, je coupe. Tu vois ? Gérard ? Sur l'IC, il y a des V1 qui te demandent comment on fait pour graver un CD, justement, c'est avec un marteau et un bureau. Ouais. Ouais. Gagné. Bah, je peux peut-être répondre. Ouais, doit-on être intelligent ? Attends, moi, je m'y connais, je peux peut-être répondre. Encore les deux. Allô ?
Donc, doit-on être intelligent pour jouer aux jeux vidéo, c'est ça ? Euh, Fuldard ? Oui ? Pour l'instant, tu fermes ta gueule, c'est moi qui pose les questions. D'accord. Toi, t'es payé pour faire l'arrière. Gérard, tu t'es en train de faire la gueule, t'allais pas la poser, il a bien fait de la poser. Ouais, mais c'est pas lui. De toute manière, c'est moi qui pose les questions, c'est pas lui. Alors, doit-on être intelligent pour faire de la Game Boy ou autre ? Gérard ?
Comment la pétasse, là ? Ouais. Y a Fuldard de mon sur la tête. Non, non, non, la pétasse, là, qui vient de dire que je sais pas parler, tu peux dire ton nom, là ? Voilà, Game Boy, hein. Bon, allez, hop. Gernier pour Rég. Allez, hop, celle-là. Gérard, Gérard. Deux secondes, il y a une question internet. Gérard ? Ouais, une question internet. Tu me prends quelqu'un d'autre, hein, parce que là... Gérard, y a Chandler, le vrai, qui te demande si tu fais de la magie noire avec ta...
Vaudou 2. Non. Doit-on être intelligent pour faire de la... Oh, ça y est ! Gérard ? Ouais. Oh, oh, oh. Hé, Fuldard ! Hé, Fuldard ! Hé, Gérard ! Hé, qu'est-ce que tu fais, là ? Tes mains, tu les mets là. Gérard, t'as déjà la Game Boy ? Hein, parce que là, c'est le jeu, là. T'as le cadeau. Tu vois que c'est pas lui, arrête de... C'est les éditeurs. C'est les éditeurs. Bon, hé, Manu ! C'est bon, ils sont coupés, là, on y va, on y va, on y va.
Alors... Donc, on m'a demandé à Monica, la tigresse. Ouais. Ouais, ben moi, je pense que... Gérard ? Ta gueule, derrière, pour un second ! T'as déjà joué, là, Gérard ? Monica, réponds, vas-y. Ben, je réponds. Donc, moi, je pense que, oui, faut être intelligent, hein, parce que ça montre de l'esprit et de la réflexion. Et voilà, quoi. Quand même. Ouais, on va rajouter, quoi. Ok, euh... Buble... Buble-gum, là. Double-gum. Ouais. Ben, non, moi, je pense que un QI de 30, ça suffit.
Il faut juste appuyer sur deux boutons, donc c'est pas forcé. Tout le monde peut le faire. Oui. Qu'est-ce qu'on veut dire, c'est ? Ouais, il y a Yankee, le vrai, qui te demande si tu sais jouer à la console, toi. Non. Non, donc... Là, euh... Donc, il faut bien être intelligent pour jouer à une console, alors. De toute manière, il y en a un qui est super intelligent parce qu'il a gagné à la coupe. Il s'appelle Manu. Ah, mais c'est parce que j'étais pas là. Sans préciser. J'étais pas là, c'est bon. Merci, j'ai... Ah, c'est... Non, j'étais pas là. Si j'étais là, c'est moi qui aurais gagné. La coupe de TKL 3.
Ah, ouais ? Ben, si, t'es... J'étais pas là. Mais si, t'étais là. Ben, ouais, ça s'est passé dans les studios. Me dis pas que t'étais pas là. Enfoiré. Ben, ouais, t'étais là, Hugo. Voyons. Euh... Là, là, là, euh... Là, Croft. Ouais, Croft. Ouais, vas-y. Ouais, ben, moi, je pense qu'il faut pas être intelligent. Avoir le QI d'une mouche, tu peux jouer à ça, hein. Et juste appuyer sur deux boutons, comme ça. Comment ?
Ouais, ça, c'est Monica qui parle, hein. C'est pas moi. Ouais, ben, alors, Monica, tu t'écrases. T'en as rien dit, Monica, hein. Mais si. Je crois que c'est moi, peut-être. Le raccroche. Ouais, ça y est, j'ai répondu à la question. Faut écouter, hein. J'ai dit qu'en fait, il fallait avoir le QI d'une mouche pour jouer à ce jeu. C'est tout. D'accord. J'ai pas appuyé sur les boutons. Euh, Super Mario ? Moi, je pense que ouais, parce que parfois, il y a des notices, quoi. Elles sont tellement énormes qu'il y en a, ils peuvent pas comprendre, quoi.
T'es intelligent, pour toi ? Ben, ça dépend pour qui, ouais. Des fois, la notice, elle est écrite en anglais, hein. Ouais, des fois, même à l'écran japonais, parfois. Ouais, c'est ça. Prends-moi pour un con. Un con. Ah, mais non, c'est vrai, hein. Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard ! Arrête !
Et t'as le double son, pildard ! Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard !
Arrête ! Et t'as le double son, pildard !
C'est une simulation virtuelle de soirée de richesse de la loco. Alors toi, c'est terminé pour toi. Au revoir aussi ! Au revoir aussi ! Salut ! Au revoir ! Alors, Gérard, à la place de Lara Croft, on accueille Paul Fénix. Bonsoir. Salut, Gérard. Salut, Paul Fénix. Salut. Salut. Et à la place de Pac-Man, on accueille Fantôme Glouton. Salut à tous. Salut. Salut. Manu ? Oui ? J'espère que c'est pas les mêmes. Ah non, c'est pas les mêmes, c'était une meuf, t'as un mec.
Ah non, c'est pas les mêmes, c'était une meuf, t'as un mec. Ah non, c'est pas les mêmes, c'était une meuf, t'as un mec. Ah non, c'est pas les mêmes, c'était une meuf, t'as un mec. Ah non, c'est pas les mêmes, c'était une meuf, t'as un mec.
Ah non, c'est pas les mêmes, c'était une meuf, t'as un mec. Ah non, c'est pas les mêmes, c'était une meuf, t'as un mec.
Ah, on se met le petit cadeau. Ouais. Dédié pour Sandy. C'est ça la fête ! Et on se retrouve tout de suite après aux heures 800, 308, 5000, 0800, 70, 5000. Et toujours lire cww.fr. Et vous êtes toujours sur Fond Radio, il est 2h39. C'est ça la fête !
Tous ceux qui ont l'habitude d'écouter Max, le Star System, le soir, on vient de vous mettre fête à fête. Donc, vous êtes toujours sur Fond Radio. Donc, vous pouvez nous écouter sur 101.9 et il est 2h42. Donc, Manu vous attend toujours aux 0800, 308, 5000. Excuse-moi Gérard, du coup, à la place de Sonic que t'as viré tout à l'heure, on accueille Zelda. Ah ben, tu me... Voilà. Ça te dérange de me faire une fiche ? Ouais, ouais, ça me fait chier.
Ça te fait chier ? Ouais, ben ouais, tu me demandes, je te le dis. Ça te fait chier ? Ben, pas moi. C'est ton butier, c'est... Ouais, je sais, je sais. Tu connais les toilettes de Fond Radio ? Ouais, ouais, ouais. Bon. Oui, Rigo ? Non, je voulais juste dire à Zelda que je suis fan. Ah, ok. Alors, donc, vous venez d'écouter Fête à Fête et vous êtes toujours sur Fond Radio. Donc, 2h43 du matin. Donc, Manu vous attend au standard aux 0800, 308, 5000. Tu l'as déjà dit ça, Gérard.
On est débat de Gérard du jeudi soir. Disons, on est vendredi. Donc, le débat, ça porte sur les jeux vidéo. Et on récupère donc... Monica, la tigresse. Salut, Gégé. Rebonsoir à toi. Ouais. Double gomme. Salut. Paul... Paul Fénix. Paul Fénix. Excuse-moi, j'étais en train de me faire une partie de Super Bulldog Mister 3. Ouais, ben, Super Bulldog Mister 3.
Il t'emmerde. Attends, je suis contre le son de dinosaure, là. Ouais, ben, son de dinosaure, tu dégages. Ok. Oh ! Calme-toi, lui. Ça a été trop vite. Là, ben, lui, ça a été tout le visqueux. C'est la lumière. Il faut qu'il prenne les proutes magiques, là, pour dégommer son de dinosaure. Ouais, ben, son de dinosaure, pour l'instant, tu la laisses. Elle est en train de nous enregistrer, là, la peau. Ah bon ? Ouais. Elle pourrait un peu... C'est pas la grâce de vous, espèce de filiaste, là. Ouais, ouais.
Ouais, elle remue pas trop bien. Oh, t'as encore une place pour elle. Ah non, hein ? Oh, si. Il n'y a plus de place, là. À la place de Paul Romix. Non, non. Bah, ouais, bien sûr, on va dégager quelqu'un d'intéressant pour quelqu'un de... Ouais, et alors ? Je vais te dire un truc, c'est que tu nous as saoulés toute la journée pour pas avoir d'habituel, alors il n'y a pas moyen. Ouais, ben, attends, on a bien eu Tony au premier débat. Ouais, mais il s'est fait garter. Ouais, ben, tiens. T'es pas encore là, toi ? Ben, non, c'est pas Tony. C'était pas Tony, ça. Super Mario.
Oh, tu vois, quand je demande les noms, vous répondez ou pas ? Bon, d'accord. Super Mario. Ouais. T'es là ? Ouais. T'as répondu ? Ouais. Ouais, ben... Bon, d'accord. Fantôme Glouton ! Il est vieux, Super Mario. Ouais, celui-là, il a... Putain ! Oh, les grosses sanguines. Hé, les grosses sanguines, attends, merde, toi, salope ! Oh, là, là. Ah, mais les grosses, c'est celle-là, là.
Ah, ça va mettre, avec le tampon vert. Attends, c'est pas moi le standard, hein. C'est toi qui gère, Manu, hein. Merci. Merci, Manu. Fantôme Glouton. Eh, celui-là. Oui, t'es gaffe, c'est Glouton qui attaque. Bon, alors, tu dégages, toi. Hop, terminé. C'était pas lui, c'était Zelda, je l'ai dégagé. Allez, hop. Zelda. Non, je viens de te dire que c'était lui qui avait dit ça.
Regarde, Fantôme Glouton, il m'a dégagé, Zelda. Ok, alors... Donc, quatrième question, parce qu'on va faire vite, là. Alors, d'après vous, les jeux... D'après vous, jouer à un jeu vidéo est-il réservé aux garçons ? On va demander ça à Monica. Non, non, non, non, non. Non, non. C'est autant réservé aux filles qu'aux garçons, je suis désolée. Et voilà, quoi. Je vois pas pourquoi ce serait réservé qu'aux garçons, après tout. Ouais, mais de toute manière, il y a plusieurs parties.
Hugo ? Oui, sur IRC, il y a Sardine qui te demande comment on fera pour compter les points en euros sur les consoles. Toi, je sais pas. C'est n'importe quoi, Hugo. Par contre, par contre, par contre... Oh, la salope, là, qui est incarnée comme une pute ! Arrête d'être vulgaire, Gérard. Ça sert à rien. Ouais, ben, toi, tu peux mieux... Ah, oui, j'ai pas. Manu... On peut rien faire.
On peut pas faire un débat potable avec toi, Manu. Non, non, mais je pense que ça va aller vite fait. Hugo, on est combien, là, sur l'IRC ? Ben, on a perdu, quand t'as gueulé un peu trop, on est à 3852. 3852 ? C'est pas terrible, hein. Tu notes pas ? 3852. 3852. Allez, pas trop vite, quand même. En plus, je me suis renseigné par quelqu'un. Comment ? Tu vas les donner à Jean Donnader, les numéros ? Non, non, non.
Je me suis renseigné par une personne qui peut avoir aussi Internet. Sur son tatou ? On peut avoir plus de 6000 personnes sur l'Internet. Mais ça dépend de l'appareil qu'on a. C'est pas le thème du débat. OK. Alors, Monica. Oui ? On m'accueille, pardon, à la place de Zelda.
Link. Bonsoir. On s'accueille tous les jours. Gérard, deux secondes. Link. Oui, bonsoir. Ouais, je suis fan. Ouais, je te remercie. Je t'en remercie. C'est vraiment assez bio. Euh, oui, mais moi, par rapport au... Ouais, je pense que... Oui, je suis les filles aussi, pas que je joue à la vidéo. Eh, bonsoir, quand même. Bonsoir. Non, mais... Non, mais comment tu fais que je me concentre avec tous ces gens qui taisent autour de moi ? C'est vrai que c'est pas évident. Manu, tu pourras gérer un peu.
Non, mais c'est bien. Là, je crois que le deuxième débat, il va être vite terminé. C'est n'importe quoi, Gérard. C'est vrai. Je t'écoute, Luc. Link. Link, mais moi, j'ai déjà répondu. Je t'ai dit que oui, les filles pouvaient effectivement jouer aux jeux vidéo. C'est les filles qui apprennent les consoles roses et les mecs les consoles bleues. C'est des consoles pour vie et des consoles pour garçons.
C'est pour les filles, quoi. Ah, ouais. C'est une équivalentité. Super Mario ? Bah, moi, je pense que ouais, mais ça dépend des jeux, quoi. Ouais, mais tu peux préciser ? Bah, les jeux trop violents, quoi. Il vaut mieux que ça s'arrête. Il vaut mieux laisser des jeux de boysband aux filles. Ouais. C'est moi qui suis en temps. C'est moi qui suis en temps. Voilà. OK. Paul Fenix ? Non. Ouais. Je suis encore là. J'ai vu que Manu m'a calmé au standard. Je voudrais que tu me répètes la question, s'il te plaît, parce que j'ai pas pu entendre.
Alors, d'après vous, un jeu vidéo, est-il réservé aux garçons ? Euh, je pense que oui, parce que j'ai jamais vu de console rose ou quoi que ce soit. Euh, si. Non, non, non. Bah, tu peux le reprendre. Ouais. OK. Une petite peinture ou de la gouache. Tu peux reprendre ta peinture. Voilà, OK. Euh, Bubblegum ? Euh, ouais, bah, moi, j'ai un jeu vidéo, donc je joue avec. Ouais, ouais, j'ai une manette ergonomique qui nous permet de faire plein de solutions et plein de sauts périlleux en arrière.
Euh, Monica ? Oui ? Oui, Brandy ? Hein ? Oui, bravo. Oh, il a une licence. Il est fan, hein ? Vous laissez répondre, les gens, s'il vous plaît. Merci, Monica. Tu réponds à la question. Quelle question ? J'ai déjà répondu, j'ai... Ah bon, bah, alors, on va passer à la seconde. Eh, Fantôme Glouton, j'ai pas répondu. Quoi ? T'es encore là, toi ? Bah, oui, c'est Zelda qu'on a dégagé tout à l'heure. Voilà. Et Yannick, elle a...
Merci, Rigo. Euh, pour gaucher, alors, ça, faudrait qu'on pose la question à un gaucher. Y'en a au Japon. Y'en a au Japon. T'es gaucher, non ? Non, du tout. Ah, merde. Non. Merde, non, ça, c'est pas... Et toi aussi, si elle est tout bitrée, mais ça n'a rien à voir. Ou alors, toi, tu t'écrases. Ouais, Gérard ? Quoi ? Fantôme Glouton, je continue, parce que je parlais quand Rigo m'a coupé. Bon, attends, pour l'instant, si Rigo, il vous coupe, c'est parce qu'il y a des questions
IRC qui sont plus importantes que vos conneries. L'IRC, c'est un véhicule prioritaire, je sais. Voilà. Il y a des jeux pour les filles. Moi, j'ai une petite sœur. J'ai une petite sœur, elle joue aussi, ouais. J'ai une petite sœur, elle joue à Salope Fighting Beach 4. C'est un jeu de combat pour filles, quoi. Y'a que des filles dedans. Tu me les vires, celui-là, Manu ? Tu me les vires ? Pour vous jouer...
C'est un Game Boy ? Non, mais il est mort, là. Il a Game Over. Vas-y, on y va. Game Over. Pour vous, jouez-vous à la Game Boy ? Est-il un passe-temps ? On va demander à Monica. De quoi ? De quoi ? De quoi ? Jouez-vous à la Game Boy ? Est-il un passe-temps ? Ben oui, je pense que oui. Ben, tu peux préciser ? Ben oui, c'est un passe-temps. Un jeu vidéo est un passe-temps. Non, mais tu peux préciser ? Ben, préciser comment, Gégé ? Précise ton nom. Non, mais tu précises ? Ton nom.
Ton nom ? Ton numéro de téléphone, ton adresse, ta carte de crédit. Oh, tiens, tu permets ta gueule ! C'est un passe-temps, je crois plutôt que c'est un passe-temps. Ou un passe-partout. Voilà, un passe-partout. Gérard ? Oui ? Y'a Turpentine qui te demande si tu connais... Ah ouais, j'en ai pas, il a dit que les autres comme toi, Gérard. Mais vu que tu connais la Game Boy, est-ce que tu connais la Game Girl ? Non. Pulder, t'arrêtes, s'il te plaît, quand on parle. Tu n'as rien fait, Gégé. Donc, tu me disais quoi, Rigo ?
Je te demandais si tu connaissais, comme il y a la Game Boy pour les garçons, est-ce que tu connais la Game Girl ? Non. Non, pas du tout. Et pourquoi ? Il n'y a pas de pourquoi. Donc, eh... Bubu le gomme. Ouais. Moi, non, je trouve que c'est une perte de temps, plutôt. Je préfère jouer avec mon tamamochi. C'est pas un jeu vidéo, ça ! Non, mais attends ! Eh, les tomatochips, là, c'est le truc... Les tomatochips, là ! C'est n'importe quoi, ce que tu dis.
Bah, non, c'est bidon. Ah, ok. Bah, moi, tu perds pas ton temps, comme quand tu joues au Game Boy. Bah, ouais, mais de toute manière, si t'as de l'argent à foutre là-dedans, en l'air, tu peux, hein. Mais pas en l'air, je le fais en mon tamamochi. Bah, ouais, mais de toute manière, il faut bien lui donner à bouffer, ton tomatochi. Bah, oui, mais bon, ça coûte pas cher en bouffe, un tamamochi. Et quand il meurt, tu fais quoi ? Bah, quand il meurt, je rachète un autre. Et puis, attends, la thune dépensée, c'est n'importe quoi. Paul Phoenix. Tu rires. Avec Rigo. Bah, allô ? Attends, attends.
Bubblegum ? Oui ? Tu veux retourner sur l'IRC ? Mais non, c'est une blague. Parce que sinon, y'a pas de problème. Non, mais elle l'a pas, IRC, comme elle fait chez elle. Tu demandes à Manu, et puis c'est bon. Il t'en achète un. Il t'achète un Internet, Manu, tu demandes, il est sympa. Pas de problème. Gérard, y'a Ziwi qui te demande si tu connais la console Neo-GGO. Non. Paul Phoenix. Ouais, c'est un passe-temps. Je voudrais savoir si, d'ailleurs, toi aussi, t'as un passe-temps.
Si tu connais la Game Boy, mais est-ce que tu connais la Game Boy ? La Game Boys. Non, mais... Avec le jeu Super Penetrator 4. Tu connais pas ? Non. Tu peux préciser le fond de ta pensée ? En tout son cul. En tout son cul, toi, salope. Voilà, salope. Et hop, terminé. Moi, de toute manière, 2h53, dans 7 minutes, j'arrête. Ok, Michel. Super Mario.
Moi, ouais, je pense que c'est un passe-temps, parce que, franchement, quand on a rien à foutre, c'est bien agréable d'avoir un truc pour s'occuper, quoi. Ouais, t'as qu'à toucher la cliquette, quoi. Ouais, mais bon, ça, c'est différent, quoi. C'est plus rapide, quoi. T'as qu'à toucher la cliquette, quoi. Voilà. Gérard. C'est pour ça que j'ai arrêté, quoi, à force, quoi. J'ai une info du vrai Yankee sur l'IRC. Le jeu de l'année, c'est Carmine Affion sur la console Gris.
Carmine Affion. Il est pas mal, ce Yankee, je l'ai vu. Il tue, quoi. Je crois que c'est le jeu numéro 1. Qu'est-ce qu'il y a, Gérard ? Qu'est-ce qu'il y a ? Qu'est-ce qu'il y a ? Qu'est-ce qu'il y a ? Mais arrête ! Regarde ! Regarde ! Regarde ! Regarde !
Regarde ! Regarde ! Regarde ! Regarde ! Regarde ! Regarde ! Regarde ! Regarde !
Qu'est-ce qu'il y a ? Qu'est-ce qu'il y a ?
Qu'est-ce qu'il y a ? Qu'est-ce qu'il y a ?
Qu'est-ce qu'il y a ? Qu'est-ce qu'il y a ?
C'est plus fort que ça, le DG, merde. Dernière question. Ah bon ? Pas... Pas... Fais-le exprès, toi ! Mais attends, c'est pas moi qui fais la technique, hein. Ils sont là-bas, ils sont en rue Bayard. Ils sont en rue Bayard, j'ai pas rien, hein. Dernière question. Genre, avant la dernière question, il y a Turpentine sur l'IRC qui te dit que, vu que t'as jamais joué à la Game Boy, elle va t'envoyer une Game Goal. Une Go-Goal. Ah bah, c'est bien. Une Game Goal. Une Go-Goal 64. Ouais. T'en passes pas.
Sur l'IRC, il y a... Tu le veux dans la gueule, là ? Tu me tiens, ça ? C'est un quoi ? Une Go-Goal 64. Mais viens vérifier, c'est un truc d'allumé. Alors, attendez. Attendez, attendez deux secondes. Gérard va vérifier si c'est un truc d'allumé. Ah ouais ? Ah ouais ? Ça, c'est ce que c'est ? C'est le micro. Ça, qu'est-ce que tu veux que j'allume ou que j'éteigne ? C'est allumé... Tu comprends pas, hein ? Gérard ? C'est vrai que c'est un truc d'allumé. Non, c'est... Terminé ! Non, mais attends, t'as posé trois pauvres questions. C'est quoi, le débat ? C'est quoi, le débat ?
Si vous plaît, les auditeurs. Si vous plaît, les auditeurs. Gérard va poser la dernière question. Gérard va poser la dernière question. D'accord, on écoute. On écoute, Gérard. Comment ? On écoute. Attends, celui qui vient de poser une question qui dise son nom. Non, je l'ai coupé parce que c'était pas bien. Et la dernière question. Avez-vous déjà participé à un championnat de Game Boy ? Oui.
C'est quoi, ce travail ? C'est quoi, ce bordel ? C'est quoi, ces gens ? Et la laine avec le micro ? Vous répondez. Qui répond à la question, Gégé ? Personne. Monica ? Je vais être brève, Gégé. Non, j'ai jamais participé à des championnats de Game Boy. D'accord. Gérard, tu crois que c'est intéressant ou pas ? Pour l'instant, c'est pas toi que je m'adresse. Sur IRC, on me dit que sur Street Fighter 2, pour avoir les turbos de 10 étoiles, il faut faire bas, R, O, L, Y, B, X.
Ah. C'est pas vrai, il faut les relancer des petits mains aussi. T'as oublié R2, hein. R2, voilà. Bon, enfin, bref. Je parlais du 2. Du 2, pas trop mieux. Pas du Alpha, machin. Du Alpha, c'est pas vrai. Double Gun ? Ouais. Non, moi, j'ai jamais participé à un championnat de Game Boy. Par contre, j'ai gagné un championnat de T-shirt mouillé. D'accord. Où ? Où ? À la mer. Ouais. Paul... Paul Phoenix ?
Ouais, ouais. J'ai jamais participé de ma vie à un truc qui a... Bon, en conclusion, il y a plus de... Il y a plus de questions. Ouais. Laisse-moi répondre. Ouais, je... Gérard, je voudrais... Putain. Mais qu'est-ce qui... Mais qu'est-ce qui... Gérard, je voudrais répondre. Vas-y. D'abord, je voudrais dire... En fait, je comprends pas pourquoi toutes les questions tournent autour de la Game Boy. J'ai jamais participé à un championnat de Game Boy. Et je voudrais qu'on réhabilite ce soir la Master System. Non, mais maintenant, c'est fini. Mais non, la console a taré. Laisse-moi parler. Mais la Master System... Conclusion !
Je peux conclure, Gérard ? Ouais. C'est qui ? C'est qui ? C'est Link. C'est Link. Ouais. Je voulais d'abord dire que c'était un débat un peu moins intéressant que le premier, mais qu'on a quand même appris des choses. On a déjà beaucoup appris sur les jeux vidéo. Et je voudrais aussi... Tu peux même dire ce que t'as appris sur les jeux vidéo. J'ai appris que Gérard utilisait parfaitement le vocabulaire du jeu vidéo. Et que c'était toutes les nouveautés. D'accord. Et j'ai appris également que mon jeu allait sortir demain. Sortira demain, Link, quoi ? Ouais, je sais, ouais. Ah, c'est de la bonne chance.
Conclusion ! Conclusion ! Conclusion ! Je vais parler, là. Il disait, la plénitude n'est que ce que l'homme recherche. Ok. Bon, Gérard. Ouais. C'est qui ? C'est qui ? Paul Félix. Ok. Je vais conclure en disant Game Over. Et aussi, je vais donner un petit tips pour le jeu Super League Mystery 3. Non, non, pas de marque. Pour buter le mode de fin, il faut lui envoyer un petit kiss puant dans la gueule. Et ça marche à tous les coups. Bravo, Manu. Merci, Manu. Merci.
Euh... Qu'est-ce qu'il nous reste ? GG. GG. Et le fantôme glouton. Ouais. Ouais, alors, en conclusion, je veux dire, je suis déçu parce que t'as pas posé beaucoup de questions. Et je voulais dire que sur les jeux vidéo, est-ce que c'est vrai que toi, t'es comme la Nintendo 64, c'est-à-dire 64 bits par minute ? Alors, moi, je sors meilleur. Bah, attends, je te demande. Super Mario. Bah, la conclusion, moi, il y a un pote qui m'avait dit que tes dévats étaient nuls. Mais bon, en fait, non, c'est pas vraiment nul. C'est carrément pourri, quoi. Mais bon,
c'est pas grave, quoi. Paul Fenix. Ouais, bah, on va en faire une deuxième, pendant qu'on y est. J'ai pas trop quoi dire, moi, j'ai tout balancé, donc... Bon, ça... Un autre tips, non ? Ouais, bah, moi, je voudrais dire que j'aimerais bien qu'il fasse partie d'un des personnages de Street Fighter, comme ça, je pourrais t'en parler ta gueule. Bah, moi, c'est ton merde, connasse. Euh, Monica.
Je me suis sentie trop concernée par ce débat. Mais je voulais dire que si un auditeur se le m'appelait, y'a pas de problème. Enfin, pute. Ok. Connasse. Ok, bah, c'est bien. Régo, conclusion ? Elle était jouée à Insultator 3. Euh, conclusion ? Alors, conclusion de l'IRC, y'a Turpentine qui dit que ton débat, il avait ni queue ni tête comme toi. Y'a... Oh là là, parce que ça va trop vite, là. Entre les mecs qui parlent d'argent ou alors qui n'en ont pas, et ceux qui parlent de console, enfin, bon, là, j'arrive pas à suivre.
Il est temps que GG s'achète une console avec son argent de poche en euros pour pouvoir connaître les règles du jeu. Et sinon, si les consoles n'existaient pas, on a quand même GG pour foutre la merde sur l'IRC. Et combien de personnes ? Douze. On en a perdu quand t'as gueulé. Ouais, là, on est descendu sous les 2000, je préfère pas en parler. Non, bah, ça me fait une dalle. C'est lamentable. Donc, conclusion, bah, c'est... Gérard, sinon, y'a le vrai Arnette sur l'IRC en conclusion, il dit que tu pues la merde. Alors, moi, je dors merde. Moi, je dors merde et j'y suis dans...
Oh là là, c'est dégueulasse. Donc, alors, tu me casses pas les couilles. Bah, c'est tout ce que j'ai à lui dire. Donc, vous allez retrouver Rousseau pour la... Ta conclusion, Gérard, ta conclusion, quand même. Ma conclusion, c'était de la merde parce que tu pues ta merde toutes les semaines, comme d'habitude. D'accord. Manu, pour un sens, ça pouvait aller. Y'en a qu'un qui fait bien son boulot. Y'a que Rigaud qui sait travailler. Y'a que moi. Y'a que lui.
C'est incroyable. Y'a que lui qui arrive à nous faire quelque chose. Donc, maintenant, vous allez retrouver Rigaud. Attends, attends, j'ai une conclusion sur l'IRC. Deux secondes. Rigaud, Ré va te donner du plaisir. Qu'est-ce que ça peut te foutre, toi ? Toi, t'es vraiment le pédé. C'est tout ce que j'ai à te dire. Il te fait quelque chose. Y'a que lui qui fait bien son boulot. C'est vrai. Et y'a Ziwi sur l'IRC qui conclut en disant que les jeux vidéo,
c'est beau et que GG, t'es un chier. C'est bien. Donc, qu'est-ce que j'ai à vous dire d'autre ? La semaine prochaine, les débats... On sait pas. Non mais, Pildar, quand t'auras pris une idée connerie, tu me le diras. Donc, maintenant, vous allez retrouver Rigaud pour la nuit sans pub. 6h-9h. C'est moi, là, je fais la nuit sans pub. Rousseau, pardon, pas Rigaud. Qu'est-ce que je dis ? Rousseau pour la nuit sans pub. Demain matin, 6h-9h.
Max, et après... Merde ! La grillantaine, elle est belle. Tu fais quelle heure, toi ? Tu fais le décrochage vocal, non ? Oh là là ! La nuit sans pub, avec Rousseau. Sans pub, y'a pas de pub cette nuit. Gérard, y'a quand même une conclusion du vrai muldeur des X-Files. Il dit qu'il aurait mieux fait de jouer à sa console que d'écouter ton débat de merde. Merci Rigaud, tu nous donnes du plaisir. Alors, donc... T'as donné du plaisir. Vraiment, donc...
Là, vous allez retrouver Rousseau pour la nuit sans pub. 6h-9h. Barthes. Et 22h, Max, pour la libre-antenne avec Jean Deneuver. Donc, vous pouvez appeler... Dès maintenant, appeler dès maintenant. Appeler dès maintenant pour Jean Deneuver. Appeler dès maintenant pour la... Manu reste jusqu'à 6h. Pour la libre-antenne, donc, demain soir. Et moi, je vous retrouverai la semaine prochaine, si tout va bien. On a le temps, on a le temps.
Je voulais juste dire à tous les auditeurs qui voudraient encore aller sur l'IRC, y'a Sandy qui vous attend, la vraie. Non. Sandy Amatora à la maison. Bonne nuit, Gérard. Le disque pour skitter, tu connais pas ? Ah, non. Zintonic, tu connais ? Euh... C'est le truc pour danser. One, two, three, four. Non. Tu connais pas ?
== Le débat sur la CB (Cibie) ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Pas de radio et pas d'insultes de Gérard.
Et voilà, vous venez donc d'écouter un petit remix qui a été passé hier soir lors de l'émission de Max.
Non, non, non, c'est ce qu'on a récolté dans une boîte de nuit.
Voilà.
Dans une boîte de nuit, c'était pas sur le répondeur ?
À la chunga.
Ah, à la chunga, d'accord.
Gérard, il dit des conneries.
Vas-y, commence-toi.
Gérard, c'est Turpentine de l'Internet qui l'a récupéré.
Voilà, je la remercie.
Et là, avant, j'étais en train de demander à Rigo combien qu'on était.
On est déjà 3 000...
On était 3 582 quand je te l'ai dit.
On est déjà à 3 722 moins 4.
Donc, le premier débat va porter sur la cibille des erreurs 55.
Donc, on va accueillir Cendrier.
Oui, allô ?
20 ans, Mazamé.
On écoute Fun Radio sur 99.4.
Oui.
Bonsoir à toi.
Bonsoir.
Mets ton doigt.
Oui.
Salut, Gérard.
18 ans, Verdun.
On écoute Fun Radio 93.9.
Oui, c'est ça.
Tais-toi.
Oui, bonsoir, Gérard.
22 ans.
Bonsoir, Gérard.
Bonsoir à tous.
22 ans de...
De...
De...
De...
De...
La Cachan.
Oui.
Bonsoir.
La Cadeau, pardon.
On écoute Fun Radio 98.6.
Exact.
Bonsoir, Gérard.
Bonsoir à toi.
Petite truie.
19 ans de Alès.
On écoute Fun Radio 95.6, pardon.
Oui, bonsoir à toi, Gégé.
Bonsoir à l'équipe.
Bonsoir.
Salut, tout le monde.
Salut.
Fesse de taureau.
Bonsoir, Gégé.
25 ans.
Isola 2000.
On écoute Fun Radio 101.7.
Exactement.
Ça va bien, Gégé ?
Je sais pas.
Je n'ai pas regardé ce matin, ça.
Ah, Gégé.
C'est la fin de la tournée.
Et...
Sans pitié.
19 ans.
10 ans.
103.5.
C'est sans pitié.
Ben oui, ben.
C'est ce que je viens de dire.
C'est ça.
Bon, alors, les oreilles, c'est comme le cul, ça se lave.
Mais sans contotiche, d'accord ?
Ouais.
Ok.
C'est clair.
Bon, alors, on y va.
On attaque.
Première question.
Est-ce que vous possédez une CBC, oui ?
À quoi cela vous sert-elle ?
On va demander ça à Tétois.
Ouais, ouais.
J'en possède une.
Ben, en fait, ça me remplace le téléphone chez moi.
Non, mais...
Ben, ça y est.
Ça, je m'en serais douté.
Ah, ben ouais.
Je m'en serais douté qu'on m'aurait dit que ça remplace le téléphone.
Tu t'en redoutes aussi.
Ouais.
Donc, tu peux préciser ta...
Ma phrase ?
Ta réponse.
Ouais.
Donc, ben ouais.
Je m'en sers comme téléphone parce qu'en fait, j'ai pas le téléphone.
Ça coûte trop cher.
Puis, c'est pas ce téléphone.
C'est pas ce télécom.
Ouais.
Non, mais attends.
Attends, attends, attends, attends, attends, attends, attends.
Commence pas.
Quoi, quoi, quoi, quoi, quoi ?
Oh, hé, hé.
Hé, tu vas te calmer parce que sinon, c'est moi qui te calme.
Ok ?
Ok, gamin.
Oh, c'est Michel.
Oh !
C'est moi qui parle.
Ok ?
Ouais.
Ça parle, alors.
Non, vas-y.
Alors, déjà, la CBI, ça a été agréé par les PTT, mais maintenant, ça y est plus.
Ok ?
Pourquoi ?
Pourquoi ?
Euh...
Parce que maintenant, la CBI, tu peux la posséder comme tu veux.
Ça veut dire...
Vas-y, vas-y.
Ouais, je sais pas ce que ça veut dire, agréé.
Agréé, c'est...
Ben...
Quand t'achètes un téléphone dans un magasin, c'est agréé PTT.
Donc, derrière ton téléphone, t'as une marque.
Et dessus, c'est marqué agréé PTT.
Petit travail tranquille.
Ouais.
Voilà, ça veut dire ça, PTT.
Mais ça n'existe plus, les PTT, hein ?
Ah non, presque pas.
C'est eux qui nous envoient le courrier.
Quand ça marche...
À une condition que ça fonctionne bien.
Ok ?
Ok.
Euh, Cendrier ?
Oui ?
Tu t'écoutes ?
Non, ben attends, je t'écoute, c'est moi qui t'écoute, maintenant.
Tu réponds à la question, ou si tu réponds pas, ben, on va te dire bonne nuit.
Ok, bon, ben moi, j'ai pas de CBI, mais je compte bientôt en prendre une.
Ouais.
Donc, je sais pas, c'est laquelle la moins chère ?
Alors ça, pour l'instant, tu vois, là, tu commences déjà à me parler des questions qu'on n'est pas dedans encore.
Ah, excuse-moi, d'accord, j'attends.
Ok ?
Ok.
Alors, pour toi, ça va être...
Euh, si, la question que je vais te poser, à quoi ça va te servir ?
Ben, en fait, ouais, c'est une bonne question, à quoi ça va me servir ?
Ben, je sais pas, garder le contact avec les gens, c'est cool, avec les camionneurs, tout ça, c'est bien.
Non, mais, Fildar !
Non, mais, je prends un gâteau, mais...
Non, mais, attends, Fildar, s'il te plaît !
Attends, Fildar !
Excuse-moi.
L'autre, il ouvre carrément le paquet.
J'avance au micro.
Gérard, pour commencer, enfin, pour le début du débat, il y a...
Perforas, le vrai Perforas sur l'IRC, d'ailleurs, il te salue.
Il te demande qu'est-ce que ça veut dire, 6 billes ?
6 billes, en fin de compte, ça veut dire...
Ben, justement, c'est la question.
Ça veut dire 4 bancaires ou...
Ouais, ben, ça veut dire 4 bancaires ou...
Ben, oui, c'est tout, hein.
4 bancaires ou 4...
Cues bouchées, cues bouchées.
Cues bouchées, cues de bite...
Lâche-toi, lâche-toi, Lascar, vas-y.
Ok, non, allez, allez, allez...
Non, mais...
Moi, je croyais que ça voulait dire communication brève.
Ok.
La prévision de 6 billes, non ?
Moi, je croyais que ça voulait dire 6 billes trop, en fait.
Comment ?
Je croyais que ça voulait dire 6 billes trop.
Sur l'IRC aussi, l'indie, ça veut dire connard bourré.
Bon, ben, ça, ils peuvent dire ce qu'ils veulent, hein, de toute manière, tu peux...
N'importe quel nom.
C'est une bonne définition, quand même.
Mets ton doigt.
Mets ton doigt, tu réponds, s'il te plaît.
Ouais, c'est moi, je dirais.
Ah, il a son pont, lui.
Vas-y, laisse ton doigt.
Ouais, vas-y, vas-y, vas-y.
Eh, mets ton doigt dans mon cul, là, celui qui s'amuse à passer à chanter ça, il va commencer par fermer sa gueule.
Ok, merci.
Ça a coupé, hein, Manu.
Bon, Manu, c'est quoi, ce bordel, là, déjà ?
Je sais pas, l'auditeur, il a raccroché.
Ah, il a raccroché, mets ton doigt.
Ah, ben, c'est bon, tu prends quelqu'un d'autre.
C'est bon, c'est bon, c'est bon.
Allez, là, mais en plus, c'est cause, je crois que c'est un passionné de 6 billes et qu'il en a une.
Parce que, euh, sur le téléphone, tu peux...
Tu peux pas parler de tout.
Parce que, des fois, il y a des gens qui t'écoutent.
Ouais.
Donc, nous, avec mes potes, on a des business un peu chelous, donc on est obligés de passer par la 6 billes, on se met sur le canal 19, et là, personne ne nous entend.
Non, presque pas, presque pas.
Sur le canal 19, personne ne t'entend.
Non, mais attends.
Non, non, c'est privé, c'est un canal privé.
Ah, ouais, mais attends, tu me prends pour un con ou tu me laisses ?
Non, non, c'est pour moi et mes potes les routiers.
Non, non, mais attends, attends.
Ouais.
Petite truie.
Oui, je suis là.
C'est toi qui viens de me répondre ?
Ouais, ouais, tout à fait, ouais.
Bon, je te demande si tu me prends pour un con ou tu me laisses ?
Bon, comme tu veux, je te laisse, vas-y.
Ouais, eh ben, je vais te dire une chose, que sur le canal 19, déjà, une, tu peux pas rester 50 ans à raconter ta vie.
Ah, t'sais, j'ai pas besoin de 50 ans pour faire mes business, t'inquiète.
Ouais, ouais, non, mais moi, je te dis, sur le canal 19, t'as pas besoin de...
C'est quoi, le canal 19, Gérard ?
Le canal 19, ça va être la question 4.
D'accord, vous attendez la question 4.
Ok, mais Gégé, tu fais quoi au niveau de la juridiction pénale à ce niveau-là ?
Je veux dire, la civile, c'est quand même réglementé, tu fais quoi dans ce cas-là ?
Non, plus maintenant.
Ah, si, si.
Non.
Non.
Ah bon, t'es sûr ?
Maintenant, tu peux te procurer une civile comme tu veux.
Ah, donc, en gros, il y a un mec qui peut prendre une civile et puis il fait une radio locale dans sa chambre, c'est ça ?
Non, mais attends, déjà, une civile, tu sais ce que c'est ?
Euh, ouais, c'est le truc avec des boutons et des numéros pour...
Voilà, c'est un petit appareil comme, je dirais, un téléphone.
Ouais.
Hein ?
T'as un mic ?
Ouais, t'as un mic ?
Tu branches ton mic sur la civile ?
Tu tires une antenne.
Tu tires un fil qui te donne l'alimentation avec ton antenne et là, tu peux parler.
Attends, est-ce que t'as checké le flot d'abord ?
Comment ?
Tu checkes le flot d'abord ou pas ?
Attends, tu parles français, toi ?
Est-ce que tu checkes le flot d'abord ?
C'est quoi, ça ?
Avant de balancer la purée.
T'es dans la place ou quoi ?
Bon, j'ai la fièvre, je dirais.
Bon, fesse de taureau, fesse de taureau, allez.
Ouais, bah moi...
J'achète pas de civile parce que je trouve que le son, il est pourra.
T'as bien raison.
Tout naze, le son, tout pourri.
Il faut mettre une antenne.
C'est vrai qu'entre un téléphone et une civile, il n'y a pas de flot d'aujourd'hui.
Non, non, non, mais alors là...
Là, par contre, fesse de taureau...
Tu m'as un petit lobby avec cette antenne.
L'antenne, l'antenne...
Oh, s'il vous plaît !
Attendez, Gérard, réponds.
Ouais.
Fesse de taureau.
Ouais.
Si déjà, t'achètes une civile sans antenne, tu peux être sûr que t'entendras rien.
Bah, je sais, mais même avec une antenne, le son, il est naze.
Non.
Mais pourquoi, Gérard ?
Non, parce que là, il faut se dire une chose.
Avec une antenne de civile, donc tu la branches sur ton TX et ça a toi de...
C'est quoi, un TX ?
Un TX, c'est un appareil, comme dirait le Minitel ou téléphone.
Mais pourquoi, par exemple, quand tu branches une civile, ça fait...
Non, mais ça, c'est...
Non, mais c'est normal.
Non, mais c'est bouffé.
Attendez, il répond, il répond.
Non, parce qu'il y a certains TX...
Non, euh...
T'as du mal à les régler.
Mais c'est à toi de les régler, parce que, pourquoi ?
Faut se dire une chose, qu'avec l'antenne de civile, il te faut un TOS.
Un TOSmètre.
Ce qui te permet...
Un TOS, non ?
Non, non, non.
Non, non, un TOSmètre, c'est...
Ce qui te permet...
Gérard, un peu de respect.
Attends, s'il vous plaît !
Respect, respect, respect, c'est pas la chose.
Attends, j'en ai fait de la civile, donc je sais ce que c'est un TOSmètre, ok ?
Un TOSmètre, ça te permet de régler ton antenne.
Correctement, pour pas avoir de problèmes.
D'infrastructure.
Donc, si la personne ne sait pas régler son antenne, c'est son problème.
D'accord, et pour régler une antenne, il faut un TOSmètre.
Voilà, un travailleur clandestin, quoi.
Non, non, non, non.
Et il va vite, il est quick ou pas ?
Non, non, ça dépend d'où tu te trouves, et je vais même pas insister sur vos questions.
Sans pitié.
Ouais, ça sert à rencontrer des gens, et il paraît que face à la région du Nant, on peut rencontrer des gens.
Il y a des mecs sur la Cibi, je crois, n'est-ce pas ?
Ouais, ouais, moi j'ai entendu qu'il y avait un réseau de cul, Cibi, c'est ça ?
Ouais, non, mais attendez, attendez, attendez.
Attendez, parce que Gérard a un petit sondage, justement, sur ce que vient de dire, sans pitié.
Alors, donc il y a 45% des gens qui utilisent la Cibi pour faire des connaissances, et plus il y a infinité.
Mais ça, c'est des questions...
Infinité.
Ouais, mais...
Ouais, ouais, plus c'est infinité, ouais.
Ouais, mais ça...
Comment ?
Qui c'est qui a parlé derrière ?
Bon, les filles...
Sans pitié.
Ouais, sans pitié, je t'écoute.
Sans pitié.
Ouais, ben je te disais, il y a un réseau de rencontres sur du Nant assez cul sur la Cibi, donc je vais essayer de m'en procurer une.
Ouais.
Donc ce serait bien que tu m'expliques un peu comment ça marche.
Enfin, je vais écouter le débat, et puis je vais essayer d'apporter mes lumières.
Ah, mais ça, pour t'expliquer comment marche une Cibi...
Ouais.
Déjà, quand...
Quand tu viens chez toi.
Non, non, non, non, non.
Quand il n'y a pas de problème.
Non, non, non, non, il n'y a pas besoin de venir chez moi.
Elle achète sa Cibi à demande au vendeur.
Le vendeur lui explique comment que ça fonctionne.
Maintenant, si elle ne sait pas, eh ben, elle se débrouille.
C'est un petit poil.
C'est tout.
De toute façon, il y a une notice, Gérard, quand tu achètes une Cibi.
Bah oui.
Mais si la notice est en japonais.
Comment, comment ?
Si la notice est en japonais, je fais comment ?
Eh, si c'est des poignées de ton petit nègre, comment qu'on fait ?
Je te l'envoie, tu m'en prêtes ?
Ah, le roi de l'imitation de Gérard.
Ah, Gérard, pas de Gérard.
Bon, alors, deuxième question.
Graines de déchets.
Euh, Rigaud, une question IRC avant.
Euh, oui, on te demande, Le Chiant, il te demande depuis quand la Cibi existe-t-elle ?
Euh, ça, je sais pas, j'ai pas les dates, j'ai pas les dates approximatives, mais je pense que ça existe depuis longtemps.
Début juin, on m'a dit, 47.
Non, non, non, non, non, non, attends, la Cibi, ça va pas depuis juin.
Ça fait combien de temps que ça existe, la Cibi, à ton avis ?
Je sais pas, moi.
Ça fait plus de 20 ans, plus de 30 ans ?
Ouais.
Euh, attends, euh, la Cibi, c'est, c'est connu, t'as, t'as même des, des Cibis portables.
Ah, oui.
Sur Titanic, il paraît qu'ils en avaient une, les Cibis.
Non, non, mais c'est pas...
C'était une Cibi sur le Titanic ?
Eh, toi, fais gaffe là-bas, parce que je vais te faire avaler tes lunettes, si tu fais le con.
Mais non, c'est pour la télé, vas-y.
Donc, euh, deuxième question, Gégé.
Deuxième question.
Ouais.
Euh, de quoi parlent les Cibistes, en, en général, là ?
On va demander ça à...
C'est d'autant.
Non, ben, euh, ouais, ben, tiens, euh, voilà.
Voilà.
Comme tu l'as ouverte.
Parce que c'est que des routiers, je pense.
Hum ?
De cul.
Parce qu'il y a que les routiers qui...
Ah, il y a, à, à, à, à ton avis, il y a, il y a que les routiers qui...
Non, mais il y a bien 90% de Cibistes, euh, c'est des routiers, je pense.
Bon, alors, moi, je vais te dire une chose, que tu te trompes déjà.
Bon, c'est sûr que, euh, il y a, il y a pas mal de routiers, je suis d'accord avec toi.
Mais tu te trompes.
Mais faut te dire une chose, que il y a des chauffeurs de taxi qui, qui, qui l'utilisent.
Ouais, je voudrais dire aussi qu'il y a aussi des prostituées.
Ouais, ben, ça, euh, c'est leur problème, c'est...
Ça, c'est leur problème, c'est pas le mien !
Ben, avant, moi, je dis, les, les, les, les putes, elles tapinaient sur le trottoir.
Et maintenant, je trouve ça un truc scandaleux, parce qu'elles viennent tapiner sur la Cibi.
Et franchement, ça brouille les canaux, surtout si tu vas sur le canal 69, c'est un vrai bordel, là-dedans.
Ah, ouais, attends, attends, attends, qui c'est qui vient de, qui c'est qui vient de parler ?
C'est Petite Truie.
Alors, Petite Truie, j'ai jamais vu, euh, 69 canals sur, euh, sur une Cibi.
Il y en a combien, d'ailleurs ?
Euh, t'en as 40.
Des canals ?
Hum.
T'as, euh, tu passes du 1 au 40 et c'est tout.
À moins que t'as la, euh, la BLU, là, tu peux...
C'est quoi, la BLU ?
La quoi, la quoi ?
La BLU, c'est, c'est un, euh...
C'est un petit gâteau, ça, non ?
Non, non, c'est, c'est un truc que...
Un de marque, Gérard.
C'est un violet en plante d'arbre.
Mais attends, BLU, t'es toi, toi ?
Pas de pub ?
Bon, ouais, oh, vous, vous...
Non, c'est quoi, la BLU ? C'est quoi, la BLU ?
Non, euh, la BLU, c'est, c'est, ça permet que lorsque tu vas à l'introngé, tu peux correspondre avec quelqu'un qui est en France.
Donc, il te parle en étranger, en, je sais pas, en américain ?
Non, non, en étranger, non, mais par exemple, t'as...
Bon, s'il vous plaît, vous vous taisez quand je parle ?
Merci.
Ok.
Oh !
Merci !
La BLU, c'est, c'est un appareil que, euh, tu payes pour que ta cible soit homologuée pour ça, donc.
T'as, ça s'appelle la BLU, donc, homologuée.
Tu payes combien ?
Euh, je crois que...
Je crois que c'est...
Tu payes 250 balles en plus du prix de ta cible.
Par jour ?
Non, non, non, non.
Tu payes 250 balles plus le prix de ta cible.
Pour la vie ?
Pour tout le temps.
Et la BLU, ça te permet de correspondre, par exemple, toi, t'es ici à Neuilly.
Par exemple, t'as, je sais pas, je vais prendre quelqu'un au hasard de ta famille, ta sœur, qui est, qui est du côté de la Thaïlande.
Ouais, bah, putain, elle est en Inde.
Ouais, mais, de la Thaïlande.
Bien joué.
Ah, en Thaïlande.
On fait des massages, ouais.
À peu, à peu t'appeler.
Sur ma cible ?
Oui.
Mais attends, Gérard, avant...
Non, mais, non, mais, attends.
Attends, je vais, je vais expliquer pourquoi.
Parce que la BLU, ça te permet d'avoir plus de correspondance avec l'étranger qu'on a à l'heure actuelle, nous, en France.
Ça sert à quoi qu'on ait inventé Internet, alors ?
Bah oui, mais, mais, ça, attends.
On n'arrête pas le progrès.
Attends, moi, non, mais, Gérard.
Oui ?
Imagine quelqu'un qui est sourd, il peut pas être sur, il peut pas être sur le téléphone ou la cible, donc, forcément, il est sur Internet, c'est tout.
Non, mais...
Mais, mais, attends.
Attends, déjà sur...
Attends, le mec qui est sourd...
Pardon.
Excuse-moi, j'ai fait une fausse manip.
Je crois que toi, t'as l'air, je vais te mettre, et toi, la grosse bouche de l'âge, je vais te mettre, et toi, le maigre, tais-toi.
C'est celle dédicace pour Mobilik.
Comment ?
Je disais, c'est celle dédicace pour Mobilik.
Le film, le film, le film.
Qui c'est, qui c'est, qui s'appelle comme ça ?
Rodrigo.
Pierre Chalot.
C'est ça, c'est ça, oui, bon.
Donc, Sandrier, il y avait une question Internet, non, Rodrigo ?
Ben, il y en a plein, on est plus de 4000 déjà.
Oh là là, ouais !
Alors, il y a Davy One qui te demande s'il faut éteindre sa CB quand on va au cinéma.
Alors, là, c'est une bonne question.
C'est une sacrée bonne question de putain de merde.
Une colle.
Donc, de toute manière, oui.
Je vais dire que oui.
Et Turpentine, elle te demande combien ça coûte l'abonnement à la CB et c'est quoi le prix des communications ?
Est-ce qu'il y a des forfaits ?
Non.
Non ?
Non, non.
Il n'y a pas de forfaits sur la CB.
Mais comment ça coûte l'abonnement ?
Il n'y a que SFR et Itinéris.
Non, non, non.
Non, il y a Bouille aussi.
Non, non, non.
Ben, attends, mais arrête de parler, toi.
Les Maudit Cards, c'est pour ton taf, les CB.
Mais non !
Puneuse, mais, hé !
Non, mais t'as le 7 aussi de CGTL.
Voilà, t'as le 7 de CGTL et puis t'as le 3615 aussi qui fonctionne, hein ?
Ouais.
D'accord.
Il y a Ante sur l'IRC qui me dit qu'il y a le câble aussi.
Non, mais attends, ça, ça n'a rien à voir avec mes questions.
Oh, Sandrier.
Ouais, allô ?
Ouais.
Tu peux m'envoyer la question, s'il te plaît ?
Non, non, non, non, non.
Je répète plus les questions.
Non, non, on est déjà à la bourre.
Je répète plus les questions.
Alors, on accouche.
Ok, d'accord.
Bon, alors, en fait, de quoi ils parlent, les gars ?
Ben, sur les directions à prendre, tout ça, non ?
Éviter les bouchons...
Attendez, laissez-la parler !
Ouais, s'il te plaît, ouais.
Donc, je sais pas, éviter les bouchons sur la route, les directions à prendre, tout ça, non ?
Non, mais ça, c'est la...
Ça, c'est la...
Ouais, ben, à la rigueur, ouais.
Donc, en fin de compte...
Bon, je vais te répondre après, Sandrier, avant qu'on mette un disque.
Tais-toi.
Moi, je pense que les civils, attention, on peut les appeler, ils parlent le langage civique sur la route.
Donc, ils doivent se dire, ouais, salut, salut, Robert, disons que je te file des calendriers de cul de playboy.
Je t'échange un playboy contre un penthouse.
Ouais, je t'ai déjà dit, ouais.
Moi, je t'échange ma main dans ta gueule contre une connerie.
Ok.
On se fait chier avec quelqu'un comme moi, on s'en vise.
Mais attends.
Non, mais moi, je t'emmerde.
Oh là là.
Ok.
Justement, Gérard, par rapport au sondage, là, t'as vu la deuxième ?
Ouais, ouais, mais attends, on va finir.
Petite prie.
Petite prie, je t'ai déjà répondu, mon amant.
Attends, je suis pas ton amour, d'accord ?
Alors, tu vas te faire sauter, toi, connard.
Je te kiffe.
Bon, alors, hop, bonne nuit à toi.
Allez, hop, celui-là, dégagez.
Fermez le vent, lui.
Hop, fesse de taureau.
Tiens, Michel, je t'ai déjà répondu.
Ok.
Sans pitié.
Ça sert à communiquer.
Ça sert à communiquer.
Vous kiffez, ça, les gars.
De quoi, de quoi ?
Ça sert à communiquer des plans cul.
Quoi ?
Ça sert à communiquer.
Hé, parle un petit peu plus fort devant ton combiné, parce que j'entends pas.
C'est un téléphone de merde, hein.
Ça sert à communiquer des plans cul sur la région du Nant.
Ouais, d'accord.
Je crois que tu vas retourner dans ton lit.
Ouais.
Tu vas continuer avec ta cibille pour essayer d'avoir des petits cochons qui veulent bien te sodomiser.
Ouais.
Hein ?
Et puis, on va te dire une bonne nuit.
Ouais.
Ok ?
D'accord.
D'accord.
Eh ben voilà, bonne nuit à toi.
Salut.
Il y a du poids sur la cibille, toi, là.
Bon, c'est...
Merci.
Donc, sur la question, là...
Attends, il y a Métondoa qui n'a pas répondu, s'il te plaît, Gérard.
Ah, c'est...
Ouais, Gérard, excuse-moi, mais tu m'as pas appelé.
Ah, oui, oui, oui, excuse-moi.
Ouais.
Ouais, alors, moi, j'ai dit que sur la cibille, ils parlent un peu de tout, quoi.
Mais quand ils parlent...
Tu veux, là, j'ai la cibille à côté de moi et...
Ouais.
Allume-la, va.
Tu mets quelle la 19, là ?
Allume-la, allume-la, allume-la, vas-y.
Tu mets quelle la 19, hein ?
Vas-y, vas-y, vas-y.
Voilà.
Vas-y, demande...
Demande quelque chose.
Eh, il y a quelqu'un, là ?
Déjà, pour commencer...
Ouais, ben, ça gueule, mais c'est ce qu'ils font, hein.
Non, non, attends, attends.
Déjà, pour commencer, on ne demande pas.
Il y a quelqu'un ? Tu demandes.
Qu'est-ce qu'il faut dire, justement, voilà.
C'est quoi ton QRZ ?
Euh, moi, c'est DJ Boost.
Bon, alors, tu dis DJ Boost...
DJ... DJ Boss...
Pour un...
DJ...
DJ...
Ouais.
DJ Boss pour un STTX.
OK, alors, attends, j'essaie.
Vas-y.
Ouais, attention, les stations, c'est DJ Boss pour un STTX.
Là, il a transformé les stations.
Voilà.
Donc, là, il y a du monde.
Voilà.
Donc, il y a du monde.
Donc, là, quelqu'un répond, c'est ça, Gérard ?
Donc, là, tu demandes...
T'as demandé...
Attends, attends, attends.
Oh, mets ton doigt.
Mets ton doigt !
Ah, là, ben, c'est ton doigt.
C'est ton doigt !
C'est ton doigt !
C'est ton doigt, Manu.
Ouais !
Faut que tu commences, là !
Ça y est !
Voilà, donc, là, je peux vous dire que, pour faire...
Déjà, quand vous achetez un STTX, déjà, la première chose que vous faites, vous allez...
Non, j'ai pris un 103XPX, moi.
Non, non, non, non, non, mais attends.
Déjà, pour commencer, quand vous achetez un STTX que vous savez pas vous en servir,
déjà, le vendeur vous explique comment que ça marche.
Après, vous allez sur le canal 19, vous dites, voilà, par exemple, un QRZ bidon,
puis la pisse pour un STTX.
Non, mais comme ça, tu vois, c'est un QRZ que je prends au hasard.
Le mec, il va te dire, bon, ben, c'est OK, ça passe.
Je te change ton slip.
Stop, stop, stop !
Je dirais, sur IRC, il y a Sardine qui te demande si on peut mettre sa 6 billes sur liste rouge.
Non.
Oh, putain.
Mais attends, mais c'est pas des téléphones, une 6 billes ?
Moi, j'en sais rien.
Non, mais tu vois, les gens de l'Internet, ils sont largués en 6 billes.
Ils connaissent que leur...
Ils arrivent pas à se connecter sur la 6 billes avec l'Internet.
On peut pas ?
Mais non, c'est impossible.
C'est impossible.
Donc, alors, à la question que je vais poser...
Donc, là, va mettre un disque, mon chéri.
Mon chéri...
Attends, je suis pas ton chéri, d'accord ?
Pas de marque !
Toi, tu vas te faire sodomiser, toi.
Donc, il y a 23% des routiers qui utilisent...
Utilisent seulement leur 6 billes pour trouver un endroit pour faire leurs besoins.
Alors ça, Gaël...
Ouais, Gaël...
Gaël, je vais te dire une chose.
Que là, t'as...
Le sondage que tu viens de trouver des 23%, je sais pas où t'as été me le chercher.
Peut-être qu'elle a voulu dire, tu vois, comme ils sont sur la route, par exemple,
ils veulent une station-service parce qu'ils ont envie de faire leurs besoins,
ils peuvent peut-être pas s'arrêter sur le bord de la route pour pisser dans le...
Non, non, mais attends.
Surtout sur l'autoroute, Gérard.
C'est dangereux, un camion qui s'arrête sur l'autoroute, c'est dangereux.
Non, mais sur l'autoroute, faut se dire une chose.
Une chose, par contre...
Merde, j'ai y arrivé.
Par contre ?
Faut se dire une chose, par contre, que t'as plusieurs aires de repos.
On l'a bien vu quand on a été avec Max, je sais plus, à...
Non, mais ne le dis pas, ça le dit pas où on est allé, ne le dis pas, ne le dis pas.
Je sais plus, du côté du Havre, là-bas.
Ouais, on a pris des photos et tout.
Faire une soirée.
Hum, hum.
Donc, il y avait...
Il y avait pas mal d'aires de repos.
Donc, là, ils peuvent s'arrêter.
Donc, il y a plusieurs routiers, donc ils peuvent papoter ensemble.
Donc...
Ah, d'accord.
La troisième question qu'on va poser, c'est...
C'est, peut-on acheter la Cibi en allant à la banque ou autre ?
Et on va s'écouter les petits bois du bois de boulagne avec des envies de caca.
Et on se retrouve tout de suite après au 0803 085000 et 0870 5000.
C'est quoi ?
C'est le disque ?
Ah bah, dis-donc, il est pourri, hein ?
Et voilà, c'était les petits bois du bois de boulagne avec des envies de caca.
Et donc, il est 1h... 1h21 et vous êtes toujours sur Fun Radio.
Donc, vous pouvez toujours nous appeler au 0803 085000 0870 5000.
Et toujours lire, c'est www.fr.funradiorigo.
On est combien, s'il te plaît ?
On est 4324,2.
Ça cartonne fort, ce soir.
Le débat se passe bien.
Je salue 2-3 personnes visées.
Je salue Paradox, Bacchus, Christophe, Izen, Sardine, Le Vrai de Marseille, etc.
Il est là, Davy One ?
Ouais, bien sûr, il est là.
Ah, c'est cool.
Et moi, je salue une personne, un cibiste.
Tout particulièrement, donc je vais saluer 2 cibistes aussi.
Donc, c'est-à-dire Lolo91.
C'est son QRZ, ça ?
On va peut-être l'appeler tout à l'heure.
On va l'appeler tout à l'heure, oui.
On devrait l'avoir dans nos débats.
Et je salue Petit Guépard qui est sur la route.
Ah, Petit Guépard.
Le guépard qui nous écoute.
Le guépard.
Donc, je te fais des gros bisous.
Et on va récupérer Sandrine.
Oui, allô ?
Bonjour. Rebonsoir, pardon.
Mets ton doigt.
Ouais, rebonsoir, Gérard.
Tais-toi.
Salut, les bébés.
Fesse de taureau.
Sringue terre ouverte.
Sringue terre ouverte, bonsoir.
Oui, bonsoir, c'est Sringue terre ouverte.
Fesse de taureau.
Ouais, rebonsoir.
Gérard, tu peux me redonner le titre du livre parce que j'ai bien kiffé.
T'as bien kiffé ?
Ouais, j'ai bien kiffé.
Je kiffe.
Tu kiffes à la FNAC, c'est tout ?
Tu le kiffes à la FNAC ?
Et puis, basse-toi.
Ok, et Camembert ?
Salut, Gérard.
Alors, donc, troisième question.
Peut-on acheter la CB en allant à la banque ou autre ?
On va demander ça à Sandrier.
Ouais, ben moi, je pense pas.
À la banque, on peut pas trop acheter des CB, quoi.
Mais je pense qu'ailleurs, ouais, genre au supermarché, au casino, des trucs comme ça.
Pas de marque ?
Pas de marque.
Non, mais elle te m'a dit, en fin de compte, si on vient bien à la banque, on peut acheter des CB.
Si on vient bien sur le débat, CB, ça veut dire quoi ?
Ça veut dire carte bancaire.
Ça n'a rien à voir.
Ah, très bien.
N'importe quoi, ça.
Quoi, n'importe quoi ?
Si vous êtes pas contents, derrière, vous vous écrasez.
Bien sûr, Gérard, ça veut dire ça.
Je comprendrais pas le principe, alors.
Non, mais attends.
Tout le monde me dit, ouais, mais CB, ça veut dire quoi ?
Bon, ben, maintenant, je dis, ça veut dire carte bancaire.
Il faut un code.
Si tu veux faire de la CB, il faut avoir un code.
Ah, oui, mais en fin de compte, t'as pas besoin d'avoir un code pour acheter une CB.
Donc, mettons-lui un Z.
Il y a une puce dans le soleil.
CB, ça veut dire carte bancaire.
Mets ton doigt.
Ouais, Gérard, écoute.
Ben, écoute, pour moi, la CB, moi, en ce moment, j'anime une radio gay sur Verdun.
À partir de la CB, justement.
Ah, bien.
Donc, la CB, c'est pas moi qui l'ai achetée, donc je peux pas te répondre.
Et le matos, on l'a déjà.
Moi, la CB, je l'ai chez moi, mais c'est juste pour m'entraîner, quoi.
Ouais, mais, donc...
J'attends que 2-3 routiers, puis on se parle, et puis voilà, quoi.
Ah, ben, attends.
Mais attends, tu te fous de moi, toi ?
Ben, non.
Ben, si.
Ben, pourquoi ?
Je te demande de quoi parlent les cibistes, en général.
Tu m'as même pas répondu.
Tu m'as répondu à travers la plaque.
Mais si, t'as répondu.
Il t'a dit que lui, il faisait une radio sur CB, donc c'est de ça qu'il parle.
Bon, OK.
OK, merci, Rigo.
Est-ce que tu vois ?
Merci, Rigo.
Euh, tais-toi.
Ouais, ouais.
Tais-toi.
Ouais, ben.
Moi, donc, ouais, ben, moi, ma CB, comme je t'ai dit, bon, j'en ai déjà une, hein,
ça remplace le téléphone.
Ouais.
Je l'ai acheté dans un petit magasin qui s'appelle les CB Fuckers, et puis...
Ouais, ben, euh, tais-toi, tu, tu, tu, tu pressurises pas les noms, d'accord ?
Ouais, y a pas de pub, hein, sur le son.
J'ai acheté dans un magasin de CB, et je voulais dire que c'était un gros routier poilu
qui était à la caisse, d'ailleurs, il a voulu me prendre quand tu t'es fait tomber ma CB.
Je sais pas trop.
Hop, vas-y.
Bonne nuit.
Merci, tais-toi.
Non, non, mais...
Merci, merci.
Tais-toi, tais-toi, tais-toi, tais-toi.
Tais-toi, tais-toi, tais-toi, c'est bon, c'est bon.
Tu es fier pour toujours.
Au revoir.
Mais par rapport, justement, par rapport au petit sondage de Gaël, là, y a 61%...
Non, non, mais attends, euh, j'ai pas fini avec les jambes, là.
Ah, d'accord, non, mais par rapport, tu vois, on peut...
Ouais, non, mais, ouais, mais, euh...
Ok, parce qu'il y en a pas mal, les sondages.
Non, non, ouais, mais après, ben, là, c'est un peu trop long, tous les sondages.
Ben, justement, en temps de temps en temps, ils peuvent réagir en même temps de la question.
Fin de chair ouverte.
Fin de chair ouverte.
Ouais.
Bon, je t'écoute.
Quand je t'ai rencontré, j'y ai pas cru.
Ça va pas, fin de chair ouverte, t'as un problème ?
J'ai des bouffées de chaleur, là, je sais pas ce qui se passe.
Ouais, ouais, je crois que, t'as l'air, tu vas avoir des bouffées de chaleur...
En standard.
Manu, au standard.
Ok, bon, alors, ce que je voulais dire, c'est que j'écoute souvent Radio Vazdine, là, l'autre, Tarlouz, là.
Ouais, ouais, ouais, c'est bon, c'est bon, allume, allume, allume, hop, hop, hop, hop, hop, terminé pour toi.
Baisse de taureau.
Ouais, alors, donc, moi, je sais pas, je pense pas qu'on puisse acheter une cibille dans une banque.
Pardon.
Mais peut-être, je sais pas, moi, dans un truc Paris pas cher, tu vois, un truc dans le style, tu peux trouver ça, quoi.
Voilà.
Ok.
Tu as mon verre ?
Ouais, bah, moi, j'ai acheté une cibille à mon copain, je l'ai acheté chez mon boulanger.
Parce qu'en fait, ils vendaient la sienne, donc j'ai acheté une cibille chez mon boulanger.
Justement, par rapport à ce qu'elle vient de dire, Gérard, est-ce que tu crois que c'est mieux d'acheter une cibille neuve ou d'occase ?
Euh, ça, c'est une bonne question.
Non, parce qu'en fin de compte, si t'achètes une cibille d'occase, tu sais pas sur quel matos tu vas tomber.
Le mieux, c'est d'acheter une neuve.
Mais les prix, je pense qu'on va en parler, on va essayer de...
On va aborder le sujet ou pas ?
Ouais, on va...
On en parle maintenant.
Non, non, mais on va aborder le sujet sur savoir combien coûte une cibille, parce que là, vu les questions qu'on a et puis vu l'heure qu'il est, donc faudrait qu'on écoute les questions.
Ouais, Gérard ?
Oui ?
Ouais, une petite question, je vais faire un peu.
C'est qui ?
C'est qui ?
C'est qui ?
C'est André, excuse-moi.
Oui ?
Je veux savoir comment t'écris, cibille.
Cibille ?
Ouais.
Alors ?
Ouais.
Une cibiste ?
Non, cibille, une cibille.
Cibille, bah, un CB.
Pardon ?
CB.
CB, en anglais, quoi, cibille, c'est ça ?
Bah, un CB ?
Ah, ouais, pas bête, je viens de comprendre, ok.
C'est pas français, alors ?
Pardon ?
C'est pas français comme matos ?
Ah, si.
Ah, pourquoi on dit cibille comme les anglais ?
Ah, ouais, c'est ça.
Mais non, bah, attends.
Comment on dirait un CB, une CB ?
Non, mais un CB, CB, c'est carte bancaire.
C'est des feuilles, les CB.
CB, c'est des feuilles pour rouler des joints ou autres.
Des joints ou autres ?
Non, mais...
Mais, cibille, en fin de compte, c'est quoi ?
C'est français, hein ?
Tu peux le trouver ?
Bah, cibille, non, cibille, c'est pas français, c'est anglais, comme tu dis, CB.
Non, parce que moi, je voulais mettre une annonce dans le journal, quoi, parce que je cherche
maintenant, ça m'intéresse, maintenant qu'on en parle, je cherche une cibille, quoi.
Donc, je vais savoir comment l'écrire, et voilà.
Ouais, euh...
Donc, CB, ok.
D'accord.
Ok.
Après, question, ouais.
Attends, attends, attends.
Si le copain de Gégé pouvait raccrocher son téléphone pour que je le rappelle, ce serait
sympa, mais...
Euh, Laurent, s'il te plaît, si tu peux raccrocher, si tu pouvais raccrocher, on essaye de te
joindre, alors raccroche.
Laurent, scan the phone.
Merci.
For tonight.
Alors, donc, 61% des cibistes préfèrent utiliser leur téléphone portable, donc je
vois pas...
Bah, par rapport à la cibille, tu vois, il y en a peut-être qui considèrent que c'est
mieux, le portable.
Non, mais...
Non, mais...
Ah, oui.
D'accord, je vois...
Tu vois ?
Je vois le rapport, le sondage que Gaël vient de me donner.
Donc, en fin de compte, c'est vrai qu'il y a des cibilles portables.
Ah, oui ?
Et c'est un genre de petit Akiwalki.
C'est un genre de petit Akiwalki comme un téléphone...
Portable.
Portable.
Et en fin de compte, sauf que dessus, au lieu d'avoir marqué n'importe quoi comme
nom, c'est des canaux.
Donc, tu peux aller du 1 au 40 aussi.
Oui.
Gérard, sur IRC, il y a Sardine, le vrai de Marseille, qui dit qu'il ne faut pas acheter
une cibille à un routier parce que c'est des voleurs.
Non, c'est faux.
Non, mais c'est une cibille d'occasion aussi, donc c'est des voleurs.
C'est faux, c'est faux, c'est faux.
Oui, Manu, on accueille ton pote, alors.
Alors, à la place...
Oh, l'eau !
A la place de...
Bah, à la place de qui ?
A la place de Tétois.
A la place de Tétois.
Salut, Laurent.
Salut, Gégé.
Salut, tout le monde.
Salut.
Salut.
Salut.
comment vas tu toi sans déconner bon alors sans déconner tu peux tu peux répondre à la troisième
et aussi moi qui commande il est là il est là j'ai envie de revenir au débat il ya 10 ans sur
l'hiver c'est qu'ils demandent si une cibi ça se nettoie avec des coton-tiges non j'y réponds même
pas non c'est lourd on laisse parler laurent
laurent
donc alors peut-on peut-on acheter la cibi en allant à la banque ou autres non mais en fin de
compte c'est quoi une cibi c'est bien c'est bien ça veut bien dire carte bancaire merci
mais ça veut dire carte bleue carte bancaire si lolo explique nous ce que ça veut dire si
oui c'est tout de quoi communication bref c'est ce que j'ai dit tout à l'heure
il dit quelque chose de bien
pour une fois à la classe donc troisième
il ya zz sur l'hiver c'est qu'ils demandent si tu utilises l'antenne de ta cibi quand t'as pas de
coton-tiges mais je ne réponds pas tu fais un boulot de merde ce soir à la plage de cinq terres
ouvertes on accueille zona oui bonsoir c'est zonat n'accueille pas oui c'est zonat zonat allez tout le
monde salut donc sur les cibi alors je tiens un petit magasin de cibi à paris
donc sans citer l'adresse c'est boulevard du général tu peux retourner chez toi j'invite
tous les cibistes à venir s'affolusionner boulevard voltaire
terminé pour lui combien plus précisément non mais ça y est il est plus là donc alors en antenne il m'a dit 115 à l'heure en antenne il m'a dit 115
ah merci qu'est ce qui se passe tant à l'heure j'ai peut-être à 115 dans le cul toi ouais quel est
et quel est les codes cibi les plus employés alors on va demander à cendrier celui qui fait du bruit
derrière arrête parce que ça commence à m'énerver non c'est pas un portable on va demander à cendrier
ouais les codes en cibi les plus connus ouais franchement je sais pas je connais pas trop la cibi donc je peux pas te répondre ah bah d'accord
alors pourquoi tu participes au débat sur la cibi pour en savoir plus
bah voilà c'est ça il faut être ouvert un peu quoi il faut comprendre il faut savoir
ok t'es ouvert toi gérard
ouais moi la cibi moi je la connais sur le bout des doigts
la cibi moi c'est mon rayon
euh mets ton doigt
où je le mets où
on l'a dégagé mets ton doigt
ah en plus
ah bon bah oui
on l'a remplacé par le lot il est là bah non non non
ah non c'est tais toi qu'on a viré
t'es un manu tu lui fais un boulot de merde ce soir
manu tu vas prendre le débat
vas-y mets ton doigt
ouais alors les codes les plus courants
il y en a plein quoi
donc t'es qtrs qtrz
ouais
toi t'es tataillé gérard je crois
ouais bah attends gérard t'écoute pas il est en train de se battre avec manu
gérard écoute le débat
ouais je t'écoute
ouais alors ton qtrz t'est tataillé c'est ça
non
non ça l'est plus parce que gérard arrête la cibi il a eu un accident
hein
t'as eu un accident
t'as eu un mur avec
oh oh au moins qu'on le voit
ouais bah arrête c'est ton débat là
mais mets ton doigt
allez allez
allez c'est bon c'est bon c'est bon
allez on active là
bah ouais bah je te parle gérard tu me réponds pas
bah vas-y
bah y'a qtrs y'a qrl y'a euh y'en a plein
ouais c'est des faux codes hein
yl aussi ouais c'est des faux codes mais
c'est utile hein c'est utile
attends bon ok
laurent
oui
donc pourquoi
non on dirait pas à white
y'a gaso liquide gaso solide
ouais
c'est manger boire
ouais
un bisu c'est euh quand on se rencontre
hum hum
mais y'en a plein d'autres
bon j'ai mon papier devant la porte mais je m'en rappelle plus
non mais là
devant ton téléphone mon coco
comment
devant voilà très bien devant le téléphone
non mais je sais pas celui là
t'as la petite chiasse aussi t'as grosse colique t'as
j'ai pas du tout soin de vous et tout ça des trucs comme ça
non et non
gérard
oui
c'est un fvc qui te demande si c'est dangereux la cibi
non
totalement totalement
non
non
gérard
excuse moi à la place de zona que t'as dégagé on accueille blénaud
bonsoir
ouais blénaud
oui bonsoir tout le monde
bonsoir blénaud
oui alors je vous appelle je vous appelle de limoges bonsoir à tous
ouais mais on s'en fout que t'appelles de limoges
attends je me présente mais la fréquence c'est 127.5
non non mais moi je m'en bats les couilles
ok
ben je tenais à dire sur le débat que donc moi je connais un endroit sympathique qui s'appelle cibi and trucks
c'est 13 avenue clémento
c'est à limoges
ça c'est malin ça
fesses de taureau
viens nous dire à l'antenne que oui c'est à limoges
ah d'accord
et au combien déjà
fesses de taureau
ouais alors moi les surnoms que j'emprunte je sais pas du tout puisque j'ai pas de cibi
et donc justement je participe à ce débat pour me renseigner
ok
ben moi je pourrais te renseigner après avec laurent on pourra discuter de certains
de l'antenne tout ça
ouais on en discutera un peu après
ouais ouais pas de problème
euh camembert
ben moi je connais ben comme les autres quoi ykl qrz
il y a un bruit de portante ça devient lourd là
manu
ben attends
je gère
je sais pas d'où ça vient à mon avis c'est laurent là il fait marcher son bordel
non non non ça et le métro on est bavard on est vernis
ouais en plus c'est le dernier métro
ben c'est un film ça
ouais
euh camembert
oui je t'ai dit gérard
ouais
je te copie
hum hum
etc etc
ok mais en fin de compte personne personne essaye de d'aller d'aller au fond des pensées
parce que en fin de compte qth c'est là où t'habites comme laurent disait hein laurent
oui tout à fait
ouais
euh ykl bon ben ça c'est pour les nanas
euh
yc c'est quoi
non yc euh ça existe pas
ouais
après t'as ton qrz c'est c'est ton nom de de siby
ouais puis y'a quoi d'autre lpf
non non non t'as oh t'as t'as plusieurs codes mais ça faudrait tpsg t'as
non non non non non y'a y'a y'a y'a plus y'a plusieurs codes euh
ouais gérard gérard c'était les tons d'oie là j'aurais en rajouté un petit peu quelques-uns là
ouais vas-y
y'a qra aussi c'est l'endroit où t'habites
ouais euh ouais
et puis je crois que y'a d'autres qra aussi quand tu vas aux toilettes je crois
eh ben eh euh laurent il te l'a dit hein c'est
eh
de quoi
euh laurent il l'a bien dit euh
gastrolytique
gastro liquide
gastro liquide
ah le gastro encériste quand tu vas aux toilettes aussi
nan nan nan nan nan mais attends
eh déjà qth c'est pareil que qra
ah non
ah ah bon
nan qth c'est l'endroit où tu te trouves et qra c'est où t'habites
eh ben alors
c'est pas pareil
euh si
nan on peut trouver c'est dans pendant quand t'es en voiture t'habites pas dans ta voiture
ah ouais mais attends nan nan mais nan nan merde
on peut avoir une cibi en voiture hein
ouais mais euh si en si euh en voiture si
bah oui si
si si en voiture
parce que moi mon oncle mon oncle il a acheté une voiture de case le mec il l'a vendu avec une cibi dedans avec l'antenne et tout
ça y est il l'a changé
euh c'est quoi son qrz
ah ben il en a jamais fait mais s'il veut il peut en faire parce que moi une fois j'ai branché
et euh j'ai mis sur le canal 19 après j'ai appelé ma grand-mère sur le canal 22
ouais
que j'avais dit de se mettre sur le canal 22 pour être peinard
ouais
et euh ça t'intéresse ce que je dis ou pas
mais t'as pas appelé ta sœur sur le canal 22
- Elle n'a pas la fenêtre à serre sur le canal 50. - Non, parce qu'elle n'a pas la BLU. C'est pour ça.
- Manu. - Oui, pardon, à la place de Blénaud, on accueille Sistitz.
- Bonsoir. - Salut Sistitz. - Bonsoir à toutes les filles en particulier. - Salut. - On t'écoute.
- Donc, je vous appelle de Toulouse. - Ouais, ben, ouais, eh oh !
Si c'est pardonné un truc que tu lui dis : "Ouais, j'ai un magasin à telle adresse", c'est même pas la peine.
- C'est 12 rue du Capitole ! - Comme ça, tu iras faire le Capitole chez toi.
- Il me dirait que c'est bien à Toulouse. - D'accord. - Et c'est 12 rue du Capitole.
- C'est 12 rue du Capitole. - Ouais, c'est ça. - C'est à Toulouse. - Pas de pub, merde.
- Alors, il y a un sondage. 32 des gens pensent que l'abonnement de Chibi est trop cher.
- Donc, il n'y a pas d'abonnement. - Il n'y a pas d'abonnement. - Non.
- D'accord, tu peux en faire une autre alors. - Euh... - Gérard ?
- Oui ? - Tu veux dire que si il y a des vieillasses qui te donnent...
- Tu me demandes ce que c'est ? - Il est là, lui !
- Salut, Davy One ! - Bon !
- Le GPT-AQBCOPIDKCLKKIRCT... Qu'est-ce que c'est ? - Quoi ?!
- Attends, hé ! - C'est long, c'est long.
- Hé, Davy One ! Tu t'essayes d'abréger parce que là, je comprends pas ce que tu me demandes.
- Ouais, c'est pas grave. - Euh... Donc, euh... 32...
- Ah, tu as fait celle-là. - Donc, 32%... Ouais.
- Ouais. Après, 86% des gens ? - Alors, 86% des gens qui ont une Chibi...
...sont sourds et n'ont pas... n'ont pas le bac. Alors ça, euh... ça, c'est pour les étudiants.
- Ouais. - Ça, on n'en a rien à foutre. - D'accord.
- Mais ça, euh... je vais te dire une chose, si les étudiants se t'emballent avec une Chibi dans leur lycée...
- Ouais, c'est mal. - Ils sont complètement starbés. - C'est clair.
- Étudiants ou étudiantes. - C'est clair. 12% des gens...
- 12% des gens rêvent toute la nuit de se prendre une bonne grosse Chibi. Alors là, je voudrais bien savoir...
Euh...
Je voudrais bien savoir le rapport avec le débat sur la Chibi.
- Mais peut-être qu'il y en a qui, tu sais, qui rêvent d'avoir une Chibi... - Non, mais Gaëlle...
- Non, non, mais attends... - Gaëlle, si tu écoutes Gaëlle...
- On va demander... on va demander à Gaëlle... - Bonne fête, Gaëlle, aussi.
- Ah, c'était la 5, Gaëlle. Bonne fête. - Bonne fête, Gaëlle.
- Donc, on va demander à Gaëlle qu'elle me trouve une réponse à la... à la... au pourcentage qu'elle m'a donné.
- Ok. - Donc, cinquième question. Pensez-vous que la Chibi devrait-elle être utilisée sur une autre personne ?
- La Chibi devrait-elle être utilisée sur une autre planète ? On va demander ça...
- Oui, euh... - Pardon, avant que tu commences, à la place de... de Blénaud...
- Non, à la place de Sissi. - Non, à la place de Sissi, on accueille Veru.
- Oui, bonsoir. - Salut, Veru.
- Bonsoir à tous. - Manu.
- Manu. - Ouais ?
- On prend sur les 24 signes. - C'est ce que je fais, Gérard, regarde.
- Bon, Gérard, pour revenir au débat, il y a Turpentine qui te demande si, avec la Chibi, on peut parler en morse avec une otarie.
- Alors, euh... parler en morse avec une otarie, je ne pense pas.
- Je ne pense pas, parce que... déjà, les otaries, c'est des... ça doit être des poiscailles, ça ?
- Ouais, c'est... ouais. C'est des animaux. - C'est des animaux en plus, Gérard.
- Comment ? - Tu vives au Kenya.
- Mais tu fuckes un peu ou pas ? - Comment ?
- Tu fuckes un peu ou pas ? - Non, je fuck pas. Je fuck ma wife.
- T'en as pas, d'otaries, toi ? - Non, moi, j'ai pas d'otaries, moi, j'ai qu'une truie.
- Moi, je fuck pas ta wife, hein. - J'ai qu'une truie.
- Comment, ta truie ?
- Elle s'appelle... elle s'appelle "Je t'emmerde".
- Ah, d'accord, OK. - Elle s'appelle "Je t'emmerde" ?
- Ouais, elle s'appelle "Je t'emmerde". Et elle vous chie dans le cul.
- C'est fin. - Euh, Régo ?
- C'est fin. On a perdu 1200 personnes, là.
- Merde. - À cause de quoi, Régo ?
- Bah, chie dans le cul, là. Ils ont pas aimé... Attends, je regarde un truc.
- Ouais, ben, donc, je pose la question. Pensez-vous que la CBD devrait être utilisée sur une autre planète ?
- On va... on va la faire, la question. Après, on va... - Ouais, on mettra le disque après, ce soir.
- On le mettra après, vu qu'on a commencé à la bourre. Donc, Rousseau, il est pas pressé, hein.
- Ouais, OK, comme Régo, je pense.
- Ouais, ben, il va prendre à 5 heures du matin, et puis c'est tout, hein. Wesh, wesh, wesh, hein.
- Ouais, ouais. - Ouais, wesh, wesh.
- Donc, on va demander à Cendrier, allez.
- Ouais, franchement, ce serait trop bien, hein, qu'on puisse communiquer avec les extraterrestres, tout ça.
- Ouais. - Et tout ça.
- En plus, t'imagines, avec le visiophone, ce serait génial, hein.
- Ouais, mais... - On pourrait voir la touche des extraterrestres, tout ça, ce serait cool, hein.
- Ouais, mais faut voir Canal.
- Non, non, mais attendez, moi, je vais vous demander une chose.
Ça, c'est une question que je vous pose à tous, donc vous allez me répondre.
Là, ça fait deux choses, hein.
Vous allez me répondre : est-ce que vous pensez que le Big Bill...
- Rien d'info du Big Bill, on parle des CB.
- Non, mais est-ce que le Big Bill, qui est à la télé, pourrait avoir une CB pour communiquer avec Vincent Lagaffe ?
- Mais non, il a trop de tuts, ce mec-là, il a pas besoin, il a pas besoin, ouais.
- Non, mais c'est bon, on n'est pas à un mariage, hein, pour mettre les klaxons, hein.
On parle pas de mariage, hein.
- Lagaffe, il communique pas, hein.
- Ah non, il communique avec qui ?
- Bah, je sais pas, mais il fait tout le temps des bruits et tout, je sais pas ce qu'il fait, ce mec-là, mais...
- Il a pas de potes, il a pas de potes.
- Il communique pas, c'est pas...
- Bon, allez, allez, allez, mets ton doigt, là.
- Un pauvre gars. - Ouais, Gérard.
Bah écoute, moi, je dis qu'il est déjà tellement la merde sur la CB...
- Ouais.
- ... que si on en est ailleurs, bah voilà, c'est encore plus inaudible.
- Ouais. - On a eu des bruits de routiers sur la route,
alors en plus, ils continuent de nous rajouter de l'espace, on est mal, en plus...
- Non, mais attends.
Attends, mets ton doigt.
Je vais te dire une chose, qu'on est bien contents
de posséder une CB dans sa voiture
et de communiquer avec des routiers
pour savoir comment que ça roule.
Hein, on est bien d'accord.
Oh, mets ton doigt.
Oh ! - Gérard se riaissait hier,
il me dit : "La CB, c'est bien en abusé, ça craint."
- Ben, ça, c'est vrai que...
Après,
une fois que t'es dedans,
tu peux plus t'en...
C'est comme une drogue.
Tu peux plus t'en passer, c'est comme...
C'est comme fumer...
C'est comme fumer ou boire, voilà.
Celui qui vient de dire "Merci".
- T'as tous les vis, toi, alors.
- Non, non.
Moi, j'ai... Ah, il me manque un vis.
C'est de baiser.
C'est ça qu'il me manquait.
- Non, non, non, non.
- C'est pas ce que j'ai fait avec Bulldog Mister.
- Bulldog Mister, attends, merde, toi, connard.
T'as compris ça ?
- Ouais, j'ai compris.
- OK.
- Et tu sais pourquoi il te dit ça ?
- Il est vraiment...
Il est vraiment...
Il est vraiment phénoménal !
La, la, la, la, la, la, la, la, la...
- Eh ben...
- Bon, Laurent...
- Il est vraiment...
- Oh, mon gueule derrière, s'il vous plaît !
Merci !
- Eh, t'es vraiment...
- Eh, non, mais attendez !
Mais attendez !
Il est 1h43, pour l'instant, ça s'est bien passé.
Je voudrais que ça continue comme ça.
- Non, mais GG, je disais juste que t'étais à fond anal, c'est tout.
Je suis d'accord.
- C'est qui ?
- C'est un verru.
- Un verru !
- C'est pas un verru !
- Ben voilà, t'as répondu, donc on passera ton tour après.
Laurent ?
- Oui, j'écoute.
- Donc, pour toi...
- Barry Walt.
- Eh, Barry Walt !
Barry Walt.
- Ouais, c'est ça.
- Oh, sans déconner, là !
- Sans déconner.
- Oui, pourquoi pas ?
- Sans déconner.
- Pourquoi, mon gueule, le lagaffe ?
- Pourquoi pas ?
- Pourquoi pas ?
- Pourquoi pas ?
- Oui, pourquoi ils sont de l'Est ?
- Ben oui !
Donc, c'est pour aller avec sans déconner, avec lagaffe.
Je pourrais te demander, est-ce qu'il a des chiens, Laurent ?
- Oui, j'en ai vu.
- Avec un break, non ?
- Ah, ben ça, ça te regarde pas.
- Gégé ?
- Quoi ?
- Ce verru, je voulais juste dire que Laurent, avec sa grosse voix, il me fait un peu penser
à un genre de Tony déguisé.
Je voudrais dire que c'est lui qu'on a vu pas d'habitude.
- Là, je vais te dire une chose, verru, tu te mets une grosse verrue dans le cul.
- Ouais, c'est sûr.
Je vais te dire une chose, je prends mon pied.
- Ouais, ben, tu prends ton pied, ben, moi, je prends pas mon pied avec toi, d'accord ?
Pesse de taureau !
- Il est tenu dans la boîte à quelqu'un, ça peut le faire, quand même.
- Bon, verru, tu fermes ta gueule, maintenant.
- Oui, chef.
- D'accord.
Euh, pesse de taureau.
- Ouais, ben, vu que j'ai deux au standard, tu peux m'appeler de la question, s'il te plaît ?
- Si, je l'ai calmé, parce qu'il avait dit un truc pas bien, donc...
Alors, pesse de taureau, pensez-vous que la Cibi devrait être utilisée sur une autre planète ?
Bon, allez hop, terminé pour lui.
Camembert !
- Qu'est-ce qu'il y a, Manu, au standard ?
- Je sais pas, je l'ai coupé, ça le fait toujours.
Terminé !
Camembert !
J'ai coupé tout le monde, ça le fait toujours, ça vient pas de moi.
- Y a un problème standard, là ?
C'est la table télécom, ça ?
- Ah ouais, y a un problème au standard, hein, Fulda ?
- Ah, regarde, c'est moi, ça ?
- Bon, c'est chef de taureau, donc c'était pas moi qui ai fait le con.
- C'est quoi, ce bordel ?
- Euh, donc, je voudrais répondre à la question, non, je pense pas que...
À ma connaissance, hein, enfin, je suis pas sûr, mais je pense pas qu'on puisse aller sur une autre planète.
- Ouais.
- Euh, donc, impossible d'avoir une Cibi sur une autre planète.
- Ok.
- Surtout, tu parles bien devant ton combiné, toi.
- Ouais, je comprends.
- On dirait que t'es un nouveau dans le truc.
- Bah ouais, moi, j'arrive, moi.
- Camembert, Camembert !
- On va te former, alors.
- Ok.
- Camembert !
- Ouais, moi, je dis, il faut avoir un grand BLU, sinon t'arrives pas à capter.
- C'est quoi, un BLU ?
- Bah, c'est le truc, là, pour parler en Thaïlande.
- Ah, ok.
- Ok.
Bon, donc, euh, en fin de compte, euh...
- T'as emmerdé, là, non ?
- Non, je pense pas qu'on pourrait avoir des...
des cibistes sur notre planète.
- Pourquoi ?
- Euh...
- Ça coûterait trop cher, en fil ?
- Ouais, je pense.
Rigaud ?
- Oui, y a un petit sondage que Booster est allé chercher sur l'Internet.
Alors, 45% des personnes interrogées n'en ont rien à foutre de la Cibie, 23% n'aiment
pas les routiers cibistes, 15% pensent que la Cibie... qu'avec la Cibie, ils vont pouvoir
décoder Canal+ et 5% se rappellent de tatailler lors des rencontres cibistes et auraient bien
aimé l'enculé.
- Ouais, bah, c'est bien.
Euh...
Donc...
je vais poser.
- Oh, Steve ! Oh, Steve ! Arrête !
- Tu peux virer Steve Austin au standard ? Vas-y, Gérard, vas-y, vas-y, vas-y.
- Donc, la question...
Manu...
- Tu fais chier.
- Manu, tu vas prendre une baffe.
- Je vais gérer.
- Ouais, ouais, tu vas prendre une baffe.
Euh...
Pensez...
Pensez-vous que la Cibie est-elle réservée plus aux hommes qu'aux femmes ou autres,
et on s'écoute comme un ouragan : "Je pète avec des fleurs, je pète avec des fleurs,
je pète avec des fleurs à épines."
Et on se retrouve tout de suite après, au 0800 308 5000 et 0870 7000 et tout ça.
Le Fun Radio est www.fr.
Rigaud vous y attend et je vous retrouve tout de suite après.
Vous êtes bien sur Fun Radio.
A tout de suite pour la suite.
- Les débats...
- Pas de radio et...
- Pas d'insultes ?
- De chien.
- Et voilà.
Donc, on va faire une petite pause.
''Musique'
Vous êtes toujours sur Plein Radio. Il est 1h50. C'était un bon scud. C'était quoi ? Comme un ouragan, je pète avec des pleurs à épines. En espérant que je n'ai pas écorché les noms. Ce que tu viens d'annoncer, à mon avis, c'est un tube. C'est Pildar qui me donne les titres. Il n'y a pas de plantade. On va finir le débat sur la CBI. On va finir le débat sur la CBI.
Pour ça, on récupère Cendrier. Salut. Mets ton doigt. Salut. Laurent. Salut. Sans déconner. Celui qui dit Tarlouse, il ferme sa gueule. Toi, tu dégages. Bonne nuit. C'était qui ? Je ne sais pas. C'était pas lui. Verru. Fesse de taureau.
C'est une passion. C'est moi qui commande. C'est pas vous. C'est lui le boss. Et Camembert pour terminer. Il en a des boss. Donc alors, la question, vous l'avez toute comprise. Vous avez bien compris la question. Non, non. Non, non, mais là, vous n'allez pas me faire chier maintenant. Alors, pensez-vous que la CBI est-elle réservée plus aux hommes qu'aux femmes ?
Alors, Cendrier. Oui, je t'écoute. Ben écoute, ouais, ben en fait, c'est plus pour les deux, quoi. Parce que maintenant, il y a autant d'hommes que de femmes dans la profession de routier, quoi. Et donc, je ne sais pas, ça concerne de plus en plus de femmes, quoi. Salut, je réponds bien. Voilà, j'ai terminé. Mets ton doigt. Ouais, Gérard, ben écoute, moi, je pense que déjà, pour les hommes et les femmes, ben, c'est pareil, quoi. Ils ont le droit tous les deux. Et puis, autre,
ben, moi, je pense à mon chien qui s'y entraîne, mais il a du mal quand même. Ça, c'était un méga job. Ok. Moi, je mettrais bien une super cartouche à Super Jimmy. Ben, moi, je vais te mettre une cartouche qui va fermer ta gueule, maintenant. Putain, Wonder Woman, elle est bonne, quand même. Ouais, ben, je t'emmerde. Euh, Laurent ? On parle de votre combiné, Laurent, t'es pas un gamin. Ah, ben, mon téléphone, il y a un problème, là. Ouais, ouais, il est dans son break, alors. Non, non, les chiennes.
C'est ce qui pousse, et tout. Oh ! Ouais ! Eh ! Oh ! Bon, ouais. Gérard, t'arrêtes, s'il te plaît. Ça me prend la tête, ça. T'arrêtes, parce que, pour l'instant, ça s'est bien passé, alors tu vas pas commencer à me faire... Non, il y a rien que du bon boulot. Donc, Laurent ? Non, non, mais, c'est mieux pour les hommes que pour les femmes, hein, pareil. Pas de problème. Ouais, mais, par contre, si j'ai... Ou autre, tu veux à peu près ? Ou autre ? Ou autre ? Pas du tout.
Je pense pas que des chiens peuvent avoir des cimis. Ah, ben, non. Bah, les perroquets ! Attendez ! Si je vous dis un perroquet, est-ce qu'il peut se faire vivre d'une cimis ? Non. Si... Si il a un QRZ ? Avec ses pattes ? S'il a un QRZ, ouais. Et alors ? Quand tu sonnes chez toi, et qu'il y a personne, et que t'as un perroquet, qu'est-ce qu'il dit, le perroquet ? Allô ? Eh, Gérard ? Ouais ? Je veux pas être méchant, mais si le perroquet, il tient la cimis, il se perce la gueule du perchoir, hein. Ouais, ben, alors là, là, non, pas du tout. Euh, Rigo ? Oui, il y a Canard WC sur l'IRC,
il te demande si... Est-ce qu'il existe des cimis modèle Batman ? Non. Et est-ce qu'il y a des cimis de couleur, ou elles sont toutes noires ? Euh... Alors là, c'est une très bonne question. Merci, tu fais du bon boulot, ça, hein, Gérard. Et ça, je... J'en ai vu avec... Avec... Je dirais pas son nom. Donc, j'ai vu des cimis, c'est vrai que t'as des cimis qui sont carrément en forme de bois, mais teintés. Ah ouais ? Comme l'intérieur, avec des...
T'as des branches avec des feuilles ? Non, non. Non, t'as... T'as... C'est une cimis, euh... Par exemple, tu vois, euh... Tu vas... Tu vas chez... Chez Ikea ? Non, chez... Dans un concessionnaire. Dans un... Dans un concessionnaire. Ouais, à Carrefour, au Champs, des trucs comme ça. Non, non, la concession... Bon, s'il vous plaît, derrière, vous fermez vos gueules, merci. Des marques de cimis ? Non, non, mais tu vas... Tu peux aller n'importe où, moi, j'en ai vu une, à Vaud, euh... Ben, justement, ça va être la question suivante, le prix. Donc, vers U. Je dis, la cimis,
c'est pas réservé que aux hommes, les femmes, elles y ont droit, y'a pas que des cons, y'a aussi des connes, quoi. Bon, alors, vers U. Vers U. Vers U, terminé pour toi. Allez, hop. Terminé ! Je l'ai éclaté, je l'ai éclaté, la vers U. Baisse de taureau. Ouais, je pense que la cimis, euh... Ce serait plus pour les bouseux qu'autre chose. Comment ? La cimis, c'est plus pour les bouseux qu'autre chose. Alors, tu peux préciser ? Aïe ! C'est parce que c'est un bouseux. Pour toi, tu devrais le savoir, hein. Tu prends un coup de jus. Je m'en fous, moi.
C'est un bouseux. Ben, en camembert. Ouais. Moi, je pense que c'est plus pour les hommes que pour les femmes, parce que les femmes sont un peu plus intelligentes pour qu'elles utilisent le téléphone. Non, ben, alors, attendez, parce que là, pour l'instant, vous répondez tous à côté de la plaque. C'est ce que j'allais dire en même temps que toi, en plus, t'as vu ? C'est fort. Donc, moi, je peux juste prendre contre ? Il est imprévisible, Gérard. Manu, tu vas commencer à être calmé. Ouais, t'éteins ton micro. D'accord ! Tu peux fermer un peu ta gueule ?
D'accord ! Merci. Donc, je peux vous dire une chose, que maintenant, comme il y a l'égalité des hommes et l'égalité des femmes, donc il y a l'égalité des deux, donc, des sexes, donc là, la Cibi, c'est très bien réservé. Devant ton micro. Pour les hommes, aussi bien pour les hommes que pour les femmes. Parce qu'en fin de compte, t'as aussi bien, t'as autant de femmes routiers que d'hommes. Non, mais il n'y a pas que les routiers. Oui, mais il y a tout. Il y a les chauffeurs de taxi,
il y a les routiers, donc en... Est-ce que, par exemple, les prostituées pourraient avoir une Cibi pour avoir des clients ? C'est plus simple. Non, je pense pas. Pourquoi ? Je peux pas te dire pourquoi. Attends, je suis en train de chercher... Qui c'est qu'il y a d'autres qui pourraient avoir des Cibis ? Souvent, des ambulanciers en ont. Ah oui ? Puis, bien sûr, nous, on peut s'en servir comme moyen de... De locomotion ? Non, oui. Gérard, il y a Canard DC qui te demande, est-ce que les marabouts peuvent guérir
des gens par la Cibi ? Non. J'ai une question, Internet. Non, mais Manu, pour l'instant, tu te... Hein ? Non, mais attends, pour l'instant, toi, t'arrêtes avec ta merde. Toi, t'es un... Toi, tu... Hein, bande de nazes ? Hop ! Arrête, Manu, t'es pénible. Attends, c'est mon standard, ça fait des étincelles. Arrête, tout à l'heure, ton standard, il va... Tout à l'heure, ton standard, il va te mettre une barbe, toi. Donc, alors, à la question, donc, il y a...
du débat sur la Cibi, donc, que Gaël m'a donné. Ouais. Il y a 47% des routiers n'utilisent leur Cibi qu'entre 21h et 21h. Alors, ça, ça m'étonnerait. Elle a dû se planter, voilà. Ouais, parce que là, 21h et 21h, je vois pas... Ouais, je vois pas trop le rapport. Je vois pas le rapport non plus. Ouais, du cheval. Donc, après, il y a 16% des gens sont prêts à tuer leur chien pour avoir une Cibi. Alors là, Gaël, tu vois... Là, tu chies. Tu chies dans la colle. Ouais.
Et donc, la dernière question. Ouais. Quelle heure est-elle ? Elle est 1h57. 1h58. On a encore le temps de faire une question et la conclusion. Deux, deux, deux. Non, non, non. Non, non, deux. Une. Bah, tu choisis la meilleure. Tu choisis la meilleure. Bah, c'est moi qui commande. Je fais la sept. Et après, je repose une question. OK ? C'est pas toi qui commande, c'est moi. Non, ta gueule, toi. Non, mais... Ta gueule. C'est pas cool, ce qui m'arrive. Ta gueule. J'ai envie de faire caca et j'ai pas mon téléphone. Eh bah alors, si t'as envie de faire caca,
tu fais une chose, tu raccroches ton téléphone et tu appaires caca. J'ai plus mon téléphone, je t'en fiche. Eh bah, je m'en fous. J'ai l'habitude de chier pendant les débats. Alors, euh... Devrait-on consacrer une émission de télé sur la Cibi ou à l'école ? Manu ? Oh non ! Oh non, Gérard. Devrait-on consacrer une émission de télé...
Regarde. C'est pas toi. Non, je te jure que c'est pas moi, Gérard. C'est pas toi, c'est mes premiers trucs. C'est les premiers trucs que j'ai fait quand j'étais à la... Mais tout le monde de là, ça... Non, non. Devrait-on consacrer une émission de télé sur la Cibi ou à l'école ? On va demander ça à Camembert. Ouais, bah surtout pas, parce que la Cibi, c'est quand même réservé à une élite. Et si on apprend ça des tout jeunes aux gamins,
la Cibi et le Canal 19, ils vont être complètement saturés. Non, mais déjà, le Canal 19, c'est saturé, déjà. Bon, tu t'écrases ? Je réponds aussi avec... Non, non, mais attends, tu t'écrases ? D'accord. Pour l'instant, c'est moi qui commande. D'accord, excuse-moi. Euh, fesses de taureau ? Ouais. Bah, je pense qu'enseigner ça aux gosses, c'est vraiment un truc à pas faire. Parce que, après, voilà, quoi, c'est pas cool. Bon, d'accord, euh... C'est tout ta réponse ? Bah non, mais qu'est-ce que tu veux enseigner de la Cibi aux gosses ? C'est impossible.
Ça va leur niquer la tête, c'est clair, ça va les ruiner. Non, je pense pas. Stop, stop, stop. Rigaud. Gérard, il y a le vrai Perforas, si on y a assez, qui te demande quel est le jour de la grève des Cibistes pour faire grève contre France Télécom, c'est quel jour ? Il y en a pas. Pourquoi ? Parce que maintenant, c'est la Cibi, et ça, Laurent, il pourra le confirmer. Maintenant, la Cibi n'est plus agréée par les PTT. Tu confirmes la tarlouze ? Non, je te parle. La tarlouze à ton maire, toi, connard ! La France Télécom, Gérard. Elle confirme ?
C'est Pedro. Euh, pour l'instant... Attends, Laurent. Celui qui s'amuse à insulter les gens comme ça, pour l'instant, va fermer sa gueule, ou sinon, il va dégager ! C'est pas cool. C'est Pedro, j'aimerais parler comme tout le monde, c'est Pedro. Moi, je t'emmerde, espèce de salope ! Oh, pas trop de vulgarité, quand même. Ouais, mais attends ! On se calme, Gérard, on se calme. Dis à Manu de les gérer, c'est son taf, hein. Laurent ! Au lieu de jouer à Zelda, là. Oh, ta gueule ! Laurent, tu peux confirmer ce qu'on vient de dire ? Tout à fait, Gérard.
T'as tout à fait raison. Donc, pour toi, donc, le canal 19, c'est vrai que maintenant, il est... C'est un canal d'appel, donc, pour avoir d'autres renseignements, il faut changer de canal. Voilà. Voilà. Donc, tu peux... Donc, est-ce qu'on... D'après toi, est-ce qu'on peut enseigner ça... À l'école, peut-être ? Est-ce qu'on pourrait faire une émission de télé, ou d'enseigner ça à des jeunes...
Qui seraient capables ? Pas question. Putain, celui-là, il va fermer sa gueule quand je parle. Merci. Mais pourquoi ? Tu veux les traumatiser, les gamins. Ben non, mais... Mais ça fracasse la tête. Regarde, t'en es le digne exemple. Je veux dire, qu'est-ce que faire de la cibier aux gamins ? Ils vont parler avec des mecs comme toi, après. Et alors ? Imagine le genre de fréquentation. Comment tu veux qu'ils évoluent dans un milieu stimulant, après ça ? Bon, écrases-toi. Je veux plus vivre dans un monde... Allez, tais-toi, tais-toi, tais-toi, tais-toi, tais-toi, tais-toi. Tout n'est pas si facile. Tais-toi !
Tais-toi, tais-toi, tais-toi. Donc, Laurent, donc, pour toi... Non, mais déjà, à l'école, ils ont toujours aimé parler l'histoire, et puis français, alors... Tu leur apprends à parler la cibier, alors... Ok. Mets ton doigt. Ouais, Gérard. Ben, écoute, si on enseigne ça, déjà, aux gamins, comme disait la demoiselle tout à l'heure, je crois que c'est ton rire qui... C'est Camembert. C'est Camembert, excuse-moi, Camembert. Ben, écoute, très saturé, on puisse faire atteindre gamins qui diraient des conneries partout, et puis, en plus, leur apprendre à boire à cet âge-là, c'est chaud.
Bon, alors, mets ton doigt. Pour l'instant, c'était pas la... C'est pas... Tu réponds à côté de la plaque. Ben, si, l'alcooliste des mineurs, c'est ça, la question. Ouais, c'est ça. Allez, hop. Vas-y, hop. Au revoir, pour lui. Au revoir. Au revoir. Au revoir, mets ton doigt. Au revoir, mets ton doigt. Tu peux l'enlever, tu peux l'enlever. Allez, au revoir, mets ton doigt. Enlève-le. Euh, cendruyer. Cendruyer ! Ouais, mais, en fait, moi, je suis pas d'accord pour qu'on puisse enseigner la cibie dans les écoles, quoi.
Arrêter l'école et tout, quoi. En plus, on se prend la tête pour, je sais pas, aménager les horaires, les réduire, tout ça. On perd du temps à leur enseigner la cibie. Moi, je trouve ça inadmissible. D'abord, il y a mathématiques, le français, après, on parle de la cibie. En option, en terminale, j'en sais rien. En plus, à la télé, c'est pas la peine, parce que tu mesures un peu la face télé, non ? Oh, tu t'écrases derrière celui qui fait... Je suis partie dans mon truc et tout, là. Ouais, c'est clair, ouais. Bon, ça y est, ça y est, c'est terminé. Donc, dernière question, il est... Deux heures d'heure, on va peut-être faire conclure.
Non, deux heures trois. Là, conclue. Deux heures trois. Bon, ben, on va faire, alors, vas-y. Deux heures trois, parce que là, t'as pendule de nas. Ouais, c'est le truc, elle est réglée sur RTL. Bon, allez, tiens, voilà mes genoux. Moi, j'ai l'heure pile. L'heure des cibies. Ouais. L'heure des cibies. Alors, donc, moi, je vais vous poser une question. Vas-y, pose. Ça va être la dernière. Combien peut coûter une cibie, en général ? Et on va demander à Cendrier, tiens. Encore ? Eh ben oui, encore. Je vais te donner une fourchette. Attends, attends, attends, cinq minutes.
Question, à la place de mets ton doigt que t'as viré, on accueille Pines de Chacal, qui fait de la cibie aussi. C'est ce que tu es, RZ. Salut. Salut, Pines de Chacal. Salut, tout le monde. Salut, Chacal. Salut. On peut t'appeler Pines ? Ouais, pas de problème. Bon, allez. Donc, Cendrier. Bonjour. Moi, je te donne une fourchette entre 2 et 4 millions de francs. Ah ! Non, mais entre 2 francs et 4 millions de francs, non ? Ok, alors toi, t'es le comique. Ouais, t'as dit ça. Toi, pour l'instant, derrière, tu vas t'écraser. Donc, toi, tu dis combien ? Entre 2 francs et 4 millions de francs.
4 millions. Voilà, comme ça. Ok. Pines de Chacal, ouais. Moi, je suis pas trop d'accord que tes potes les blaireaux, ils passent dans les débats comme ça. Bah, moi, je t'emmerde. Donc, toi, tu vas répondre à la question ou pas du tout ? Ouais, bah, répète-la-moi, je t'emmerde. Non, bah, alors là, tu vas plus écouter. Non, mais répète-la-moi. Il m'expliquait son QRZ. Non, non, non, non, non, non, non. Il a très bien entendu la question. Non, je te jure que non. Répète-la-moi, s'il te plaît. Combien coûte une cibie en général ? Ah, bah, moi, la mienne, je l'ai payée 500 balles. Et c'est du bon matos. Là, ça le fait.
D'accord. Laurent ? Je voulais témoigner d'un truc aussi. Moi, ce que je m'amuse, parce que je suis un petit plaisantin, je m'amuse à faire des faux radioguidages. Eh bah, alors, dans ces cas-là, Pines de Chacal, au revoir pour toi, tu prends même pas la conclusion. Terminé, terminé. Excellent. Terminé, terminé, terminé, terminé. Ok. Laurent ? Premier prix, c'est 60 francs, c'est 1 000 dans les canaux. Et la plus chère, c'est 2 000, 8 000, 6 000, 3 000. Euh... Entre deux... Entre 500 et ? Entre 500 et 2 000, 8 000.
Ok. Gérard ? Gérard ? Gérard, oui ? Je voulais revenir sur l'histoire des radioguidages. Non, non, non, non, il n'y a pas de radioguidages, tu donnes. Effectivement, il avait tout à fait raison. Moi, je sais que pendant des années, j'ai passé du temps à orienter des cars de bonnes soeurs et de maisons de retraite dans des ravins, des plans dans ce genre-là. Voilà, merci, Laurent. Merci, Beru. Baisse de taureau. Baisse de taureau ! Bah, tu m'écoutes ou pas ? Tu réponds ou pas ? Bah, je réponds.
On a mis en rentaine, c'est tout. Oh ! Oh ! Euh, ça doit coûter... Ouais, je sais pas, parce que j'ai pas jamais été... Ouais, il y a du bruit derrière. Bon, tu réponds ? Ouais, 200 à 300 francs. C'est ça. Euh, Camembert, pour finir ? Bah, moi, celle de mon copain, j'ai payé 10 000 francs d'occasion, ce qui fait à peu près 200 euros. Ouais, d'accord. Et on parle pas des gens... Donc, moi, je peux vous dire une chose. Que là, Sibi, Laurent étaient plus proches. En fin de compte, ça vaut presque entre 500 et 2 et 3 000 francs.
La quelle est la mieux ? Celle qui fait 500 ou 2 000 ? Euh, le mieux, c'est carrément d'acheter une neuve. Au moins, t'as une garantie. Mais là, tu payes pas loin de 2 500 à 3 000 francs. 3 000 balles, la garantie, c'est cher. Normalement. Bon, ça y est, derrière... Oh, espèce de connard, là ! Eh ! Oh, Dieu ! Et il y en a un qui a la diarrhée, hein. Ouais, lui, il commence à me casser les couilles. C'est pas pareil.
Quitte, parce que ça revient quand même vachement moins cher. Eh, t'as... Eh, t'es sûr que je vais te demander, à toi qui réponds, t'as jamais entendu parler d'Essibi en soutien-gorge ? Non, non. Non, j'en parlerai pas. Non. Alors, donc, conclusion. Ok, Michel. Donc, Cendrier. Gérard, Gérard, Gérard. Il y a un... Non, non, non, non, non, c'est terminé. Il voulait faire sa conclusion. Bah si, pour la conclusion. Il s'appelle Quiquette de Bison. Non, non, attends. Non, non, non. Ouais, salut. Ouais, Quiquette de Bison va faire foutre. Cendrier. Ouais. Conclusion.
Le débat, en fait, il s'est pas trop mal passé. Non, c'était bien. C'était bien, Gérard. Ouais, c'était bien. On peut dire que c'était la merde, quand même. Ouais. Et puis, bon, bah, je suis contente. Je connais un peu plus sur l'Essibi, quoi. Et puis, demain, j'irai dans une banque pour m'acheter une. Est-ce que Gérard a une envie d'en assumer ? Non, mais attends. Non, mais attends, Cendrier. Il faut te dire une chose, que là, on n'a pas un débat sur l'Essibi. On aurait pu le faire plus longtemps, parce que j'aurais pu faire carrément un débat entier sur l'Essibi. Merci pour celui qui rote, espèce de gros porc.
Ouais, non, non. Je disais que j'aurais pu aller plus loin. J'aurais pu faire carrément toute la nuit pour faire toute la soirée, pour faire un débat sur l'Essibi. Pourquoi on l'a pas fait ? Parce que ça coûte cher, tout simplement. Et c'est tout. Laurent, qui c'est qu'on a à la place de Pindochacal ? Je t'ai dit, Quiquette de Bison. Alors, Quiquette de Bison, ta conclusion ? Est-ce qu'il y a le temps de faire une petite anecdote, là ? Non.
Alors, ma conclusion, c'était bien. On a bien appris ce que c'était l'Essibi. Ouais. T'es enrhumé, non ? Ouais. T'es enrhumé, Tony, hein ? T'es pas le choix. T'es enrhumé, Tony. T'es enrhumé, Tony. T'es bien enrhumé, hein ? OK. Alors, salut à toi, Tony. Laurent. Ça a été bien, pour une fois. C'était super bien, pour une fois. Il n'y a pas eu de problème. Il faut bien faire que ça se passe bien. OK. Vers une.
Ouais, ben moi, je voulais dire que le débat a été, donc, comme d'hab, constructive. La voix de Laurent m'a bien fait kiffer. Je suis sûr que ça se pignole dans les cabines. Et je voulais dire que l'Essibi, c'est sûrement le moyen de communication de l'an 2000, oui. Alors, Verru, Verru, je vais te dire une chose, que Laurent, il t'emmerde. Et moi aussi. Il y a beaucoup de filles, je suis sûr, qui vont vouloir son numéro standard. Tu ne peux pas dire le contraire. C'est ça, t'as raison. Ben là, tu rêves. Tu te mets un doigt dans le cul. C'est pour lui, hein ? Tu te mets un gros doigt dans le cul. Mais doucement, quand même. OK ?
Bon, alors, dégage. Bonne nuit.
== Le débat sur les Miss France ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Donc vous êtes toujours sur Fun Radio, c'est le deuxième débat, donc il est 2h21 et donc pour le deuxième débat vous pouvez toujours nous appeler au 0800 308 5000, puis l'art est au standard donc il va vous accueillir.
Bonjour !
Bonjour à toi Brouty, Rigaud le super chef de l'internet qui fait du bon boulot toutes les semaines donc qui vous attend au www.frfunradio.
Donc on est combien la matin Rigaud ?
Tu peux l'appeler par téléphone avec ?
T'as l'air Fildar, tu vas te prendre une baffe, ce coup là je vais pas te rater toi.
Donc on est combien ?
On est 4282, ce qui est beaucoup.
Donc je voudrais qu'on aille jusqu'à 5000 et puis Manu qui est à l'Aria.
Bonsoir à tous !
La grosse ça t'emmerde toi la grosse espèce de con.
C'est pas bien de parler de la femme de Gérard comme ça.
Donc on va accueillir Mego.
Mego de 19 ans de Brest.
Salut Gérard, ça va ?
Je sais pas, j'ai pas regardé ce matin.
Bravo !
Pierre, 24 ans de Bourbon, annoncez-moi les fréquences de Mego, Brest.
Ouais, 84.16.
84.16 ?
Ouais voilà.
Ouais mon cul tiens.
Ok excuse-moi 84.6, excuse-moi.
Ouais bah je préfère.
Pierre ?
Salut.
La fréquence ?
Euh, 82.
Ouais tu connais pas ta fréquence alors on va te faire sauter.
Tu connais pas ta fréquence alors on va te faire sauter.
Ouais tu connais pas ta fréquence alors on va te faire sauter.
Miss Essonne, 19 ans, de Saint-Etienne.
Miss Essonne, 19 ans, de Saint-Etienne.
On a une Miss France, j'avais oublié de te le préciser.
Miss Essonne qui était première dauphine en…
Ohlala le 9 ans, le 9 ans.
Au régional.
La même suite de gaz quoi.
Miss Essonne, 19 ans, de Saint-Etienne.
Votre ablot, tu réponds.
Salut le brésilien.
Tu vas chanter à l'Eurovision bientôt.
Oulala lalalala.
Elle est enrouée.
Ça commence, ça commence, ça commence, ça commence.
Elle est enrouée.
Elle est enrouée.
Ça commence, ça commence, ça commence.
Elle est enrouée.
Elle est enrouée.
Tu réponds ! Salut le brésilien ! Tu vas chanter à l'Eurovision bientôt ! Ça commence, ça commence, ça commence, ça commence ! C'est une nana, c'est un trablos, qui c'est qui m'a choisi ça ? Fildar ! Fildar ! Fildar ! Mon pote Fildar ! Un Fildar !
Donc Mikos, 20 ans de Lyon, Kudan, 24 ans de Nogent-sur-Marne, on écoute...
Non c'est ça, 101.9, d'accord ? Fous-toi pas de ma gueule !
Foufoune de Nantre ! Salut à toi !
Non c'est Lady de Nantre !
Fildar, fais gaffe parce que tout à l'heure ça...
C'est Lady Di !
Pas le tunnel Manu !
Pas l'alma !
Pas le tunnel anal !
Gérard, Gérard, assieds-toi, assieds-toi, t'as pas Fildar dès le début !
Je commence pas, d'accord ?
Sinon tu retournes en arrière !
Pas le tunnel anal, on a dit !
Bon ta gueule à toi !
C'est Monsieur Bouygues !
Bon continuez, continuez à me casser les burnes au deuxième débat, on va éclaircir vite le débat !
Ouais !
Ça commence bien !
Allez on va creuser, vas-y !
Alors que préférez-vous dans Miss France ? On va demander ça à Mego !
Moi j'aime bien ses robes !
Ouais !
Ouais, je trouve que c'est des bons couturiers !
Elles sont vachement cultivées je trouve !
Non mais tu peux donner plus de précision ?
Bah je trouve que, je sais pas moi...
Ouais, elles sont cultivées quoi !
Tu peux leur poser n'importe quelle question, genre...
Quelqu'un l'a fait hier, tu vois, à chaque fois elles te répondent bien !
Ouais !
Tranquille hein !
Ouais tranquille, tout à l'heure tu vas faire tranquille au standard toi !
Tranquille !
Pierre !
Ouais, moi j'aime bien les hawaïennes !
Donc j'aime bien son boule en fait et c'est ça !
Ouais Tony !
Ok Tony !
Allez !
Allez !
Allez Tony, terminez pour toi !
Non mais Gérard, Gérard là il a rien dit quoi !
Non mais attends, faut pas déconner !
Hier il est passé, il passe pas dans les débats aujourd'hui !
C'est clair, net, très précis !
J'ai dit, j'en veux pas !
Ok, et toi tu vas me faire du boulot correct ce coup-là !
Si Tony il peut plus passer jamais,
s'il passe plus jamais, qu'est-ce qu'il va faire dans sa vie ?
Et alors ?
Qu'est-ce qu'il va faire dans sa vie ?
Et alors ?
Bah non, il faut le passer !
Il passe dans la semaine et c'est tout !
Mais il y a rien à côté !
On peut pas, on peut pas !
Ou alors on essaie de voir, parce que c'est vrai que dans la vie, bon, toi j'ai...
Non, faut arrêter là de le passer !
Ou alors on teste, faut qu'on teste !
Bah la première incartade...
Parce qu'à toute manière il est pas de Bourbon !
Il va en prison !
Mais non parce qu'il est pas de Bourbon !
Si si, il est en vacances !
Non non non, attends !
Je suis en vacances !
Bah ouais t'as mon cul !
Hier t'étais à Paris et puis là ce soir t'es à Bourbon !
Bah attends, ça t'arrive jamais toi !
Moi le soir je suis à Paris, le soir je suis à Lyon,
quand je vais faire une soirée, je mets pas dix jours pour y aller !
Enfin !
Il y va hein !
Il a un scooter, c'est tout !
Et alors Tony, vas-y !
Non mais j'aime bien la wayenne là en fait !
Je l'ai trouvée très séduisante !
Mais c'est Tony !
Bah ouais c'est le Tony, c'est celui qui est passé hier avec toi !
Non mais il est bien, il est bien, il est bien !
Il a le cul propre en plus en ce moment !
Il a une belle boîte à caca, j'aime bien la wayenne en fait !
Bon non mais je te demande, que préparez-vous dans Miss France ?
Ouais mais il paraît que c'était truqué !
Je sais pas si t'as entendu ça !
Non mais attends, pour l'instant Tony, tu dis pas de conneries !
Parce que c'est pas le...
Non mais c'est vrai !
C'est pas les questions, d'accord ?
Alors ou tu réponds correctement ou tu dégages !
Je vois que t'es un peu trop sur moi là, mais moi je te dis, moi j'aime bien Miss France !
Bon, ok !
Décale-toi un peu Gérard, t'es trop sur lui !
Ouais, trop sur moi !
Recule, recule que je m'interromps !
Gérard, il y a Madame de Fontenay sur l'IRC, la vraie !
La vieille là ?
Ouais, qui voulait te prévenir que si tu dis que les élections de Miss France sont truquées, elle t'attaque en justice !
Eh bah, elle fait ce qu'elle veut, moi je l'emmerde !
Oh là là, procès !
Miss Saison !
Elle va te mettre un procès au cul !
On l'emmerde la vieille !
Miss Saison !
Oui, j'écoute !
Alors, quand est-ce que tu t'es fait opérer, toi ?
Bon, allez, hop !
Raconte-nous tout !
Allez, hop !
Terminer, moi !
Non, non, mais moi, allez, hop !
Bonne nuit, bonne nuit, bonne nuit, bonne nuit, bonne nuit !
Allez, hop !
J'ai pas sommeil !
Non, non, mais bonne nuit pour Miss Saison, hop !
C'est fini pour elle, j'aime pas...
Quand je pose des questions, j'aime pas qu'elle réponde à moi...
Je peux la garder, quand même ?
Non, non, non, tu la...
Pour moi, pour moi !
Non, non, mais tu...
Pourquoi tu la kiffes ?
T'as qu'à la sauter, si tu veux, moi, j'en ai rien à foutre !
Euh, Mycose ?
Ouais, bah, écoute, euh...
Ce que je préfère chez les Miss, c'est quand même leur cul, hein, on va pas dire le contraire !
Ouais !
Faut être franc, leur cul est leur nibard !
Ouais !
Par contre, c'est vrai qu'il y a un peu de la triche, elles sont dopées à mort, c'est clair !
Euh, attends...
Elles sont dopées, elles sont dopées !
Attends, attendez, attendez, attendez !
Attendez, attendez, attendez !
Attendez 5 minutes !
Je te laisse, je te souhaite une bonne nuit !
Et je te rappellerai peut-être la semaine prochaine !
Ouais, ouais !
Salut !
Et tu vas pas la rappeler, d'accord ?
Et elle change pas sur un autre nom !
Mais tu...
Tu joues à quoi, Fildar ?
C'est parce que t'es là, tu vois ?
Tu vas laisser ta place à Manu...
Ah non, non, non, non, non !
Et tu vas se dégager là-haut !
Oh non, il fait du bon boulot, au standard, Fildar !
Ah ouais, ouais, il fait du bon boulot, tiens !
Non, c'est le meilleur, c'est le meilleur !
Ouais, ouais !
Et si on perd du monde à cause...
Sur l'IRC, à cause de lui, faudra pas se plaindre !
Pas de soucis, on en gagne, on en gagne !
Merci !
Micose !
Oui, donc, je te disais, elles sont quand même dopées au maximum !
Je sais pas si t'as vu les formes qu'elles ont,
je veux dire, s'il y a pas de l'hormone bovine là-dedans,
je sais plus, je m'y connais plus, quoi, tu vois ?
Madame de Fontenay, elle refile quand même pas mal de saloperies à ses miss !
Le PO ?
Ouais, je crois, entre autres choses...
Arrête, Gérard !
Bon, Gérard, c'est avec...
Viens t'asseoir, écoute les auditeurs, au moins !
On fait le travail à ta place !
Euh, Cudan !
Ouais, bah alors, moi, les nanas de Miss France, tout ça,
je sais pas, je leur trouve rien de spécial, des fois, je...
Je sais pas, dans la rue, on a des mieux, quoi !
C'est ça que je comprends pas, ça t'intéresse pas les femmes, toi !
Ouais, c'est clair !
Foufoun !
J'aime pas trop ce que tu viens de dire !
Bon, ça y est, on se calme derrière, s'il vous plaît, merci !
Foufoun !
Moi, j'aime bien leurs dents, et Jean-Pierre Foucault !
Je trouve qu'elles ont des super belles dents !
Non, mais attends, hé !
Fildar, attends, attends 5 minutes !
Fildar !
Tu, euh, si tu veux, t'as qu'à allumer ton micro,
et puis gueuler dans le micro, dire « Allô, Fun Radio ! »
Je travaille !
Attends, c'est pourquoi, t'as besoin de gueuler comme ça ?
Bah, ils m'entendent pas !
Bon, allez !
Bon, alors, Foufoun !
Ouais, moi, je te disais, j'aime bien leurs dents, et Jean-Pierre Foucault !
C'est ça, bah, t'as qu'à l'appeler, puis tu lui demanderas ce que c'est !
Non, mais moi, je le trouve vachement séduisant, puis...
Non, non, mais attends, t'as qu'à lui demander !
T'as qu'à lui demander ce qu'il s'est passé pour élire Miss Tahiti !
Ok !
Gérard ?
Non, attends, Rigo ?
Oui, il y a Miss Devi One sur l'IRC,
qui te demande si Sandy a gagné le concours Gros Plein de Soupe !
Miss Gros Plein de Soupe !
Alors, euh, c'est qui ?
C'est Miss Devi One !
Alors, Miss Devi One, Sandy a ton merde !
Ok, pour toi !
Voilà !
Tony, tu...
Non, c'est pas moi, c'est pas moi !
Gérard, il te dit qu'il t'emmerde, lui aussi !
Eh bah, c'est bien, maintenant !
C'est pas moi, c'est pas moi !
Le mec, là, il peut laisser des messages,
c'est même plus la peine de me les annoncer pour lui !
Ah, je vais aller me connecter, là !
Sandy, c'est dommage pour son corps, parce qu'elle a une belle tête !
Tony, Sandy a ton merde !
Non, mais c'est vrai qu'elle est belle !
Sandy a ton merde !
Mais il dit qu'elle est belle !
Sandy t'emmerde !
Bon, alors, Tony, tu te calmes !
Sinon, on accueille à la place de Miss Essonne,
Georges, 43 ans, de Saint-Louis,
qui, en fait, est le père de Miss Berry.
Tu sais, c'est le cas perdu !
Je l'ai au standard sur les 24 lignes !
Bonsoir !
Elle est sur IRC, Miss Berry.
Oui, bonsoir.
Bonsoir, Georges.
Oui, bonsoir, Monsieur Georges.
Oui, Georges, ta fille, c'est un boudin.
Ça y est, derrière, oui !
C'est normal qu'elle ait perdu, c'est un plomb !
Elle est plus de points, aussi.
Bon, tu me calmes un peu, ça, parce que ça va...
Mais qui ? Je te calme qui ?
C'est un peu un plomb, on va dire.
Voilà.
Par bien.
Allez, allez, allez !
Mais quoi, j'ai rien fait !
Bravo, le boulot que t'es en train de me faire !
Bravo !
Tu nous fais de la merde !
Attends, tu peux mieux dresser à l'aria, ça vaudra mieux.
Non, non, non, c'est bien, là.
Alors, seriez-vous d'accord pour inscrire votre copine
au concours de Miss France ?
On m'a demandé ça à Mégo.
Ouais, mais en fait, ma copine, elle a déjà concouru
pour l'élection l'année dernière,
mais le problème, c'est qu'elle est perdue, quoi.
Donc, depuis, elle est un peu traumatisée, quoi.
Et donc, voilà.
Mais Gérard, il ne vous écoute pas,
il est en train de taper fil d'art !
Putain, Manu !
Ah non, non, non, c'est pas possible, ça.
Ça, c'est pas possible, Gérard.
Bon, ben moi, dans ce cas-là, moi...
Dans 14 minutes, j'arrête.
Gérard, s'il te plaît.
Dans 14 minutes, j'arrête.
On repose la question, s'il te plaît.
14 minutes, j'arrête.
Gérard.
Il fait que tu as de la merde.
Il est en train de se...
Il fait que des conneries,
donc moi, dans 14 minutes, j'arrête.
Je ne fais même pas les 11 questions.
Non, moi, j'écoute.
Qu'est-ce qu'il y a ?
Qu'est-ce qu'il se passe ?
Mais attends, il est en train de faire que des conneries.
Tu fais que des conneries !
Mais qu'est-ce qu'il a fait ?
Ça s'est bien passé dans le premier débat.
Ouais, pour l'instant,
il est en train de me faire que des conneries.
Pourquoi ?
Mais qu'est-ce qu'il a fait ?
J'écoute, moi, je n'ai pas compris.
Je lui demande quelque chose.
Ah oui, vas-y, donne des raisons.
Donne des raisons.
Donne une raison, j'écoute, moi.
Qu'est-ce qu'il se passait à l'antenne
qu'il ne te plaisait pas ?
Moi, je lui demande de calmer les gens,
il ne les calme pas.
Si !
Non, non, il ne les a pas calmés,
il est en train de se...
Tout le monde se fout de la gueule des gens.
Et lui, il ne fait rien.
Il n'est même pas capable
de faire un boulot correctement.
Si, le premier débat, à l'arrière.
Alors, autant mettre Manu au standard,
ça vaudra mieux.
Gérard ?
Oui ?
Non, ce n'est pas possible.
Sur IRC, il y a Mister Yankee
qui dit qu'avec une perruque
et sans ta moustache,
tu ferais bien, Miss Bois de Boulogne.
Ça, je m'en fous.
Mégo ?
J'ai déjà répondu, moi.
Tu ne m'écoutais pas, aussi, là.
Ben non, vas-y, dis.
Non, mais je disais,
ouais, c'est quoi la question ?
Ça ne m'a plus, là.
Alors, seriez-vous d'accord
pour inscrire votre copine
au concours de Miss France ?
Euh, non, je ne serais pas d'accord.
Et arrête de renifler.
Oh, excuse-moi, là, oh, là, là.
T'es égrue, ce soir.
Bon, non, moi, je ne suis pas d'accord.
Je ne suis pas d'accord
pour faire subir ça à mes copines.
D'abord, c'est des amis,
je ne leur ferai jamais ça.
D'accord.
Voilà.
Euh, Tony ?
Ouais, non, moi, je la garde pour moi.
Ben, tu peux préciser ?
Elle est trop chême.
Comment ?
Elle est trop chême.
Elle est moche.
Elle est laide.
Ouais, tu peux préciser le pont de ta pensée ?
Affreuse.
Vilaine.
Il y a des concours pour ça, hein ?
Berck.
Bon, OK.
Georges ?
Gérard, attends, attends, attends.
Sur IRC, il y a Miss Olio
qui te demande
si les Miss France t'excitent.
Non, pas du tout.
Pas du tout.
Georges ?
Pourquoi ?
Il te demande pourquoi elle ne t'excite pas.
Parce que ça ne m'intéresse pas.
Trop belle.
Bon, Tony, ça suffit.
D'accord.
Maintenant, tu laisses parler les gens.
Mais Miss Berrick, qui dit que t'es un menteur ?
Je m'en fous.
Georges ?
Après Miss France, il faut avoir 20 ans.
Ma femme, elle a 56.
C'est pour après être Miss France.
Elle est vieille, ta femme.
Je ne l'ai pas vraiment.
Je venais à 56.
Il y a Miss Tigri qui t'encule.
Je l'ai viré juste quand j'ai entendu ça, Gérard.
Alors, lui, c'est terminé.
Terminé pour lui.
Mycose.
Justement, je l'ai viré
parce que c'est lui qui foutait le bordel tout à l'heure.
Alors, c'est bien.
Donc, à la place, on a Clafoutis,
19 ans, qui appelle de Brest.
Au jour d'aujourd'hui,
14 heures précises,
je viens faire une requête au sieur.
Peri Grigali !
Et qui appelle de Brest
et qui te souhaite une bonne soirée.
Au jour d'aujourd'hui...
Salut, Gérard.
Salut.
C'est Clafoutis.
Alors, moi, j'ai été hôtesse de présélection
des Miss.
Et j'ai été refoulée
parce que j'avais une jambe plus courte que l'autre.
Et ça se voyait en maillot de bain.
D'accord.
Alors, je trouve que c'est inadmissible.
Ok.
Voilà.
Kudan ?
Moi, la question va être vite réglée.
Je n'ai pas de copine.
Ok.
Foufoune ?
Moi, j'avais une copine.
Enfin, une copine.
Je ne pouvais pas la blairer.
Et je l'ai inscrite au concours de Miss Boudin Noir
à la CUSA l'année dernière
pendant les vacances de ski.
Et cette conne, elle a gagné.
Et ça y est, c'est tout ?
C'est tout ce que tu as à me dire ?
Ben oui, ça y est, c'est tout.
Gérard ?
Oui ?
Sur IRC, il y a Miss Devitou
qui te demande
est-ce que les Miss,
quand elles gagnent le concours,
elles gagnent une CB ?
Non.
Ce n'est même plus le thème des débats sur les CB.
Demande à machin Devitou
s'il ne gagne pas une Dreamcast.
Puis tu lui demanderas
qu'il réponde correctement aux questions
en dehors des débats.
Gérard, il y a Madame de Fontenay
qui te dit que vu que
ces Miss ne t'excitent pas,
elles supposent que tu es homo.
Et alors, qu'est-ce que ça peut y foutre ?
Ah, c'est vrai.
Ben alors, Gégé, quoi ?
Non, mais attends,
qui c'est qui s'amuse à faire des conneries derrière ?
J'ai coupé les auditeurs, là, Gérard.
Donc, troisième question.
De nos jours, la beauté de Miss France
est-elle importante ?
Non, elle n'est pas importante.
Ouais, ben justement,
Gégé ?
À partir de 17h.
Tu fais une partouze à 17h,
moi je t'emmerde et tu vas fermer ta gueule maintenant.
C'est où, c'est où ?
Ouais, c'est 12 rues.
Ouais, oh !
Du château, hein.
Château comment ?
Tu me calmes ça, là ?
Déjà, tu me calmes Tony
parce que là, il commence à...
Ouais, il fout la merde.
...à me gonfler, lui.
Et en plus, il est sourd.
Tony.
Non, non, non, non, non, non, non.
Tony, tu te calmes.
Non, tu les prends en antenne,
ils se calment.
Autrement, tu dégages, Tony.
Moi, je te dis, à l'antenne,
comme ça, il va flipper.
Ouais, ben, il va dégager
dans moins de deux minutes, lui,
si il continue.
Non, mais je sais même pas
quand je suis à l'antenne,
quand je suis hors antenne.
Non, mais pour l'instant,
tu vas répondre
à la question, maintenant.
Non, mais répète-la, moi,
parce que je sais pas...
Non, non, non, non, non, non, non.
Non, non, non, non, non.
Non, non, non, non, non, non.
Non, non, non, non, non, non.
Je répète plus les questions.
Alors, attends,
je vais te faire une...
Attends, je vais la répéter
pour toi, Tony.
Mego.
Mego.
Ouais, je t'écoute, là.
Ben, en fait, ouais,
c'est vachement important,
surtout pour les vicieux
qui regardent, hein.
Et puis, ouais,
enfin, moi, je m'en fous un peu,
quoi, de la beauté
des Miss France, là.
Voilà.
Donc, pour toi,
la beauté, c'est pas importante ?
Ben, c'est important
pour les vicieux qui regardent.
Sinon, pour moi, non,
c'est pas important, quoi.
OK.
Ça y est, j'ai compris la question.
Je peux répondre ?
Ouais.
Ouais, c'est très important,
la beauté.
Sinon, à quoi ça sert
de regarder Miss France ?
OK.
Hé, Gérard.
Quoi ?
Tu sais ce qu'elle fait,
Miss France, quand elle voit...
C'est qui ?
C'est Cudan.
Tu sais ce qu'elle fait,
Miss France,
quand elle voit
une peau de banane par terre ?
Non.
Merde, je vais encore
me casser la gueule.
Ouais, ben alors, merde.
Moi, je vais te dire une chose,
que là, maintenant,
tu peux dégager.
Ben, c'est pas méchant.
C'est pas grave.
Ben, c'est pas méchant.
Bon, putain !
C'est pas méchant.
Putain, mais arrête
avec ta merde, là.
Tu me gères un peu ça, là.
Tu me fais quoi, là,
de la merde ?
T'as compris ?
Tu me vires Cudan.
Hop, terminé.
Ouais, c'était sympa, la blague.
Hop, terminé.
Georges.
Oui, la beauté, ça,
c'est...
Faut pas tenter la France,
quand même.
Même, on aurait...
Sinon, on aurait
une mauvaise image
de la France.
La beauté, c'est ça.
Euh, Clafoutis.
Bonjour.
Ouais, c'est pas...
Moi, je trouve que la beauté,
c'est n'importe quoi,
parce que c'est pas parce
que j'ai une jambe
plus courte que l'autre
que, en fait,
ben, j'étais pas belle, quoi.
C'est n'importe quoi.
En fait, j'étais aussi belle
que les autres,
mais évidemment,
maillot de bain,
ça se voit de trop, quoi.
C'est ça, le problème.
Non, mais tu peux préciser ?
Eh ben, je précise
que, ben, la beauté,
c'est pas si important que ça, quoi.
On peut avoir
une jambe en moins et...
Ouais, c'est vrai.
Ben ouais.
Ouais.
Et puis être miss, quoi.
Ouais.
Eh, Gégé,
tu veux pas faire
une blague à Sandy
et l'inscrire à Miss France ?
Comment ?
Tu veux pas faire
une blague à Sandy
et l'inscrire à Miss France ?
C'est qui ?
C'est qui qui parle ?
Rodrigo.
Bon.
J'ai l'impression...
J'ai l'impression
qu'on va s'arrêter
dans moins de 3 minutes.
Oh non, Gérard !
On continue ton débat, là.
C'est bien, non ?
Franchement, c'est cool, ouais.
C'est bien, on s'éclate.
Ouais.
Alors, Foufoune ?
Ouais.
Ben, je pense que c'est un minimum,
ouais, qu'elle soit jolie au moins
et puis qu'elle sache
aligner deux mots, quoi.
Ouais.
Bonjour, ça va ?
Oui, ça va.
Là, j'ai dit 3 mots, t'as vu ?
Ouais, 3 mots.
Bonjour.
Gégé, tout à l'heure,
il y a une fille qui disait
qu'elle avait inscrit
sa copine à Miss France.
Moi, j'ai inscrit un copain,
tu sais, question pour un champion
pour lui faire une blague
et il a été éliminé
au 4 à la suite.
C'est pas le thème du débat !
Hop, terminé pour Tony.
Non, non, mais attends.
Terminé pour toi,
c'est fini, là, maintenant.
Non, mais t'es pas insulté, là.
Ça est terminé !
OK, alors retourne à la danse,
espèce d'enculé.
Bon, moi, je t'en mets,
salaud !
Oh, là, tu me le vires
complètement.
Il est viré, il est viré.
Là, moi, un connard comme ça,
moi, j'en veux pas.
Alors, maintenant,
tu m'envoies la musique,
on va calmer tout le monde, maintenant.
OK, OK, OK.
Bah, t'annonces les numéros
de téléphone et tout ça,
s'il te plaît ?
Alors, donc, vous pouvez toujours
nous appeler au 0803 08 5000
et 0870 5000
et toujours de lire
cww.fr
ou que Rigaud vous attend.
Rigaud, tu peux nous dire
combien qu'on est ?
Je crois qu'on a dû perdre...
4 382, c'est bien,
et on s'écoute le disque.
4 300 ?
Bon, ça va.
Donc, on se retrouve
tout de suite après.
Voilà, vous venez d'écouter
les petits sissons de la bonne
avec des bas résiliés.
Résilés, pardon.
Et donc, vous êtes toujours
sur Fun Radio,
donc, 2h44 du matin.
Ouais.
Donc, j'espère qu'on va atteindre,
et ça, mon chef,
il vient de me le demander,
j'espère qu'avec Rigaud,
on va atteindre
des 5 000
avant la fin de l'année.
C'est ça, c'est ça.
C'est ça, c'est ça.
3h du matin.
Je pense que ça devait être possible.
J'espère.
Possible.
Si les bas se passent bien
et que tu gueules pas trop,
ça devrait le faire.
Vu que là,
quand le disque s'est arrêté,
on était à 4 462 moins 4,
ça devrait le faire.
OK.
Alors, donc,
on récupère Margot.
Mégot.
Mégot, pardon.
Ouais, ouais.
Excuse-moi, excuse-moi,
excuse-moi.
D'accord, je t'excuse.
J'ai dit Margot,
mais c'est pas grave.
Ouais, c'est bon, Margot, non ?
Bah ouais, pourquoi pas,
c'est le nom d'un chien, en plus.
Ouais, d'accord, OK, bon.
OK.
Ouais, c'est ça.
OK.
Poussin.
Bonjour.
Oui, donc, bonsoir à tous.
Bonsoir, Mégot.
24 ans de...
Bonsoir, Balut.
Bonsoir, Fildar.
Bonsoir, Max.
Salut.
Bonsoir, mon chien.
Bonsoir, Poussin Mystère.
Ah, bonsoir, Gérard.
Excuse-moi, je t'avais oublié.
Ah ouais, bah, c'est simple.
Georges.
Bonsoir à tout le monde.
Bonsoir, Clapouti.
Ouais, salut, toujours là.
Bouledopu.
Oh, Bouledopu !
C'est quoi, ce bordel ?
Salut, salut, salut, salut, Gégé.
Bouledopu.
Ouais, je suis là.
Bonsoir, Gérard.
Bonsoir, Sandi Capé.
Bonsoir, tout le monde.
Sandi Capé, je vais te dire une chose, que Bouledopu, tu vas pas commencer tes conneries,
d'accord ?
C'est pas le problème.
C'est pas le problème.
Moi, je suis calme.
T'es dans le coup, aussi, non ?
Ouais, à fond.
Et Foufoune ?
Ouais, salut, Gérard.
Salut, Sandi.
Alors...
Je vous rassure tout de suite, je m'appelle pas Sandi.
Tu me rassures.
Alors, la quatrième question, donc...
Non, c'était la troisième.
Non, quatre.
D'après vous, comment je les...
Comment je...
Comment je les misse France ?
Ça doit être de la bite.
Comment ?
À mon avis, c'est des crudités, hein.
Attends, attends, attends, attendez, attendez.
Qui c'est qui vient de répondre, là, que c'est de la bite ?
Pas moi.
Pas moi.
Pas moi non plus.
Bon, alors, on va demander à Foufoune.
Ouais.
Je sais pas, ils sont allés au grain, en plein air, dans le foin.
Non, mais tu peux préciser.
Elles mangent des choses saines, sans bactéries, sans EPO.
Elles sont des picoses et elles font de l'agime.
D'accord.
Elles sont bien gaulées, donc il y a du travail, quoi.
Elles passent par la chirurgie esthétique, elles mettent des millions là-dedans pour faire Miss France.
Ouais, mais ça, c'est pas elles, en fin de compte, c'est pas elles qui payent.
Ah non, c'est Madame de Fontenay qui paye.
Non, non, non, non, non, non.
Faut bien se dire une chose.
Non, c'est les Restos du Coeur qui payent.
Non, mais attends, toi, t'es à ton micro.
Donc, faut se dire une chose.
Pour être Miss France, déjà, c'est pas Madame de Fontenay, comme tu viens de dire.
Ouais, c'est les impôts.
Donc, ça passe par des concours de mode et tout ça.
Donc, on va demander à Bouledopu.
Gérard, avant, sur IRC, il y a Triso, Miss Triso, qui te demande quel est le QRZ de Madame de Fontenay.
Ça, c'est pas le thème des débats.
Pas belle, je crois.
Pas belle, ou vilaine.
Non, non, mais c'est même, c'est pas du tout le thème des débats.
La Cibi est terminée, maintenant, c'est sur les Miss France.
Donc, on va demander à Clapouti.
Bah, je pue de la gueule, moi.
Ouais.
Qui ?
Bouledopu.
Bah, tu viens de répondre.
Bah, non, j'ai pas répondu.
Bah, alors, tu réponds.
Ouais, alors, je pense que, je sais pas, je dois vous faire 2-3 Big Macs le midi.
Un bon sauciflard le soir et un rôti de veau.
On va avoir une belle ligne.
D'accord.
Tu crois qu'en mangeant tout ça, elles auront une belle ligne ?
Je crois que le midi, elles mangent des frites, moi.
J'en suis la preuve.
Bah, attends, parce que t'es belge, toi.
Ah non, je sais pas, je dis ça comme ça.
Eh, t'es devenu belge ?
Et après, chez elles, ça pue l'huile.
Ouais, mais t'es...
Non, ça pue l'huile.
Eh, t'es bien.
Ouais, mais t'es devenu belge, toi.
Hein, non, non.
Ouais, mais t'es comme Pildar, vous devenez belge, là, tous les deux.
Bah, alors, toi, qu'est-ce que t'es, Gérard ?
Clapouti.
Euh, ouais, bah, moi, je pense qu'elles mangent des asperges en boîte.
Ouais.
C'est super bon pour la forme.
Et qu'elles boivent du lait de chèvre.
Parce que ça, c'est super top pour le teint.
Et puis, bah, en fait, la Fontenay, par contre, elle, elle mange des frites.
Non, non, mais attends.
Eh, Clapouti.
Ouais.
On n'en a rien à foutre de la Fontenay, d'accord ?
Ouais, mais c'est quand même une mise.
Non, non, mais on n'en a rien à foutre.
On n'en a rien à foutre.
On s'en fout de la Fontenay.
Non, elle voit le régime dragounien.
Elle mange de la salade.
Elle mange vraiment de la grasse.
On peut grossir.
Qu'est-ce que t'as donné à manger à ta fille, toi, avant qu'elle fasse le concours, Georges ?
On a été voir un diététicien.
Il a fait un régime pour les salignes.
Puis c'est tout.
On s'en fout de la grasse.
Hum, hum.
Euh, Poussin ?
Ouais, bah, moi, je suis d'accord avec Georges.
C'est vrai qu'il mange surtout des salades, tu vois, prodités, concombres, même des...
Ok, super.
Bon, derrière, vous laissez les gens répondre, s'il vous plaît.
Oh !
Excuse-moi.
Vous laissez les gens répondre.
Ça vaudra mieux pour tout le monde.
Parce qu'il est 2h49, et on n'est qu'à la quatrième, et il y a 11 questions.
Oh, putain.
On dit pas putain.
Euh, bah, qu'est-ce que je dis ?
Alors, donc, pour finir, Poussin, si tu pouvais continuer ce que tu me disais.
Ouais, donc, je te disais, bah, tu sais, les Miss France, ils ont franchement un régime draconien,
parce qu'il faut qu'elles mangent des croûtes.
Oui, des pétraves, des salades.
Donc, ils n'ont pas le droit à la graisse, ni au sucre, rien du tout.
D'accord.
Euh, Margot...
Euh, Mégo, pardon.
C'est pas cool.
Moi, je dis que les Miss France, là, elles mangent rien.
Elles pensent à rien, elles mangent rien.
Et puis, je dis, quand elles ont vraiment, vraiment faim, au bout d'une semaine, elles mangent une courgette.
D'accord.
Question IRC.
Oui, une question de Madame de Fontenay, la vraie.
Elle te demande pour quelle Miss tu aurais voté.
Euh, personnellement, moi, je...
Bonne question, ça.
Moi, je voterais pour personne.
Oh, t'as regardé ou pas ? T'as bien un petit avis, quand même.
Non, non, mais même...
Lequel tu préférais ?
Non, non, mais même, vu ce qui s'est passé, ça m'intéresse pas.
Mais...
Non, non, mais...
T'avais bien une préférence, je veux dire, moi, j'avais une préférence, Rigo, il avait une préférence.
Il s'est passé quoi ?
Euh, j'aurais...
Qu'est-ce qui s'est passé ?
De toute manière, ça va être la dernière question.
Donc, on n'est pas couchés.
Donc, 43% des gens utilisent la Miss France pour découvrir la région de la France.
Les régions de France, pardon.
Bah ouais.
28% des Miss France utilisent seulement les portables pour s'appeler entre elles.
Ça, je vois pas du tout le rapport.
71% des Miss France préfèrent être Miss Univers...
Univers Solitaire.
Univers Solitaire, c'est quoi, ça ?
Au-dessus de...
T'as Miss France, t'as Miss Monde, t'as Miss Univers et Univers Solitaire.
C'est le top des Miss.
Ouais, bah, c'est bien.
23% des gens...
Des gens pensent que la Miss France ne sert à rien sauf pour se masturber.
Alors ça, euh...
Ça, c'est vraiment des...
Il y a beaucoup de gens qui pensent ça, quand même, hein.
Ouais, bah, ouais.
Si, si.
Combien y en a ?
23%.
C'est énorme, hein.
Ouais, ça fait beaucoup, hein.
Et 32% des gens pensent que l'abonnement aux Miss France est trop cher.
Il n'y a pas besoin d'abonnement.
Voilà.
Si !
Non.
Quoi, si ?
C'est ça, Rigaud, hein.
Je me suis pas trompé dans...
Dans les sondages ?
Non, non, c'est ça.
T'as bien joué.
Alors, une question que je vais poser à tout le monde, et ça, je peux préciser que sur
la question que je pose, personne n'a été capable de me le donner sur les sondages,
et ça, c'est bête.
Donc, d'après vous, depuis quelle date Miss France existe-t-elle ?
On va demander à Mégo.
Ouais, bah, écoute, ça a toujours existé depuis la nuit des temps, parce que, au départ,
l'élection de Miss France...
C'est une légende.
C'est une légende, et puis ça s'est perpétué, et puis...
Pardon ?
Allô ?
Ouais, on t'écoute.
Ouais, je disais, donc...
Ouais, ça date de la...
Bon, on me laisse parler, là ?
C'est possible ?
Ah, vas-y !
Ouais, bonjour, c'est Boule de Pue.
Ouais, ouais, attends, Boule de Pue, pour l'instant, tu...
C'est pas fini.
Oh, Manu...
Fildar !
Ouais ?
Calme-moi, Boule de Pue, là, pour l'instant, c'est pas son tour.
Ouais, calme-moi, Fildar.
Ouais.
Mégo, donc, précise.
Ouais, alors, donc, je disais, ça a toujours existé, depuis le début, au départ, c'était
une légende, et, en fait, voilà, comme maintenant, ça se concrétise, tout le monde peut voter,
tout le monde peut participer, maintenant, c'est génial, voilà.
D'accord.
C'est pas pour Boule de Pue.
Ok.
Rigo ?
Oui, il y a Miss Assetton qui te demande, c'est quand l'élection des Miss Calendrier
de Routier ?
Ça, je sais pas.
Ça, je pourrais pas lui répondre.
Qui c'est qui va passer derrière ?
C'est quoi, ça ?
Je sais pas.
Ah, c'est le poussin vert mystère, là ?
Un poussin mystère tout court.
Un poussin vert mystère.
Écoche pas mon nom, s'il te plaît.
Bon, c'est ce que je vote, toi, d'accord ?
Un poussin vert mystère.
Bah, écoute, moi, ce que je peux te répondre, c'est que ça existe déjà depuis très, très
longtemps.
Ouais.
Et que, déjà, à l'époque de Cro-Magnon, ça existait.
À l'époque de qui ?
À l'époque de Cro-Magnon.
C'était qui, Cro-Magnon ?
C'était qui ?
C'était qui, Cro-Magnon, là ?
C'était qui, Cro-Magnon ?
C'était les hommes historiques.
Oh !
On se calme derrière, on laisse passer le poussin vert mystère de mes genoux, là.
Faites place, faites place.
Ah, c'est les hommes préhistoriques.
Ah !
Ah, mais c'est un homme préhistorique.
Bon, non, c'est à l'époque des hommes préhistoriques, quoi.
Ah !
Ah, attends, mais ça...
Il y avait des femmes qui étaient mythes.
Ah, ouais, mais c'est à l'époque où Jésus-Christ est allé sur la Lune.
Ok, super.
Hein, poussin ?
Ça va être l'humour, ce soir, Gérard.
Oh, putain.
C'est cool, Gérard.
Oh, poussin !
Oui ?
C'est à l'époque où le premier homme est monté sur la Lune.
Ouais, c'est super beau, oui.
Gérard ?
Allô ?
Poussin ?
Oui ?
Quand tu parles de l'époque préhistorique, c'est l'époque des 100 dinosaures ?
Oui, voilà, les 10 dinosaures, et puis je ne sais plus quoi, là, les...
Les tranctosaures, là, les trucs comme ça.
Ah, les brunosaures, les...
Les brontosaures, les tricérapthos.
Ouais, bon, Georges, les 100 dinosaures.
Depuis le temps, trop tard.
Georges ?
Oui ?
Comment c'est, en 1956 ?
66 ?
Non, 56.
56 ?
Oui.
Je ne suis pas trop d'accord avec toi.
Pourquoi ?
Ah bon ?
Non, non, mais on va laisser tout le monde répondre clapoutis.
Ouais, moi, je pense que c'était en 1789, parce que la première, elle s'appelait Marianne, je crois.
Oh, ouais, bah d'accord.
Alors là, toi, t'es carrément parti sur...
C'est vieux, hein ?
Ouais, mais c'est vachement vieux, en fait.
Oh, ouais, vache.
Oh, la vache.
Eh, pourquoi c'était pas l'année de la vache, les Miss France ?
Mais non...
Non, mais tu te rappelles pas, Marianne, avec son chapeau, là, et tout ça ?
C'est clair, quoi, c'était elle, c'était l'ancêtre, déjà, de l'autre, là, Geneviève, et tout.
Elle avait le chapeau, c'est clair, c'est 1789.
Bon, ok, d'accord.
Ok.
Boule de puce ?
Ouais, alors moi, je sais pas du tout.
Faudrait pas te dire une date exacte, mais je sais que je regarde depuis l'âge de ma naissance.
Que je kiffe Miss France.
Elles sont bonnes, quoi.
D'accord.
Foufoune ?
Ça existe depuis que Madame de Fontenay a pris un extra, en 1962.
Et depuis, elle s'en est parmise.
Je voudrais se partir avec Laurent Gardier.
Elle a m'enflé, hein.
À mon avis, je pense que vous vous trompez tous, ça existe depuis 1965, et il y a eu un reportage...
Ah, j'ai fait trois ans.
Il y a eu un reportage de fait...
N'importe quoi.
C'est faux !
Tu mens, Gérard.
Tu mens comme tu respires.
Ouais, moi, je t'emmerde !
N'importe quoi.
Bon, tu me mets tout le monde en air.
On est en air.
En air.
Tranquille.
J'en connais un tout à l'heure, il va se prendre une bobe si je l'attrape, lui.
Ouais, c'est ça.
Bon, tu me mets...
Tu me coupes tout le monde.
Voilà.
Voilà.
Donc, alors, moi, je peux vous dire une chose, que ça existe depuis 1965, et ça, c'est
vrai, parce qu'il y a eu un reportage qui a été fait samedi, sur la Une, avec...
Patrick De Carolis.
Non.
Non ?
Non, sur la première, c'est pas avec...
C'est Emmanuel Chien.
Henri Chambon.
Ah, avec Henri Chambon.
Et donc, ça existe depuis 1965.
Exactement.
Les sélections de Miss France.
Moi aussi, Chambon.
Regarde, Chambon, Gérard, sans...
Hop, on...
Suivante question.
Sortirez-vous avec la Miss France en boîte ou autre ?
Allô ?
Allô ?
Attendez, parce qu'il est parti savater Olivier, parce qu'il a eu le double saut.
Olivier, casse-toi.
Casse...
Dégage, Olivier !
Arrête tes conneries, d'accord ?
Et avec qui ?
Je t'en reviens dans le studio, tu me fais une connerie, je te claque.
Ok ?
Allez, reviens, Gégé.
Allez.
On reprend, on reprend les auditeurs.
Allez, c'est parti.
Ok.
Alors, on va demander à Foufoune.
Ouais, non, moi j'irai pas avec elle.
Mais tu peux expliquer ?
Parce que je vais dans des boîtes pas très saines et je pense que pendant un an, elle
n'a pas trop le droit de fréquenter ce genre d'endroits, donc non, j'irai pas avec elle.
Non, bah là, tu te trompes.
Ah bon ?
Montez sur moi, c'est tout.
Euh, Manu !
Tu arrêtes avec ce remix !
Regarde, tu arrêtes !
Ça, c'est du mix.
Tu arrêtes ou sinon j'arrête, là.
J'ai rien fait.
J'arrête dans 4 minutes les débats.
Bah ouais, c'est le but.
D'accord ?
Bon, allez, on y va.
Donc, Foufoune, je suis...
Il y a Miss Davy Free qui te demande si on peut lire dans les chromosomes d'un embryon
si le bébé, il sera futur Miss France.
Et si c'est un garçon, comment on fait ?
Non, je pense pas qu'on peut lire là-dedans.
Et il te demande combien ça fait en euros.
Ouais, ça, j'en sais rien.
Euh, boule de puce.
Bah alors, moi, je suis chaud comme la brèze pour sortir avec une meuf, une Miss France.
Elles n'ont pas le droit...
Pendant l'année où elles sont Miss France, de sortir avec des garçons.
Interdit d'avoir des gosses.
Interdit de rien faire, les pauvres.
C'est ça, bah...
Je crois que tu te trompes complètement.
Euh, non, pas du tout.
Mais t'as dit au GG.
Tu te trompes.
Tu te trompes parce que...
Les nanas qui sont élus ont le droit de sortir.
Et après, une fois qu'elles sont élus, je t'explique pas les soirées qu'ils font.
C'est quoi comme soirée ?
À poil et tout.
Non, non, mais attends...
Des trucs cul-cul-cul ?
Non, mais...
Avec des menottes et tout.
Non, non, après, ils sont invités dans...
Dans des soirées...
Moulin Rouge ou autre...
Non, Ritz.
Après, ils vont en Ritz.
Ils prennent des Mercedes.
Bon, Fildar, tu fermes ta gueule, maintenant.
Euh, Georges ?
Non, mais moi, j'ai ma femme.
Elle s'est obligée.
D'accord.
Euh, Poussin ?
Comme un bon sûr de ça.
Comme un boule de pute, tu t'écrases.
Oh, oh, oh.
J'étais contentisant.
C'est bon.
Donc, Georges ?
Ouais, non, mais avec ma femme, elle s'est obligée.
Ok.
Euh, Poussin ?
Mystère.
Poussin, Mystère.
Putain !
Quelle bouffonne, celle-là, sérieusement.
T'es la grosse.
Bah, t'es toi, la grosse.
T'es boule à dos, t'as fait finir ça.
Putain !
Fildar !
Eh, mais calme-toi, là-bas, le vieux con, là.
Mais non, mais Gérard, c'est bon, il revient.
Reviens, Gérard.
Attends, l'autre, il arrête pas de me couper les jambes.
Il a laissé son truc, là, il me coupe n'importe qui.
Là, il va se prendre des claques dans sa gueule, encore.
Qu'est-ce que t'as fait ?
C'est navrant.
Y'a rien, hein ?
Y'a rien, regarde, regarde.
Viens voir, viens voir, viens voir.
Mais, mais, mais, là, là.
C'est-à-dire que là, ils sont tous talentés.
Mais, bien sûr, pourquoi t'avais été là ?
C'est moi qui viens de le remettre.
Ah.
Il l'avait mis en air, encore.
Alors, il va se prendre des claques dans sa gueule.
En air, c'est quand t'es à l'antenne.
Il l'avait mis en out.
En vête.
Ouais.
Il voulait pas qu'elle parle.
Ah, c'était une erreur.
Comme d'habitude.
C'était une erreur.
Ouais, ouais, c'est une erreur.
Attends, tu vas te prendre des claques dans ta gueule.
C'est comme un faux numéro, c'est pareil.
Alors, Poussin.
Ouais, bah, tu m'écoutes, Gégé, ou pas ?
Je t'écoute.
Fildar a fait un bon premier débat.
Ouais, mais là, pour l'instant, il fait de la merde.
Oui, mais comme tu me l'as pas remercié au début,
tu remercies pas les gens quand ils font du beau boulot.
Pour l'instant, au premier débat...
Il fait que c'est crabe.
Il fait un truc avec ses crabes.
Bah, ouais, mais il va pas continuer comme ça.
Mais d'accord, mais ça s'est bien passé.
Ouais, bah, alors, dans ce cas-là,
qui me passe un deuxième débat ?
Qui bosse bien pour le moment ?
Qui bosse bien ?
Pour l'instant, Rigaud,
on est à combien sur l'Internet ?
On a perdu.
Quand t'as dit que tu te cassais,
il y en a plus de 1 000 qui sont partis.
On est à 3 722.
Donc, j'espère qu'on va récupérer.
Bah, dis-leur de revenir, dis-leur de revenir.
Manu, au premier débat,
il a fait du bon boulot, au standard.
Oh, merde, c'est pas vrai.
Attends, c'était pas vrai.
T'as gueulé dessus.
Non, non, non, non.
Bah, j'ai la DAT, t'as gueulé dessus.
J'ai la DAT.
Sur certains auditeurs...
On va reprendre le débat juste pour dire à Rigaud,
là, tu peux leur demander de revenir au 1000.
Donc, tous ceux qui sont partis, là, sur Minitel,
essayez de revenir...
Non, Internet, ça s'appelle.
Sur l'Internet, pas sur le Minitel,
parce qu'il fonctionne pas.
Non, mais Minitel, Internet,
vas-y, parle de l'Internet.
Donc, l'Internet,
vous pouvez toujours nous joindre au www.frfunradio.
Revenez, revenez, revenez.
On va battre le record, ce soir, Rigaud, s'il te plaît.
Faut qu'on arrive à 5000.
Faut que tu nous en trouves 5000.
Et là, il est 3h01, normalement.
Moi, je devrais avoir fini le débat.
On va chercher, on va chercher.
Donc, Poussin.
Oui, donc, je te disais,
je pense que les...
Ah oui, c'est sortir avec les Miss France.
Oui.
C'est pas sortir avec moi.
Poussin.
Moi, personnellement,
je pourrais pas sortir avec une Miss France,
vu que je suis une nana.
Mais avec un mec qui fait Miss France,
oui, pourquoi pas.
Ah bah, t'as déjà vu des mecs...
Je regarde si ça fonctionne.
C'est pas facile pour les contourneurs de beauté.
Qu'est-ce qu'elle est taubée, celle-là ?
Qu'est-ce que tu fais, Gérard ?
Non, je suis pas taubée, c'est vrai.
Attendez, attendez.
Non, non, on arrête, on arrête.
Qu'est-ce que tu fais, Gérard ?
On arrête, on arrête.
Pourquoi tu...
Mais non, on n'arrête pas, hein.
Non, non, il recommence, il recommence.
Il recommence, il recommence.
Je suis là, je suis là.
Poussin.
Ah, mais c'est Manu.
Mais non, parce que là, je les coupe, parce que tu parlais.
Oui ?
C'est Manu qui coupait.
T'as été coupée combien de fois ?
Manu, c'était Manu.
Je peux pas te dire, parce que j'ai pas fait gaffe.
Ouais.
C'est pas la religion, en plus, on parle pas de la religion.
Euh, donc, qui c'est qu'il me reste ?
Mego ?
Ouais, bah moi, je suis d'accord avec Poussin Mystère, là.
Je trouve qu'elle a bien répondu à la question,
et moi, je suis d'accord avec elle.
- Hum ? - Voilà.
Mais tu peux préciser, quand même, le fond de ta pensée ?
Bah, que moi, je pourrais pas sortir avec une fille
qui est dans l'élection de Miss France,
parce que je suis pas intéressée par les filles.
Et puis, par contre, un mec,
qui va dans l'élection de Miss France,
ouais, je suis d'accord, pourquoi pas ?
- D'accord. - Voilà, c'est ce qu'elle a dit, non ?
- Euh, ouais. - Voilà.
De toute manière, y a pas que les boîtes.
En fin de compte, qu'on peut inviter une Miss France,
tu peux l'inviter au restaurant et autant.
Ouais, mais il faut du pognon, putain.
Ouais, mais ça, euh...
Tu m'en prêtes ?
Tu peux l'inviter à faire les boutiques, aussi, hein ?
Ouais. T'as des lèches vitrines, t'as...
- Fils de cul... - Poussin Mystère ?
- Oui ? - Ouais, quand tu fais les boutiques,
tu vas où, toi ?
- De quoi ? - Quand tu fais les boutiques,
tu vas où, toi ?
Moi, je vais généralement dans Paris.
Ouais, mais où, dans Paris ?
Bah, y a une ville, mais je pourrais pas citer, quoi,
parce que sinon, ça ferait trop de marques.
Bon, bon, bon, bon, on va peut-être reprendre les débats, Gérard.
Tu gères un peu, on y va.
Donc, alors, sur la question, donc...
Oui, Rigaud, une question, avant ?
On va danser sur le débat ou pas, là ?
Y en a plein. Y a Miss Paradox qui te demande :
"Est-ce que tu penses que l'élection de Miss France,
c'est pas un racket visant à enrichir France Télécom ?"
Je pense pas.
Mais ça... Mais justement,
cette question-là, tout le monde l'attend,
mais je vais la poser tout de suite, là.
Non, non, je l'attends pas.
Bon, attends, toi, tu perds de ta gueule et c'est tout.
- Euh, Manu ? - Ah non.
Tu me fais du bon boulot ?
Bah ouais, je fais que ça, hein.
Je fais que ça.
Alors, donc, y a 86 % des gens...
Bon, allez, hop, conclusion terminée, moi, j'arrête.
Bah non, maintenant, Gérard,
je suis en train d'essayer de récupérer des gens.
Regarde, on va battre leur corps.
On est remontés au-dessus de 4 000, Gérard.
Gérard, reste, Manu, on y va, on y va, on continue.
Alors, y a 86 % des gens qui ont vu Miss France
ont vomi et s'en remettent pas.
Donc ça, je vais te dire une chose, Gaël,
quand tu me sortiras des trucs comme ça, tu me feras signe.
53 % des gens rêvent toutes les nuits
de se prendre une bonne grosse Miss France.
Donc, je sais pas où est-ce qu'elle est.
Alors là, l'histoire des calendriers,
je la pose pas, ça sert à rien.
- Pourquoi ? Elle est bien. - Non, non.
- C'est des routiers.
- 47 % des routiers ont des calendriers de Miss France nus
dans leur camion, c'est vrai ou pas ?
- Non, c'est faux. Alors, toi, tu t'écrases.
Toi, tu fais ton boulot et tu t'es...
36 % des gens ont tué Miss France pour avoir un chien.
Alors là, Gaël, je vais te dire une chose,
que là, je termine même plus.
- Elle t'embrasse, elle t'embrasse comme elle te dit bisous, Gégé.
- Allez, hop.
- Sondage paru dans Miss France News.
- T'as oublié de dire que 43 % des gens pensent que Miss France
est une salope et que 1 % des gens préfèrent Monsieur France
en string que Miss France en short.
- Eh ben, ça y est, le sondage est terminé pour...
- Ouais, c'est fini.
- Bon, alors, maintenant, on va continuer le débat.
Alors, l'élection de Miss France est-elle truquée ?
Donc, on va demander ça à mégots.
- Euh, non, non, elle n'est pas truquée.
Je trouve qu'elle se passe normalement devant un huissier et tout ça.
Voilà.
- T'es sûre ? - Ouais, ouais, je suis sûre.
- T'es sûre ? - Si, si, non, non, non.
Moi, je pense que c'est tout à fait légal et puis il n'y en a aucune
qui ait choisi dès le départ et puis voilà, quoi.
Moi, je pense que c'est tout à fait légal.
- D'accord. Pouce en mystère ?
- Non, moi, je pense qu'au contraire, c'est truqué
parce que quand tu vois ce qui s'est passé à la télé
il y a à peu près 2-3 jours, ils ont expliqué que normalement,
c'était la Miss Berry qui devait être élue.
- Miss Berry ? - À la place de la Miss...
- Miss Berry ? - Ouais, Miss Berry à la place de Miss...
- Berry ! - Si, Berry !
- Oh, t'as le cœur de Paris. - Oui, c'est Berry, c'est ça que j'ai dit, Berry.
- Euh, Georges ? - Oui, monsieur Aurélien, ma fille.
- Mais, il y a Delphi.
- C'est truqué, c'est un scandale, de toute façon.
- C'est truqué.
- D'accord. Question Minital... IRC, pardon.
- Non, c'est pas une question, c'est...
Attends, parce qu'il faut que je la retrouve...
Je sais plus qui c'était qui me disait que c'est truqué, en fait,
pour gagner Fos-Sucé.
- Je ne pense pas.
Euh, Clapouti ?
- Bah, je me demande si Fos-Sucé est Geneviève ou quoi.
- Non, Fos-Sucé est Jean-Pierre Foucault.
- Ah, Foucault ! - Ouais, d'accord.
- Ouais, ça. Boules de pus ?
- Ouais, bah, moi, je pense que c'est bien truqué,
parce que je me souviens, en 1975,
il y a Sandy Plodocus qui a gagné le concours,
et je voudrais savoir... C'est pas possible, quoi.
- Puis, euh... Fildar, s'il te plaît.
- Ouais ? - Tu me vires Boules de pus.
- Salut, mec ! - Non, mais c'est intéressant,
ce qu'il dit, Gérard, t'inquiète pas.
- Euh, Foufoune ?
- Ouais, bah, euh... C'est pas truqué.
- Bah, tu peux expliquer ?
- Parce que Sandy a dit que c'était truqué,
donc je veux pas dire comme elle.
- Alors, moi, je peux te dire une chose.
- Oui ? - Bonjour.
- Bonjour.
- Gérard, en attendant, il y a Miss Davy Ford sur l'IRC
qui dit qu'en tout cas, s'il voit Sandy au Miss France,
il considérera que c'est clair que c'est truqué.
- Mais n'importe quoi.
Euh, donc, moi, je peux vous dire une chose,
que l'histoire de Miss France...
Bon, alors, pour moi, terminé, je...
- Non, non, Gérard, c'est bon, là !
- Gérard, t'es niaque pas !
- Regarde !
- Qu'est-ce qu'il y a ? - Regarde, Gérard !
- Hé, Olivier, t'arrêtes, t'as pas tes conneries derrière !
- Allez, assieds-toi, Gérard, c'est bon, reviens, allez, allez.
- Fais pas le con, toi, non plus !
- Olivier, il travaille dans le studio à côté, alors c'est lui.
- Alors, fais pas le con, toi. - Salut, c'est pas moi, Gérard.
- Fais pas le con, parce que de toute manière, c'est terminé.
Moi, je fais la dernière question.
- On te fatigue pas, Gégé, c'est bon.
- Non, non, mais c'est terminé, maintenant. Allez, hop.
Moi, je peux vous dire une chose, que ça a été truqué,
parce que, pour une bonne chose,
c'est que la ministre Haïti pleurait avant,
la présidente qui a donné un mouchoir pour qu'elle s'essuie les yeux,
et normalement, c'était Miss Berry, qui devait être élue non Miss Haïti.
Donc, pour moi, ça a été truqué, ça a été truqué.
Et ça, dans la presse, ils en ont parlé, mais maintenant, ils écrasent.
Pour l'instant, ils ont camouflé, ils ont mis fin,
comme dans un jury, ils ont dit : "C'est une affaire classée."
Donc, pour moi, c'est de la merde.
- On m'excuse.
- Voilà.
- Donc, conclusion du débat.
- Ah !
- Non, déjà ?
- Non !
- Non, c'est pas possible.
- Je suis en train de rattraper des gens, là.
Si tu veux qu'on dépasse les 5 000, il faut continuer le débat, là.
On est à 4 722, on est beaucoup remontés.
Ils ne m'écoutent même pas.
- Si, si.
- Non, mais non.
- J'écoute, Rigaud.
- Non, mais tu ne m'écoutes pas.
- On était à 4 000.
- Tu ne m'écoutes pas.
- On est à combien ? 4 722.
Voilà.
- Bon, ça va, tu m'écoutes, c'est bien.
- Alors, devrait-on faire une élection de Miss Boudin ?
On va demander à Mégo.
- Moi, je suis d'accord avec cette idée-là.
Je pense qu'il n'y a pas que les beautés qui doivent participer à l'élection.
Il y a aussi les boudins, il n'y a pas que des beautés sur Terre.
Voilà, je pense que chacun y trouvera son compte, non ?
- Je pense.
Poussin vers Mystère.
- Oui, donc moi aussi, je pense que pourquoi pas ?
Parce qu'il y a bien aussi des Miss pour les personnes âgées,
pour les mamies, il y a des Miss mamies.
- Et il y a des mêmes, je dirai plus tard, Georges ?
- Oui, tout le monde doit être égaux.
- Ah bah, c'est bien, toi.
- Bah oui.
- Donc, on peut élire n'importe qui.
Qui c'est qu'un téléphone pourri, là ?
- Eh Gérard, là, c'est Poussin.
Je voulais te dire qu'en Amérique, ils font aussi les concours d'élections
sur les femmes qui sont un peu fortes.
Et donc, ça fait les élections de Miss ronde.
- D'accord.
Ok, Poussin, Mystère, bière.
- Tu t'es inscrit, non ?
- Euh, Clapouti ?
- Ouais, j'avais une question.
Comment on fait pour les maillots de bain, alors ?
- Bah, tu peux préciser ?
- Bah, si on fait l'élection de Miss Boudin,
on fait comment pour les maillots de bain, quoi ?
- Bah, tu peux trouver des maillots de bain...
- Taille unique.
- Taille unique ?
- Ouais, si taille unique, ça craint.
- Non, mais de toute manière, tu peux trouver des maillots de bain
qui sont assez...
qui sont faits pour ta taille.
- Eh, j'ai des toiles de teint.
- Faut pas qu'ils crassent, ici.
- Gérard, sur IRC, il y a Miss Pourras qui demande :
"Est-ce que c'est vrai que Miss France est à la beauté,
ce que Sandi est au saucisson à l'ail ?"
- Ah, bah, ça, peut-être.
On verra, on lui demandera.
Euh, boule de pus ?
- Ouais ?
- Boule de pus !
- Tu l'as virée !
- Ah, bah...
- Ah, bah, oui, quand même, je suis là.
Bah, vu que Fildar,
il m'a pas mal calmé, il m'a bien engueulé au standard.
- Ouais, il t'a vachement calmé,
il est en train de faire le con avec sa caméra.
- Non, c'est quelqu'un d'autre, je sais pas qui c'est,
je connais pas les voix.
Mais t'as pas entendu la question.
- Ah, bah, t'as pas entendu la question, je répète pas.
- S'il te plaît, j'ai pas été méchant pendant le débat.
- C'était l'élection de Miss Boudin.
- Voilà. - Voilà, Miss Boudin.
Et c'était quoi ? Répète, répète.
- Non, mais attends, répète, maintenant, t'as compris.
- C'était l'élection de Miss Boudin, c'est ça ?
- Bah, si Sandy participe, y a pas de problème, ouais.
- Alors, Sandy, attends, merde, tu dégages pour de bon pour toi.
C'est terminé. Allez, hop !
Hop là ! - Alors, euh...
Qui c'est qu'il nous reste, donc, boule de pus ?
Tu me reprends quelqu'un d'autre, hein ?
Oh là là, fil d'art !
- Quoi ? - Tu me trouves quelqu'un d'autre ?
- Non, j'ai pas le temps. - Ouais, t'as pas le temps,
tu vas travailler. Foufoune ?
- Ouais, euh... Bah, pourquoi pas, non plus,
faire l'élection de Miss Jambe de Bois, Miss Oeil de Vert,
ou Miss Culotte de Cheval, quoi, c'est ridicule.
- Hum-hum. - Voilà.
- D'accord. - Gérard ? - Oui ?
- Y a Miss Eason qui me demande :
"Est-ce qu'une fille qui n'est pas française
peut participer à Miss France ?"
- Je pense.
- Ouais ! - C'est faux, c'est faux !
- Pour une fois, elle a raison, c'est faux, hein.
- Ouais, mais attends ! - Non, mais attends !
- Non, non, ça... Non, non, ça, moi, je peux vous dire une chose,
y a toutes les villes qui participent.
- Ouais, mais c'est français, les villes.
- Gérard, y a Miss Paradox qui me dit qu'il a vu Sandy
à l'élection de Mister Nobile 92.
- C'est bien.
C'est bien, c'est pas mal.
Donc, moi, je peux vous dire une chose,
qu'on pourrait faire...
plus de...
Bon, celui qui s'amuse derrière, il arrête !
Bon, allez, terminé, conclusion. Hop.
Voilà, c'est fini.
Conclusion, donc...
- Attends, on est combien sur Internet ?
- Combien, Internet, Rigaud ? - On a perdu, conclusion, il se casse.
- Mais non, mais non ! - Mais non, Rigaud, t'es con !
Combien, sur Internet ? - Combien ?
- 4 722. - Aïe, aïe, aïe, aïe, aïe.
- Non, c'est pas grave.
- La semaine prochaine, c'est les vacances,
donc ça devrait cartonner, là.
- Peut-être que dans la conclusion, ils vont peut-être...
- Ils vont revenir ! - Tu t'écrases !
- Si ça se passe bien, mon avis, ils vont revenir.
- Tu me fais du boulot de nasse, tu t'écrases au standard !
- Sinon, Gérard, Nassim... - Bon premier débat !
- Gérard ? - Oui, Rigaud ?
- Nassim, il donne sa conclusion tout de suite avant de se barrer.
Il dit que si Miss France s'est truquée,
il n'y aurait que des Sandy en finale.
Donc c'est pas truqué.
- Si, ça a été...
Ça a été truqué.
Euh, Nassim, eh !
N'essaye pas de me virer tout le monde au standard
avant les conclusions, parce que sinon...
- Ouais, non.
- Tiens, ça commence !
- Gérard, arrête, tu le tapes pas dessus !
- Arrête ! - Allez !
Gueule pas, ils vont pas revenir sur Internet, après.
- Mais go !
- Ouais, conclusion, là, donc ?
- Ouais, on arrête, là, c'est fini.
- Bah écoute...
Moi, Gérard, je vais te dire une chose.
Pendant le débat, je suis tombée amoureuse de toi.
- Non, bah c'est bien, mais je suis bien pris.
- Moi, je suis tombée amoureuse de toi, grave.
Je n'ai pensé qu'à toi, cette nuit, là.
- Eh bah, c'est bien, t'as...
- Non, s'il te plaît, fais quelque chose, là.
- Non, non, mais moi, je peux rien faire pour toi.
- Parole gentille, non, mais quelque chose de gentil, seulement.
- Bah, attends, attends, tu reprends le fil d'art, il va...
Tu reprends le fil d'art, pouce en vert.
- Ouais, j'ai dessiné son numéro !
- Ouais, bah écoute, je pense que c'est...
- Fil d'art !
- Allô ?
Y a quelqu'un ?
- Oui, y a moi, y a moi.
- Pouce en vert !
- Oui, non, mais je suis là, t'inquiète pas, hein.
- Conclusion ?
- Tu m'entends, là ?
- Ouais.
- Donc, conclusion, bah, ce que j'ai à te dire,
c'est que c'est un très bon débat, le meilleur que t'aies fait,
et en fin de compte, bah, je pense que je vais m'inscrire
à l'élection Miss France.
- Non, non, non, non, non !
- Si, si, si, si !
- D'accord.
- Jean !
- J'en comprends le tout, hein.
- Georges !
- C'était bien, mais à la prochaine fois, ma fille,
ça va être Miss France.
- De quoi ?
- Berry, l'année prochaine.
- Qui ?
- Ma fille.
Miss Berry, ça sera Miss France l'année prochaine.
- D'accord.
- Voilà.
- Tlapouti ?
- Ouais, bah moi, je pense qu'il faut garder l'émission
des Miss France, parce que comme ça,
on peut bien se marrer à la télé, quoi.
- Ouais, non, mais y a des limites.
Et Foufoun ?
- Salut, Gérard !
- Tlapouti, tu me rappelles après ?
Et, euh...
- De quoi ?
- De quoi ?
Qui c'est que je rappelle après ?
- C'est un message personnel.
- Allô ?
- Je voulais dire qu'il te crevait pas trop le cul,
parce que, depuis la rentrée, tu fais un débat suivant le reportage
qui est passé samedi d'avant sur la Une.
Donc, je pense que tu pourrais faire preuve
d'un peu plus d'imagination et d'un peu plus de culture.
Surtout que, en de bon intendeur...
- Salut ! Eh bah, la prochaine fois, on t'appellera pas,
parce que les débats que je fais sont déjà convenus avec Max,
et ça, on en avait discuté.
Donc, le débat sur Miss France,
c'était prévu.
Normalement, on devait faire la solitude et j'ai annulé.
- Parce qu'on voulait rebondir... - Fils France !
- Fils France, ouais.
On voulait rebondir sur l'actualité de Fils France.
- Fils France ! - Fils fucking !
- Toi, écrases !
- Jérard... - Donc, moi, je voulais...
- J'ai une grande nouvelle, on a dépassé les 5000, enfin.
- Ouais !
- Quand ils ont entendu que j'avais demandé de revenir pour la conclusion,
ils sont revenus.
On est à 5003.
- Ouais !
- Aïe, aïe, aïe, aïe, aïe !
- Je vais citer quelques conclusions.
- On va peut-être remercier les 5000.
- Bah ouais, on va remercier...
- On va peut-être les citer, on va peut-être donner leur pseudo.
Ça va peut-être être un peu long.
- Miss Acetone, Miss Boudin, Miss Devi One, Miss Coras, Miss Zed Zed,
Miss Olio, Rip, Ara, Beko, Bénichou, Bigo Pleu,
Hélène Dille, Finger Eater, Jean Lucien...
- C'est bon !
- C'est bon !
- Attendez, il m'en reste...
Je n'ai pas fini.
Triso, Web Shark, Sweet Boy...
- Ça y est, ça y est, c'est bon !
- Rigaud, Rigaud, c'est bon, c'est bon !
- OK, et une petite conclusion ?
Une petite conclusion quand même de Miss Turpentine.
Elle dit que ton débat, il n'avait ni queue ni tête comme toi.
- Bon bah ça, je m'en doute.
C'est toutes les semaines que j'entends ça.
- Sinon, il y a aussi Yankee, il y a aussi Madame de Fontenay, quand même.
- Merci Rigaud, c'est bon.
- Miss France, Miss Berry, Miss...
- Salut, salut !
- Salut, salut !
- Donc, de toute manière, là, vous allez retrouver Rigaud.
- J'ai oublié Beko, j'ai oublié Beko.
- Ouais, bah Beko...
- Je suis désolé.
- Donc, voilà, merci à tous d'être restés.
- Je voulais saluer les demoiselles auditrices.
Il y en a 4 ou 5 qui sont venus ce soir du Havre.
- Il y a 4 personnes du Havre qui sont venues.
- Les 4 pour filles, là.
- Qui sont venues aussi pour toi, spécialement, que pour moi.
- Oh si, oh si, oh si, elles ont entendu.
- Par contre, il y en a une qui t'a posé un lapin.
- C'est qui ?
- Ah ah ah !
- Cette semaine ?
- Ouais.
- Il y a eu deux lapins en l'espace d'une semaine.
- Rien que toi, j'ai plus de batterie.
- Bah non, t'as plus de batterie.
- Gérard, j'ai oublié Miss LGM.
- Ouais, bah ça, je vais pas aller.
Bon.
- Conclusion du débat, Gérard, toi, de Miss France.
Qu'est-ce que tu penses de Miss France et de tout ça ?
- Personnellement, j'en pense que c'est...
En fin de compte, ça a vraiment été un peu...
- Et Miss Paradoxe, excuse-moi.
- C'est bien.
Donc, pour moi, je pense qu'à mon avis, ça a été un peu truqué.
Parce qu'il faut se dire une chose,
que ça, ça a bien été précisé dans la presse.
Même sur Exclusif, ça a bien été dit,
comme quoi la présidente avait bien donné son mouchoir.
À Miss Tahiti.
Et que normalement, ça devait être bien Miss Berry qui devait être élue.
Donc, la semaine prochaine, étant donné...
- C'est le 24 au soir.
Et non seulement nous serons là pour fêter Noël avec vous,
pour tous les pauvres paumés qui sont de l'autre côté
et qui fêtent pas Noël et qui sont malheureux.
Donc, nous, on fêtera pas Noël en famille,
en ce qui nous concerne, et on sera là.
Et comme ça tombe un jeudi...
- Ça tombe un jeudi.
- Donc, Gérard sera là pour ses débats.
Et un débat de trois heures.
- Vas-y, dis, Gérard.
- Un débat qui va porter uniquement sur mes copains les routiers !
- Ouais !
- Et je veux des routiers à l'antenne !
Et même devant la radio pour Noël, je veux entendre klaxonner !
- Voilà, donc un débat de trois heures avec à peu près 20 questions.
- Euh, on va faire 22 questions.
- Ouais !
- On va essayer d'avoir 22 questions.
Et je vais les travailler pendant...
- Avec la même équipe, quand même ?
- Ouais, si ça se calme.
Donc, vous allez retrouver, pour finir, Rousseau.
Excuse-moi du temps, tu reprends avec un peu de retard, mais c'est pas grave.
Je t'avais dit avant 4 heures, donc on n'est pas loin.
- T'as de la veine.
- Donc, Rousseau pour la nuit sans pub.
6h-9h, Barthes, après la suite des émissions.
Bien sûr, demain soir, 22h, minuit max, avec Jean Deneuver.
Et bien sûr,
si vous voulez des places à La Loco,
n'hésitez pas, Fildar va vous attendre.
Il va vous récupérer pour avoir des places à La Loco.
Donc, sur ce, je vous souhaite une bonne nuit à tous.
- Des places de ciné aussi, des places de parking, des places de...
- Tout ce que tu veux.
Et bien sûr, demain soir, n'hésitez pas.
Branchez-vous tous sur FUN.
- Aucune hésitation possible.
- Maintenant, vous n'avez plus le droit de vous tromper.
Écoutez FUN.
- Moi, je vous mets sur Énergie.
- Oh, ma gueule à toi !
Toi, tu vas te faire sauter, tu vas aller dans une poubelle
sur Énergie.
- Voilà.
Le dernier disque, avant de se dire au revoir, c'est...
- Le dernier disque, c'est :
"Mets tes doigts dans les fesses, avec le beurre, c'est mieux."
"Avec du beurre, c'est mieux."
Et c'est...
Tu n'aimes même pas ça ?
- Si !
"Avec du beurre, c'est mieux."
== Le débat sur les routiers ==
=== Contexte ===
Nous l'avons dit, l'époque était particulière. Époque des grands passionnés, des jeunes gens, d'une sorte d'euphorie. Pour ces gens, travailler à des moments sacrés n'était pas un problème. C'est évident pour Gérard, vu son manque de socialisation et de lien avec l'aspect familial de telles fêtes, mais ça l'est moins pour l'équipe régulière de la radio. Et pourtant, pas de best of, les animateurs sont là, au grand complet.
Alors pourquoi ne pas fêter en direct Noël ? Et se faire plaisir avec un débat de Gérard, dans la pure tradition surréaliste. C'est à ça que ressemblera la messe de minuit de Fun radio. Pour faire plaisir à l'animateur, Max accepte son thème favori : les routiers. C'est un peu redondant par rapport à celui de la semaine d'avant, mais ce ne sera pas la seule redondance de ce thème. Et là-dessus, il est intarrissable.
COmme si les astres étaient alignés, et cela n'arrivera plus ensuite, même les audituers vedettes étaient là, sans exception, malgré le moment. De quoi offrir un beau cadeau de Noël à la jeunesse adolescente de l'époque.
=== Les personnages ===
=== Transcription ===
Je tais toi, je parle à Gérard, oh là là ! Bonne soirée Anne-Joëlle, merci, au revoir ! Allez hop, on dégage ça. Suivant ! Ah je peux plus Anne-Joëlle, je peux plus. C'est même pas physique, c'est vocal là. En plus c'est pas gentil ce qu'elle t'a dit. Ouais mais attends, tu vas voir ton répondeur, il va être blindé pour elle. Alors, donc ce soir, minuit pile dans 20 secondes, les conseils de Gérard et Sandy jusqu'à minuit et demi, une heure moins le quart, on va voir comment ça va se passer. Et même si ça se passe même plutôt bien,
on fera peut-être jusqu'à une heure les conseils de Gérard et Sandy, c'est sympathique. Non mais moi j'aurais bien voulu un petit jeu de la vérité, un petit peu quand même ! En règle générale ça se termine toujours mal parce que les questions sont assez dures et il faut voir si vous assumez, on va voir. On va déjà démarrer la première demi-heure et voir comment ça va se passer. Qui allons-nous accueillir Gérard et Sandy ? Alors on va accueillir Nina, 17 ans de Paris. Nima ! 17 ans de Paris. Oui bonsoir. Oui bonsoir. Bonsoir Max. Salut Nima. Bonsoir. Joyeux Noël à tous. Merci. De même pour toi. Ouais merci.
Bonsoir Michel. Oui alors j'ai un petit problème. Comment ? Non non moi c'est Sandy. T'énerves pas. C'est pas ta chienne d'accord ? Michel ! C'était l'américaine, bonsoir Michel et tu fiches pas ta chienne. D'accord. Tu commences à te calmer d'accord ? Ouais. Parce que sinon on passe à quelqu'un d'autre. Non non attendez, on va y aller mollo parce qu'il est minuit, il faut aller jusqu'à 4h. Donc tranquille les gars, tranquille les gars. Alors ton conseil c'est quoi ? Ce n'est pas offert de... Non mais attends il va le dire lui-même. Non mais Gérard, Gérard.
Gérard. Oh non mais concentre-toi. Arrête de les emmerder toutes les deux secondes au standard. C'est à lui de poser son problème. Parce qu'il est noté sur ta feuille que tu dois dire pourquoi ton... Hein ? Bon merci Max. Qu'est-ce qu'il t'amène Ringo ? Quoi ? Allez vas-y magne ! Bon alors en fait mon conseil c'est que j'ai pas de cadeau pour ma mère pour demain. Et je vous donne un conseil de cadeau. Déjà moi j'ai une question à te poser. Qu'est-ce que ta mère elle aime ? Elle aime forcément quelque chose. Si c'est des fleurs ou si c'est... Je sais pas moi. Elle aime les voitures.
Ouais. Quel genre de voiture ? Ah les voitures jaunes. De couleur jaune. Ouais. Et de quelle marque ? Une marque japonaise. Une marque japonaise ? Mais quelle marque ? Il y a plusieurs marques japonaises. Mais non mais non non non non non non non non. Non mais là déjà on va avoir des problèmes. Non non excuse-moi. On va avoir des problèmes avec ça direct parce que vous avez dit... Pas de marque. Une marque japonaise. Une marque japonaise c'est une marque. Donc... D'ailleurs on sait que tous ceux qui conduisent avec une voiture japonaise c'est une marque.
Comme pourrait l'être Renault. Moi j'ai... T'as quoi comme voiture une japonaise ? C'est une marque. Pas de pays rien. A la rigueur des affluents ou des... Vous avez le droit à... Mais pas... Le parfum. Qu'est-ce qu'elle aime comme parfum ? Oh tu te réveilles ? Allo ? Une. Ouais. Bah alors tu réponds pas aux questions que je... Oh tu te réveilles ou quoi là ? Ou je te réveille moi de tout à l'heure ? Donc en fin de compte elle aime les voitures et qu'est-ce qu'elle aime d'autres ? Elle aime un peu de tout. Les parfums.
Les vêtements. Ouais. Bon bah moi je serais avec toi. Mais tu disposes de combien d'argent déjà ? 200 balles. 200 balles. Donc déjà pour 200 balles je pense que tu peux lui offrir une bouteille de parfum. Une bouteille de parfum ? Je pense que c'est déjà bien quand tu... Une bouteille c'est grand. Comment ? C'est beaucoup une bouteille. Non mais attends tu trouves du parfum à moins de 200 balles. Arrête tes conneries toi. Comment tu vas faire ? Tu peux avoir du parfum pour moins cher. C'est sûr. Maintenant si tu veux lui offrir un bouquet de fleurs je pense que tu peux aussi.
Poignée avec la bouteille de parfum. D'accord. Donc voilà mais tout dépend de ce qu'elle aime aussi. Elle aime les parfums exotiques. Les parfums exotiques. C'est-à-dire ? C'est quoi ? Quel parfum exotique ? Je ne saurais pas te dire précisément mais... Attends parce que du parfum exotique il y en a plusieurs. Alors précise. Avec la noix de coco ? Avec la noix de coco tout ça non ? Non mais attends. Laisse le préciser lui.
Alors avec la noix de coco ? Ouais vas-y. Parce qu'on vient de te le dire. Vas-y. Non avec la noix de coco, ananas... Ouais c'est ça. T'as déjà vu du parfum à l'ananas toi ? Ah si si si. Il y a même du parfum à la pêche aussi. Non mais attends. Du parfum à l'ananas t'en as déjà vu toi ? Oui j'en ai déjà vu. T'as vu jouer ça dans Spirou Magazine ? Non pas dans Spirou Magazine. Non mais dans Tintin Milou. Non non plus non. Non mais dans Hercule. Non plus. Hercule et Pif. Non mais donc voilà tu peux lui offrir une bouteille de parfum accompagnée d'un bouquet de fleurs.
Et puis ça... Non le mieux. Moi le mieux à ce que je te propose. Ouais. C'est d'y offrir un bouquet de fleurs. Ouais. Bah oui c'est ce que je viens de dire. Avec une petite carte. Et je mets quoi dans la carte ? Bah attends. Joyeux Noël et puis bonne fête et puis... Bah attends. Tu sais pas ce qu'on met sur une carte de bonne année toi. Broutille. Bah c'est pour ça que j'appelle. Comment ? C'est pour ça que j'appelle. Ah ouais. Non non mais attends. Tu nous demandes pour offrir un cadeau et tu nous demandes comment qu'on écrit une carte. Bah tu me dis de...
Prendre un bouquet de fleurs avec une carte. Tu écris. Tu paies une carte. Tu mets Joyeux Noël et bonne année et bonne santé. Voilà. 99. Hein ? Ouais. Accompagné des fleurs et puis du parfum. Ouais d'accord. D'accord ? Je trouve pas que c'est un peu commun comme cadeau Gérard de toujours offrir des fleurs ou du parfum. Ouais c'est classique. Bah tout dépend de ce qu'elle aime. Mais ouais mais de toute manière il nous dit pas ce qu'elle aime. A part les voitures. Mais attends. Est-ce qu'il a l'argent pour acheter une voiture ?
100 balles pour acheter une bagnole. Non mais il peut peut-être déjà acheter une maquette. Non ? Ou un truc. Bah non mais attends. Une maquette. Ouais une maquette. Elle fait collection des voitures. Ouais ouais. Pourquoi pas. Ouais c'est ça. Ou alors moi ce que je te propose c'est que tu achètes une voiture pas trop chère. Tu vois. Une petite voiture miniature. T'achètes aussi une bouteille de parfum pour accompagner la voiture. Et en même temps tu lui offres des fleurs parce que c'est normal. Tu vas pas y aller. Donc voilà ce que je peux te répondre. J'espère qu'on a pu t'aider quand même un petit peu. Ouais un petit peu. Non mais moi...
Ouais je pense le mieux. Le mieux c'est que tu y alles avec... Si elle aime le parfum. Le plus grand cadeau que tu peux faire à une personne comme ça. Elle a quel âge ta maman déjà ? Elle a 45 ans. 45 ans. Donc le mieux c'est que tu y achètes une bouteille de parfum. Ouais. Et tu lui offres un bouquet de fleurs. Ouais d'accord mais j'ai un autre problème aussi. C'est que tout est fermé là. Ouais mais attends. Demain c'est ouvert. Demain c'est ouvert.
Demain c'est ouvert. D'accord. Y'a des grandes surfaces demain qui sont ouvertes. Le 25 t'es sûr ? Oui oui oui. Jusqu'à midi normalement. Jusqu'à midi ? Ouais. Et si elle se réveille avant ? De quoi ? Et si elle se réveille avant ? Mais alors ? Mais c'est à toi de te réveiller avant midi. Non mais d'accord. Non mais attends. Tu comprends ce qu'on te dit ou pas là ? Non mais crie pas. Non mais attends je crie pas. C'est bon c'est Noël. Pour l'instant on te demande quelque chose. Est-ce que tu seras réveillé avant midi ? Oui ou non ?
Ma mère imagine elle se réveille à 8h. Moi et toi tu te réveilles à 9h. Non mais t'inquiète pas. Tu fais comme on t'a dit. T'achètes un bouquet de fleurs. T'achètes ce qu'on t'a dit quoi. Avec la voiture. Si elle aime les voitures. Ou si elle préfère le parfum. T'achètes le parfum quoi. Ça dépend. C'est toi qui vois avec l'argent que t'as. D'accord. Mais vous êtes sûr que demain c'est ouvert ? Bah oui c'est ouvert demain. Mais moi je penserais plus pour acheter du parfum que d'acheter la voiture. Parce que la voiture c'est une voiture de collection. Mais le parfum tu peux le mettre tout le temps.
Dans la voiture. Tu vois l'huile de voiture. Et voilà quoi. Bah merci beaucoup. C'est tout ce que je peux te dire moi. Ok bon bah je suis pas avancé. Donc je te souhaite de bonnes fêtes. Et puis bah amuse-toi bien. Bon bah joyeux Noël quand même. D'accord merci. A toi aussi. Salut. Le second c'est quoi ? C'est qui ? Le second c'est Valérie. 35 ans de Paris. Bonjour. Bonsoir. Bonsoir. Je vous souhaite un joyeux Noël Gérard. Bah moi aussi.
Je te souhaite un joyeux Noël. Hein Christine ? Oui c'est Christine. Ouais c'est ça. Alors bonne nuit. Au revoir. Au revoir Christine. Au revoir. Au revoir. Mais elle a besoin d'un conseil. Elle a besoin d'un conseil. Ah non Christine ? Oui. Comment vas-tu ? C'est l'ex de Gérard. Ah ? Ça va ? Ça va bien ? Oui. Non mais t'inquiète pas. Gérard c'est Noël. Fais le gentleman. Il pourrait être une meuf. Bon j'étais mauve avec lui quand même. Il soit poli un peu. Non mais t'inquiète pas. Ça va s'arranger. Bah oui.
Faut rester cool quoi. Bah oui. Moi c'est vrai que des fois je suis un peu... Dès que je suis là je me dis oh mince. Mais bon. Faut pas crisper quoi. On n'est pas des gamins pour se disputer. Bah ouais c'est vrai. C'est vrai t'as raison. Je suis d'accord avec toi. Bah oui genre. De ça qu'on fait le gamin. On n'est pas des gosses. Faut rester zen quoi. Bah oui. Bravo Sandy. Ouais Sandy. T'as profité de ta vie un peu. Bah alors vas-y Christine. Donc à part ça qu'est-ce que t'as à dire ? Moi bah j'ai dit c'est joyeux Noël et puis c'est tout. Bah c'est gentil ça. Voilà. T'as besoin d'un conseil non ?
Vous êtes heureux tous les deux que ça marche très bien pour vous deux. Bah je t'en remercie. Moi je te dis de même que la vie soit belle pour toi et puis que bah si t'as des enfants ou pas je sais pas bah que tu sois heureuse quoi. Je peux pas en avoir. Donc je sais pas t'as pas de conseil à demander ou... Non rien. Bah c'est cool Christine. Non mais c'est gentil d'avoir téléphoné et puis... Bon bah c'est gentil Christine on te souhaite un joyeux Noël. Bon réveillon l'amoureux. Ouais. D'accord merci. Je t'en remercie beaucoup. Ouais je vais faire le réveillon avec Sandy demain.
C'est cool. Bon Sandy tu dois avoir une autre fiche là. Tu vas être à Yanis. Ouais attends je vais... Parce que Gérard est parti on sait pas où il est il va certainement revenir. Attends ça c'est... Ah non c'est pas fait ça. Conseil GG Sandy a un problème pour faire la cuisine. Voilà Yanis. Si si. Donc on va accueillir Yanis 18 ans de Limoges. Salut. Allo ? Allo ? Salut Yanis. Salut joyeux Noël. Oui toi aussi. Bon je vais te parler j'ai vraiment des gros problèmes pour faire la cuisine. J'arrive réellement pas. Mes parents sont pas venus ce soir pour Noël. J'en prends marée de médecine alors je travaille.
J'essaie de faire la cuisine pour manger un peu. J'ai fait des pâtes et tout a brûlé. C'est tout cramé à l'intérieur. Je sais pas comment il faut faire. Mais comment t'as fait pour faire cuire les pâtes et que ce soit brûlé comme ça ? J'ai pris une casserole. J'ai pris de l'eau. J'ai mis les pâtes dessus et je sais pas j'ai laissé. Une demi-heure et puis après pouf. Une demi-heure t'as mis les pâtes ? Bah ouais faut que ce soit bien chaud. Non non attends attends. Attends attends attends. Déjà les pâtes tu les fais pas cuire une demi-heure. Tu les fais cuire maximum.
10 minutes à 15 heures. 10 minutes. Ça va être froid après. Non non non. Après tu peux les faire réchauffer. Tu vois si t'as un micro-ondes tu peux les faire réchauffer. J'ai pas de micro-ondes. J'ai juste une petite plaque. Et t'as pas un petit four où tu pourrais faire tu vois des plats cuisiniers genre surgelés les trucs comme ça ? Non non j'ai juste une plaque chauffante. J'ai une chambre d'étudiants donc j'ai juste une petite plaque. Et qu'est-ce que t'aimes exactement comme nourriture ? Tu dois avoir une préférence. Je sais pas moi. Si t'aimes je sais pas soit les surgelés soit les boîtes de conserve je sais pas. J'aime bien les raviolis. Ah t'aimes bien les raviolis.
Les raviolis c'est pas dur à faire chauffer. Tu prends une casserole et puis bon c'est bon. Comment on fait des raviolis Sandy ou Gérard ? Je sais pas vous pouvez nous dire. Non mais attends. Une boîte. Tu ouvres la boîte. Ouais. Tu la mets dans une casserole. Sans te couper les doigts. Ouais. Sans te couper les doigts. Pas faire comme Sandy. Tu mets la boîte dans la casserole où tu vis. Non non mais pas faire comme Sandy pour un avocat prendre son doigt pour un avocat. On parle des raviolis Gérard. L'avocat c'est pas une boîte de conserve. Donc pour ces raviolis le mieux c'est de faire une chose. C'est couper ta boîte.
Non mais attends. C'est des plaques sur pente ? Bah ouais. Ah c'est plaques électriques. Ouais. Alors sur plaques électriques tu les mets à... 10 ? Non ? Non non non pas à 10 parce que c'est trop. À 3 peut-être ? Trop. 3-4 ? 3-4 ? Ouais je pense. Ouais. Et tu fais attention que ça crame pas. Tu surveilles et tu touilles de temps en temps pour voir si ça crame pas dans la casserole. Est-ce qu'il faut mettre de l'eau avec les raviolis dans la casserole ou pas ? Non non parce qu'il y a de la sauce déjà.
Il y a de la sauce. Ou du beurre pour pas que ça attache. Si si si. Il faut mettre quoi Gérard ? Attends attends attends. Attends Sandy Gérard c'est mieux que toi. Non non attends attends. Une fois que t'as retiré tes raviolis de la boîte. Ouais. Il te reste un peu de sauce dedans. De quoi ? De la sauce ? Ouais de la sauce. De quoi comme sauce ? De la sauce tomate abrutie ! Bah ouais mais j'en ai pas de sauce tomate moi. Non mais ils sont déjà dans les raviolis. Oh mais c'est pas possible ! Tu comprends ce qu'on veut dire ?
Bah ouais bah ouais. Dès que t'as les raviolis on t'ouvre la boîte. Attends Gérard excuse-moi. C'est Max. Il y a des fois les gens ne comprennent pas toujours. Moi je comprends pas tout lui je te le dis. Attends comment que tu fais une omelette toi ? Bah avec des oeufs. Et tu mets quoi dans ta poêle ? Je mets ce qu'il y a dans la coquille c'est-à-dire l'oeuf et la sauce. Le blanc. Et comment que tu les fais cuire tes oeufs ? Bah je fais chauffer. Ouais avec quoi ? Bah avec du gaz. Ouais et tu mets quoi pour que ça chauffe ?
Bah il peut mettre des lardons. Bah j'en sais rien du beurre ou du beurre. La crème fraîche. La crème fraîche ? Non la crème fraîche c'est quand tu veux faire des champignons à la crème fraîche. Mais moi des fois je mets un peu d'herbe de Provence avant. Pour bien que ça saisisse l'affaire. N'importe quoi toi. Donc on revient aux raviolis donc Gérard les raviolis. Bon les raviolis. Donc pour en finir avec tes raviolis là. Ouais. Donc tu mets un peu d'eau dans ta boîte. Pas beaucoup. Non dans la casserole. Dans la boîte ? Non dans la boîte pour bien retirer. Ah pour diluer. Ah ok. Pour diluer ce qui reste.
Tu mets pas beaucoup. Tu prends une cuillère à boire pour tourner de temps en temps. Tu surveilles. Rigaud oui une question internet. Ouais Gérard il y a Steph sur l'IRC qui te demande si tu l'invites à bouffer demain parce qu'il aime bien tes conseils cuisine. Non. Pourquoi ? Non j'invite personne à bouffer chez moi demain. Pourquoi ? Hein ? Non le 31 ils sont tous invités. Ah ouais ouais j'ai vu l'affiche ouais. Vous êtes tous invités le 31. Le 31 ils sont tous ceux qui vont venir vont être aux flics. Donc ? Nuance.
Ouais bah pour les raviolis Gérard. Ouais ouais. Non mais tu ferais une parenthèse d'ailleurs pour en parler tout à l'heure et en montrant. Ouais. Elle est où l'affiche ? L'affiche est là et en plus il faut qu'on parle du courrier parce que t'as reçu du courrier pour Noël en plus. Ah ouais si c'est des conneries ça sert à rien. Non non non. Non c'est des bons cadeaux. Donc ton histoire de raviolis. J'en mets combien ? Un demi litre ? Mais non tu t'en mets un petit peu. Un petit peu. Un verre ? Ouais tu mets un verre dans ta boîte tu secoues et tu remues le restant de la sauce tomate. Ok.
Et tu le mets dans ta casserole ? Il y a des raviolis dans la casserole normalement. Oh là là. Ouais. Mais non les raviolis tu les mets dans la casserole donc si tu les mets pas ils peuvent pas y être. Bah ouais. Donc c'est logique. Ok ok ouais. Ouais. Et qu'est-ce que t'aimes d'autre à part les raviolis ? Bah les pâtes j'aime bien mais bon ça cramait tout à l'heure j'en ai plus là. Donc les pâtes bon c'est des spaghettis ? Non non c'est des petites coquillettes là. Bah les coquillettes tu les fais chauffer à je sais pas 5-10 minutes et ce que tu peux faire
de l'huile avec du sel. Ah ok. Et tu remues de temps en temps pour pas que ça colle. Ah ok. Et si tu veux me faire des nouilles à la sauce tomate tu mets de la sauce tomate dedans mais après tu les égouttes. Ouais mais la sauce tomate c'est des trucs en briques ou les... Bah ce que tu veux. Oh tu peux avoir ce que tu veux des petites boîtes ou des grandes boîtes ça dépend. Ouais. Enfin voilà Yanis. Ça y est t'es renseigné au moins tu peux faire quelque chose de main de potable. Ok. Comme dirait Gérard ok ? Ok. Bah bonne soirée à toi. Merci. Ouais bonne soirée. Gérard le suivant ?
Bonsoir. Allo. Allo. Allo. Y'a quelqu'un ? Ah bah elle est partie. Y'a quelqu'un dans la secoupe ? Bah c'est pas grave c'est pas grave. Bon. Elle est manouillée. Je sais pas. C'est pas grave. C'est pas grave. On va accueillir Thomas 25 ans. Ouais. 25 ans de Nice. Ouais salut à tous. Bonsoir. Bonsoir à toi. Salut Sandy. Salut. Oui salut. Bah bon joyeux Noël quand même. Merci. Ouais j'espère que vous avez passé un bon réveillon. Bah tu vois là on y est. On est en plein dedans.
Ok. Bah écoute moi je t'appelle justement c'est un peu à cause de ça parce qu'en fait j'ai bien fait la teuf et j'ai un petit peu trop mangé j'ai un petit peu trop bu et j'ai peur demain d'être un petit peu malade et d'avoir un petit peu la gueule de bois donc on m'a dit que t'étais calé sur le sujet donc j'aurais voulu savoir si t'avais des petits trucs pour éviter si tu veux d'avoir la gueule de bois ou la chiasse. D'accord. Alors ce que je te conseille pour pas avoir pour pas avoir envie de... Pas manger de chocolat d'abord. Est-ce que t'as mangé du chocolat ?
Ouais ouais il y avait de la bûche au chocolat en dessert. Non mais ça c'est pas ça qui va te... Attends attends Thomas. Oui oui oui. Pour l'instant le réveillon n'est pas terminé. Ah bah oui mais moi j'étais fini de manger là j'ai déjà mangé de la bûche. Mais qu'est-ce que t'as mangé exactement ? Alors en entrée il y avait des huîtres. Ouais. Après j'ai bouffé de la moule quand même un petit peu. Ouais. Après on a enchaîné foie gras saumon tu vois bien classique. Ouais. Ok. Après un bon petit rôti, fromage et puis la bûche. Bon ça va là c'est pas trop c'est pas un grand repas comme il y en a qui font.
Si tu veux moi j'ai un petit estomac quoi. Tout le monde n'a pas la chance d'arriver à digérer des quantités de nourriture faramineuse peut-être comme toi Sandy mais moi... Ah non non moi je te rassure tout de suite je mange pas beaucoup. Tu manges pas beaucoup ? Par rapport à ce que tout le monde peut croire... Menteuse ! Non elle mange pas beaucoup. Menteuse ! Menteuse ! Menteuse ! Menteuse ! Attends attends Thomas. Moi je démens ce qu'elle vient de dire. Ouais c'est vrai c'est dégueulasse ce que t'as dit. Elle a dit qu'elle mange pas beaucoup mais elle arrête pas de manger du chocolat du matin au soir. Donc c'est une menteuse. Non pas en ce moment.
Une menteuse ! Elle mange plus de boîte de pales d'affilée. Elle est peut-être enceinte Gérard si elle mange du chocolat non ? Bah oui. Attends ça c'est pour le jeu de la vérité d'accord ? Ah ouais merde. Ok. C'est vrai que si elle est enceinte tout de suite elle mange plus mais moi je suis pas enceinte et je te dis je mange pas beaucoup. Non mais moi de toute manière un conseil que je vais te donner pour pas avoir la gueule de bois si t'as bien bu si t'as bien arrosé le réveillon un conseil que je te donne c'est de boire un café salé. Un café salé ? Non mais ça c'est pour faire vomir ça le café salé. Ah oui mais justement.
J'ai pas envie de vomir justement j'ai pas envie d'être malade c'est ça le problème. Et bah alors dans ce cas là tu fais une chose tu bois un café sans sel. Ou sinon si t'es malade. Ah merde. Tu peux faire du vélo aussi si tu veux. Un café sans sel. Non Gégé le problème le problème c'est que là quand je vais aller Un café sans sucre excuse moi. Ok quand je vais aller me coucher avec ma copine déjà premièrement je pue de la gueule et deuxièmement j'ai pas envie de lui dégobiller dessus. Bon alors dans ce cas là tu fais une chose tu bois un café sans sucre et avant de faire l'amour avec ta copine t'essayes de
te laver... De te laver les dents quand même. De te laver les dents. Non pas la quéquette attends et oh. Bah si il peut hein. Je me lave pas la quéquette ? Attends si il veut faire la gueule il peut te laver la quéquette hein. Ah bah ouais. Bah attends mais attends. Non mais je suis d'accord avec toi. Mais de toute manière et oh. Ouais. Moi je vais te dire une chose. T'en dis est-ce que tu te laves la quéquette avant l'amour ? Moi d'abord je te rassure j'ai pas de quéquette. Ouais la chounette. Ouais la chounette bah ça dépend hein si j'ai pas envie je la lave pas hein. Ouais ça peut être souvent. Mais t'as vraiment envie non ? Mais ça ça dépend hein moi je prends une douche.
Deux fois par jour donc y'a pas de problème. Un jour. Non non pas par mois. Non pas par mois non. J'en connais tout à l'heure qui vont se prendre des baffes. Ouais Manu. Hein Fildar et Manu ? Voilà. Attends attends attends. Juste pour dire qu'il faudra quand même penser à... On plaisante on plaisante mais ça serait bien quand même qu'on fasse un tout petit point sur... Ouais un petit point courrier mais justement on va abréger. On va finir avec Thomas. C'est fini parce que je voyais parler entre vous. Ah non non non.
Bah lui il est là. Bah lui il est là. Je pense que pour toi Thomas la solution donc c'est déjà si t'as envie de faire l'amour là maintenant. Ouais. Donc... J'ai peur de vomir pendant l'amour. Surtout y'a un truc que je te conseille si tu me le permets c'est que bon dès que tu veux faire ça avec ta copine surtout tu te protèges. Oui non mais ça y'a pas de problème. Bon bah voilà ça y'est ça y'est ça y'est c'est bon. Le problème c'est le mal de mer. Je vais avoir le mal de mer c'est tout. Ouais non mais attends. Ou sinon tu prends un cachet d'aspirine si ça va pas. C'est bon c'est bon c'est bon.
Terminé apparemment il a assez de conseils ou pas ? Bah pas des masses. T'es conseillé ou pas Thomas ? Bah je trouve que c'est léger quand même au niveau du conseil. C'est normal. Je vais lui vomir dessus c'est tout. C'est comme ça que ça va finir. Non mais si t'as envie de vomir tu vas dans les cabinets et puis tu vomis c'est tout. Ouais ouais. Et puis une fois que t'as fini bon bah tu retournes la voir et puis gentiment. Voilà. Sans lui vomir dessus en principe. Attends tu vomis pas sur ta copine attends arrête de dire des bêtises là. Tu lui demandes avant. J'aimerais bien éviter. Ou sinon tu peux prendre des sacs et puis tu vomis dans un sac.
Et puis après tu mets ça dans le vide d'ordure. Voilà. Bah même tu prends un préservatif et tu vomis dans le préservatif et puis basta. Mais non attends. C'est cramé ça Gérard. Hop terminé. Bah merci Thomas. Terminé Thomas. Bon bah bonne chance à toi. Merci à toi. Au revoir. Bon alors Gérard. On pourrait. Ouais. On a reçu du courrier donc déjà du. On a reçu du pâté de foie. Non non. Non non non. Ça c'est pas fesse de babouin. Gourmet. Gourmet. Gourmet trois étoiles. Mousseline de soie. De sol. De sol.
De sol. Faudra que tu le goûtes quand même avant de partir. Non ça me paraît bizarre ça. Donc apparemment t'es abonné à Atlas. Voilà ça. Tu peux ouvrir. Non mais ouvre. Non non mais attends. Ça c'est. C'est pas grave. L'abonnement c'est 8000 francs par trimestre. Non non mais ça c'est. C'est le mec. Parce que les mecs qui t'ont abonné ils demandent l'argent apparemment à Atlas. Donc moi j'ai dit que c'était pas fun. Ça c'est le mec. C'est le mec qui s'amusait à m'envoyer les trucs de camion et qui me demande. Bah voilà. C'est bien ce que. D'accord. Voilà. C'est quoi t'as des étiquettes de camion là ? Et t'avais une lettre non ?
Ouais en fait on a reçu le colis tu vois. C'est rare. C'est Fès de Babouin qui t'a envoyé donc ce colis là. Le beau colis. Et donc en fait c'est pour Noël bien sûr. C'est pour toi. Et en fait dans ce paquet il y a un voyage. Destination au choix. Il y a des millionnaires. Des bancos. Un abonnement au journal France Soir. Un réveil. Un réveil fun radio. Unique. Des tickets à restaurant. Des écouteurs de Wackman. Un CD. Deux livres. Un stylo. Un déodorant. Un protège-dents. On va ouvrir tout ça. Un père Noël. Une carte magnétique. Ton cutter.
14 piles. Un ticket RATP SNCF. Une ampoule. Un calendrier Spirou. Un rouleau de scotch. Quelques brochures sur la Bretagne. Si tu as envie d'aller en Bretagne. Deux autocollants. Un paquet de mouchoirs. Un savon. Et une pomme de terre. Donc voilà. Donc j'espère qu'il y a le compte. Donc Gérard est en train de nous voir en direct. Donc attends. Ça fait beaucoup pour tenir dans une boîte. Non ça tient. Non c'est miniature. Calme Gérard. Alors. On récupère. Alors donc il y a les autocollants.
Des autocollants. J'ai effectivement l'ampoule. Voilà. L'ampoule est belle. Ah sympa. Ah c'est sympa ça. Elle est peut-être grillée. Mais bon. Le réveil fun radio. Ah ouais. Tiens. Ah il est classe. Là. Les tickets à restaurant. Les tickets à restaurant. Il ne reste plus beaucoup. Le CD. Le CD. Ah il est beau le réveil. C'était marqué un CD. 50 heures gratuites. De CD-ROM. Super pour internet. C'est pour avoir internet ça. Tu pourras demander à Régo.
Là. Le patrimoine religieux de la Bretagne. Donc pour voyager. Ouais. Ça c'est les brochures sur la Bretagne. Non mais attends. C'est pas de la religion. C'est bien. On va pouvoir lire. Voyage. Voyage. C'est des voyages. Voilà. Voyage gratuit. Je m'en fous. Il y a des millionnaires et des bancos aussi Max. T'as un calendrier. Ouais. Non mais attends. Toi. Quoi ? Toi. Attends. Attends. Un savon. Ah ouais. Il y a effectivement des Kleenex. Ouais. Qu'est-ce qu'il y a d'autre ? Regarde dans l'enveloppe. Il y a du scotch. Il y a un rouleau de scotch vide. Ça peut toujours servir.
Il y a une enveloppe aussi. Ah ouais. Normalement. Ouais. Du scotch vide. Sauf s'il y en a plus. Ah merde. Là il y a des écouteurs de Wackman. Ouais. Bon. En pièces détachées. Mais ils sont là. Ouais. Non mais c'est bien parce que le réveil. Il n'y a pas les aiguilles. Il n'y a pas d'aiguilles. Et puis à mon ami. Il est naze. C'est l'attention qui compte. Ouais. Il est naze. Attends. Je crois qu'il y a une enveloppe aussi. T'as pas une enveloppe dans la... Ah bah attends. Les Wackman ils sont à moitié cassés. Ça c'est le parfum. C'est le déodorant. Écoutez bien. Écoutez bien. Attendez.
Après l'Adidas. Après l'Antarctique. Gérard va se parfumer à quoi à votre avis ? Je sais pas. Au tsar. Tu veux voir ? Ah bah on est dans la merde. Oh non. Tiens je connaissais pas ce parfum. Attendez. Ah non non mais c'est bon. Tout à fait. Non mais non. Il n'y a rien dedans. La bouteille est vide. Non mais c'est pas mal. Non la bouteille est vide. Mais t'as plus qu'à la remplir. Le must du must. Un dentier. Un protège-dents. Un protège-dents. Un protège-dents. N'importe quoi.
C'est pas grave. Il y avait une enveloppe. Il y a une enveloppe non ? Pour Gérard c'est pas un protège-dents. C'est un protège-dents. Ouais mais attends. Toi l'enveloppe. Je me demande si tu l'as pas piqué comme t'as l'habitude de me faire. Hein Gérard ? Mais non c'est marqué une enveloppe avec des bancos et des millionnaires. Ouais le protège-dents. Ouais bah ça. Mais ça. Hop. La fausse dent en plus. Ah bah voilà. Ah les bancos et les millionnaires. Ouais mais attends. C'est quoi ? C'est quoi Gérard ? C'est quoi ? Je vois pas. C'est cool non ? C'est quoi ? Des bancos. Des bancos ? Ils ont déjà été grattés.
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0. Putain, il y en a plein en plus. T'as gagné ou pas ? Non mais regarde les touches Gérard, ça se trouve il y en a un gagnant dans le tas. Non, non, il n'y a aucun gagnant. Donc ça, ça va à la poubelle. 14 piles normalement. 1, 2, 3, 4, 5. C'est bien ça ! Ah ça c'est gentil. À mon avis elle fonctionne à mort.
Ouais c'est ça. Pour écouter Wakeman c'est bien. La pomme de terre. Ah c'est une pierre hindoue. C'est une noix de coco miniature. C'est exotique, c'est beau. Ça c'est une patate. Ça retourne là-dedans. Il y a un stylo aussi normalement. Et t'as aussi une brochure France 3. Non, non, ça c'est un abonnement à France Soir. C'est ça. Non, non, mais il va se faire foutre. Tu dois avoir aussi de la monnaie.
Voyage, RATP. C'est ça, c'est ça. Donc poubelle, c'est pas la peine. Regarde, t'arrives réduit. Mais non, non, non. Il y a bien marqué, vous pouvez gagner un abonnement à France Soir. C'est bien ça. Mais attends. Attends, c'est pas du bidon ce courrier. C'est pas bidon. C'est pour moi que... Il doit y avoir un stylo aussi Max, normalement. Et une carte magnétique. Il y a dit... Il y a dit Fning. C'est de la monnaie allemande.
Non, mais c'est bien parce que le bouchon, il est où ? C'est pas grave. Regarde s'il écrit. Il s'est peut-être perdu dans la boîte. Il écrit le stylo Gérard. Il y a un stylo. Et il y a de la monnaie allemande. Normalement. Voilà, la carte magnétique. C'est pas du bidon. Avec ça, tu peux passer partout. C'est ça. C'est surtout que tout est retiré.
Je sais pas, tu peux essayer dans les distributeurs. Il manque le magnétisme. Mais la carte magnétique est quand même là. Attends. Un petit savon. C'est quoi ça ? À la vendeur shop. Violent, là. Tiens, tiens, tiens. Un petit courrier quand même pour Gérard. Merci. Tu gardes quand même la carte ? Coubelle. Alors attention, qu'est-ce qu'il se dit ? Je suis un grand fan de tes débats.
Première, la façon que tu les mènes. Je les trouve très intéressants. Surtout quand ils sont collants à l'actualité. Comme aujourd'hui avec Miss France. J'aimerais avoir ta photo de toi. De tes préférés dédicacés. C'est sympa ça. C'est quoi ? C'est très sympa. Termine. Laisse-moi. T'aimer ? Ainsi.
Que toi et Sandy, en espérant une réponse... Attends, attends, attends. T'as peut-être oublié des mots. Je suis un grand fan de tes débats. Et j'admire la façon... La façon que tu les mènes. Dont tu les mènes. Je les trouve très intéressants. Surtout quand ils collent à l'actualité. Comme aujourd'hui avec Miss France. Ouais, d'accord. J'aurais aimé avoir des photos de toi.
De préférence dédicacés. Ainsi que de toi avec Sandy. C'est normal. En espérant une réponse positive. Positive, ouais. Il a oublié le F. Demande ton micro. Je te souhaite de joyeuses fêtes. Demande ton micro. C'est bon ? Ouais, c'est bon. T'inquiète pas. Il a oublié le F à positive. Sans fil d'art. Ah, je suis désolée fil d'art. Ah oui, t'es là. Excuse-moi. Merci. Hermine. Donc voilà. Hermine, bah... C'était bien ce que t'avais mis, mais t'avais oublié quelques mots. C'est la nageuse, la Muriel Hermine. Ouais, Muriel Hermine. C'est ça.
C'est Hermine Robin. Ah oui, oui. Tu peux mettre ça. Tu peux mettre tout ça. Même, tiens. Quoi encore ? Le parfum, il en reste. Ouais, garde-le, le parfum. On sait jamais pour demain. Pour le réveillon, là. Puis ça, bah ça, on goûtera pour voir si... Ouais, on goûtera si c'est... On essaiera de tester. On essaiera de savoir si c'est pas des trucs pour chien. Non, non, non. Attends, c'est pas pour chien, ça. Non, non, c'est pas pour chien, ça.
C'est ce qu'on a mangé dans le bureau tout à l'heure. Ouais, c'est la même boîte. Attends, j'arrive pas à lire ce qu'il y a marqué. C'est du Trois Étoiles, ça. Non, mais cherche pas à comprendre. Non, mais c'est écrit trop petit. C'est rien, c'est gourmet. Ouais, cherche pas à comprendre. Attends, toi, tu as commencé par... Attends, attends, dis tout de suite qu'elle est conne. Ah non, pas du tout. Non, non, non. Non, mais attends, dis qu'elle est conne, ça vaudra mieux, d'accord ? Non, c'est pas vrai. Ah non ? Attends, il y a marqué chat adulte. Ah, chat adulte, alors poubelle. Mais attends, j'ai pas commencé encore. Attends, je suis pas un chien. Je suis pas un chat.
Servir à température ambiante. Mais non, mais ça, c'est de la nourriture pour des gens qui ont des chats. C'est ça. Pourquoi tu moques ça ? Parce qu'ils croient que je suis un chat. Mais non, peut-être que t'as un chat. Peut-être que t'as des animaux. Ah, il y a du poisson quand même dedans. C'est bon pour la mémoire. Hop, poubelle. Attends, j'aurais quand même pu goûter. Bah ouais, merde, elle aurait pu goûter, Gérard. Attends, toi, tu vas me goûter ça, toi ? Qu'est-ce qu'on va accueillir ?
C'est Noël ? Qu'est-ce qu'on accueille ? Bonsoir, Olivier et monsieur Prodigy de La Loco. Ouais, bonsoir. Qu'est-ce qu'on fait, Gérard ? On fait un conseil, là, ou pas ? Non, bah, on va s'écouter un petit disque si tu me donnes le titre. C'est chasse. On parlera du courrier d'affiche. Ouais. Mais en dernier... Non. Pourquoi ? On parlera pas du courrier d'affiche. Non, non, non. Non, tout bas, tout bas. C'est chasse.
Chasse. C'est quoi ? Chasse. Encore une fois, tu sais, là. Encore une fois ? Ouais. Alors, vas-y. C'est parti. Et on se retrouve tout à l'heure pour la suite des conseils. Et même... Même, vous pouvez appeler maintenant. On va arrêter les conseils et on va prendre le jeu de la vérité. Donc, vous pouvez nous appeler au 0803 08 5000 et 0803 70 5000 et toujours lire. C'est W2E.fr Fun Radio.
A tout de suite. Et voilà, c'était Sass dans Inertis. Donc, vous pouvez toujours nous appeler au 0803 08 5000 et 0870 5000. Manu, vous attend au standard. Il est 0h35. Bon avion à tous ceux qui sont en pleine fête. En pleine bourre, ouais. En pleine bourre. Donc, ceux qui sont sur la route comme des chauffeurs de taxi, on va quand même les saluer. Ils sont à la bourre aussi, non ? Non, non, mais on va les saluer parce que
grâce à eux... Tu peux me rendre le carton pour le CD, c'est mieux. Ça le protège. Merci. Voilà. Donc, on salue tous les chauffeurs de taxi. S'il y en a qui veulent passer, nous dire un petit coucou, ils seront les bienvenus. Donc, il y a toujours Rigo qui vous attend sur l'Internet. W2E.fr Fun Radio. On est combien, Rigo, s'il te plaît ? Ça n'arrête pas de monter. On est 4347. Et tout à l'heure, j'ai écouté... Combien on était tout à l'heure ? 90 !
Mais comment c'est possible, Rigo, ça ? D'ailleurs, vous étiez 90 et là, maintenant, on est à 4300. Les fans de Gérard. Ça, c'est normal. Ça ne se calcule pas, ça. Alors... Plus de 6000. Ah ouais, mais ce soir, comme c'est Noël, et comme c'est la dernière ce soir pour des débats de l'année 98, donc je voudrais qu'on aille jusqu'à 6500 personnes sur l'Internet.
Rien que pour mettre les boules au chef. Comme ça, son patron, son boss, il va lui dire Oh, mais qu'est-ce qu'il fait ? Il ne nous fait rien sur l'Internet. 90 personnes tout à l'heure. J'ai écouté, j'étais là-haut. 90 ! Bon, attends, toi, t'es naze, tu peux te taire, toi. Oui, il est naze. Mais attends, toi aussi, t'es naze. Toi, tu ne bosses pas avant 11h30. Donc, qu'est-ce qu'on fait, là, Gérard ? Le jeu de la vérité ? Alors, on va faire le jeu de la vérité, mais j'aurais bien voulu que Sandy,
maille de truffion. Elle se vide. Bon, eh, eh, eh, eh, eh, eh, Fildar, vas-y, mets-moi la grosse. Allez, bouge de là. Tu veux que je la mette ? Allez, allez, allez. Je n'ai pas trop envie ce soir de la mettre. Ah si, allez, allez. Non, je n'ai pas trop envie de la mettre la grosse ce soir. Mais si, allez. On va la faire revenir plus vite qu'elle est sortie. Eh toi, la grosse, débouche, espèce de fainéante. Tu ne vois pas que les autres s'amusent là. Allez, débouche. Allez, débouche. Viens avec nous.
C'est ça la fête ! C'est ça la fête ! C'est ça la fête ! C'est ça la fête ! C'est ça la fête ! C'est fini la fête. Donc Gérard, on accueille le premier auditeur. On accueille Sylvain, 23 ans, de Calais. Oui, bonsoir, bonsoir. Bonsoir. Salut, bonne Pâques à tous. J'espère que t'as trouvé beaucoup d'œufs en chocolat dans le jardin, Gégé. C'est ça. Attends, bonne Pâques. Je vais te dire une chose, qu'on n'est qu'à Noël. Alors, je serais classe, tu vois. Je dirais joyeux Noël, bonne année et joyeuses Pâques. Attends, Sylvain, t'appelles d'où aussi ? Il appelle de Calais.
Tout à fait, c'est une petite ville de la Guadeloupe. Et il fête Pâques. Ah ouais, c'est ça. Calais à la Guadeloupe ? Oui, tout à fait, tout à fait. Non mais attends, tu prendrais pas les gens pour des cons, toi ? C'est pas plutôt au nord de la France, plutôt ? Non, non, non. Si, si, si. Pas du tout, c'est New Calais comme New York. Ouais, c'est ça. C'est un peu pareil. C'est ça. Alors vas-y, ta question. Alors, le jeu de la vérité, on va monter le niveau d'un cran. Ouais, vas-y. C'est une question un peu personnelle qui vous concerne tous les deux, donc c'est bien que Sandi soit revenu. Ouais, vas-y. Vous avez beaucoup parlé à la fin de l'année dernière que vous alliez vous marier.
Pourquoi vous étiez pas marié ? Et j'ai demandé un petit peu autour de moi, on m'a fourni quelques réponses. Alors il y en a qui disent que c'est parce que le maire de Surin ne voulait pas. Ouais. Et il y en a d'autres qui disent que c'est parce que Sandi, elle est bohémienne et donc il faudrait que tu te convertisses à la religion des manouches. Eh ben alors, dans ces cas-là, tu sais... Ah non, non, pas du tout. Non, non, attends, attends, Sandi. Non, attends, Gérard, je vais te rappeler le principe du jeu de la vérité. Non, non, attends. C'est pas dans ces cas-là que tu dégages le standard. C'est Joker. Ah mais t'en as pas... Joker. Non, non. Déjà, tu poses la question à qui ? A moi ou à Gérard ? A vous deux.
à Gégé parce que c'est quand même l'homme, donc c'est lui qui porte la jupe, donc c'est quand même à lui de répondre. Non, c'est moi qui porte la jupe. Dans ce cas-là, Joker. Joker, hop, terminé. Et bien voilà. Il n'y a pas besoin de Joker. Gérard, Sandy peut répondre. Moi, je peux répondre. Vas-y, Sandy. Donc, si on ne s'est pas marié, c'est tout simplement, ce n'est pas parce qu'on ne veut pas, c'est tout simplement parce qu'on manque d'argent. Et comme on manque d'argent, Gégé travaille, d'accord. Mais tu n'es pas bohémienne. Non, je ne suis pas bohémienne. Tu es quoi ? Je suis d'origine anglaise. Non, non, non.
Si, si, si, je suis d'origine anglaise. T'es sûr que t'es pas gitane ? Non, non, je suis pas gitane. D'abord, je me sens pas une gitane. T'es manouche, toi, t'es manouche, direct. Bon, allez, terminez pour toi. Gérard, qu'est-ce que tu disais ? Au revoir, au revoir, au revoir. Au revoir pour lui, terminé. Mais attends, j'ai même pas répondu. Elle a le droit de répondre, Gérard. C'est le jeu de la vérité. Non, non, mais attends. Moi, je vais te dire une chose. Pour l'instant, mon beau-père est emmerdé.
Soyez emmerdé, vu ce qu'elle vient de dire. Le jeu de la vérité, c'est le jeu de la vérité. Ça n'a rien à voir avec mon père. Pour l'instant, j'ai dit qu'on ne pouvait pas se marier. Et elle a dit qu'elle était d'origine anglaise. Et j'ai dit que j'étais pas bohémienne non plus. C'est le jeu de la vérité, elle a répondu. Ça ne sert à rien de t'énerver. C'est toi qui as pris ton joker, donc ça te fait un point en moins. Voilà, t'es tout naze. Ça te fait un point en moins, c'est tout. Horror, 21 ans de maniaque. Allô ? Oui, bonsoir.
Question pour vous deux. Je voulais savoir quel est le plus beau cadeau qu'on vous ait jamais fait. Alors, le plus beau cadeau qu'on nous a jamais offert, tu veux dire ? Ouais. Tu dis la vérité, Gérard. Donc, c'est une voiture. Une voiture ? Ouais. Qui c'est qui t'a offert une voiture ? Bah non, personne. Non, moi, ce que j'aimerais plutôt que quelque chose qu'on m'a jamais offert, c'est un voyage. Non, mais attendez, vous n'avez pas compris la question. La question d'Horror, c'est quel est le cadeau qu'on vous a... Enfin, quel est le plus beau cadeau qu'on vous a jamais fait ? C'est-à-dire, quel est le plus beau cadeau qu'on vous a fait ?
Tu vois ? Quel est le plus beau cadeau que vous avez eu ? Voilà. Ah, le plus beau cadeau qu'on a eu ? Voilà. Ouais. Moi, le cadeau que j'ai eu, le plus, c'est un ordinateur. Ouais ? Un ordinateur ? Ouais. Parce que c'est mon père qui me l'avait offert, parce qu'il m'avait dit, bon bah, écoute, si tu réussis ton CAP, je t'offre un ordinateur. À l'heure d'immidi, là. L'heure d'immidi, pour apprendre les couleurs. Et comme j'aime bien l'ordinateur, donc... Et pourquoi pas un vélo d'appartement, quand tu pensais à moi, avant que tu me connaisses ? Non, mais attends, un vélo d'appartement, c'est pour ceux qui vont mourir.
Attends, attends, attends, attends, attends. Attends, tu permets ? Quand je t'ai vu la première fois, tu m'as dit que tu pensais à moi avec ton vélo d'appartement. Non, non, non. C'est, c'est, c'est, c'est, c'est. Vas-y, vas-y. Sandy, il y a Olio sur l'IRC qui te demande si t'es branché sur Internet, parce qu'il a trouvé un site www.vientbrouterlecute sandy. Ah, non, non, pas du tout, je connais pas. C'est pas toi ? Moi, je l'ai vu aussi. Je suis pas branchée à Internet, et là... Ouais, tu veux même, toi ? Pour ? Pour...
Pour te les gratter ? Non, ça va. Donc, Gérard, le plus beau cadeau qu'on t'ait jamais fait, c'est quoi, toi ? Moi, le plus beau cadeau qu'on m'a jamais fait, ben, c'est de m'offrir une voiture. Putain, mais t'as pas compris la question. Quel est le plus beau cadeau qu'on t'a fait, alors ? Non. Qu'on t'ait jamais fait. Non, qu'on t'ait jamais fait. Pas qu'on t'a, qu'on t'ait jamais fait, c'est-à-dire être. Donc, tu l'as, le cadeau, tu l'as. Ben... Ça peut être tout ce que tu veux. Ben, de toute manière, le plus beau,
le plus beau cadeau que j'attendais, c'était de faire une émission de radio. Et là, maintenant, je l'ai. Ah, ouais, c'est un beau cadeau, ça. C'est ça, ouais. Grâce à... Grâce à... Grâce à... Grâce à Manu, je sais. Max. Max, le meilleur. Max. Max, mon chef. Grâce à lui, c'est grâce à lui si je fais de la radio. Parce que sinon, j'en aurais jamais fait. Et je rêvais toujours d'en faire. C'est pas... Attends. Vas-y, gratte-toi. Tu veux que je te gratte aussi, moi ? Tu faisais de la Cibi, quand même. Ouais, ouais. C'est un peu de la radio, la Cibi.
C'est pas pareil. Moi, par contre, ce que j'ai à dire, c'est que, bon, c'est vrai que je rêvais jamais de faire de la radio. Mais, enfin, en faisant de la radio, je prends plaisir à en faire. Et plus j'en fais, plus j'ai envie de continuer. Ouais, mais grâce à qui ? Grâce à Max. Le meilleur de... Il est là. Tu dis que la Cibi, c'est pas pareil que la radio. C'est quoi, vraiment, la différence ? Parce qu'on fera un débat sur les routiers. C'est quoi, la vraie différence entre la radio et la Cibi ? Ben... En fin de compte, si tu veux, la Cibi, c'est pas du tout pareil. Parce que sur la Cibi, t'as un QRZ.
Comme il y en a un qui m'a piqué mon QRZ. La radio, c'est différent. Parce que t'as Manu et Fildar, qui sont au standard, qui prennent des gens. Tu discutes avec les gens. Même sur la Cibi, tu peux discuter avec eux. Mais tu peux pas être avec Fildar et Manu, au standard. Moi, je peux faire son standard Cibi, si tu veux. Non, mais c'est pas pareil, la Cibi et le standard. Et tu peux pas avoir un QRZ en radio ? Non. Pourquoi ? Non, c'est pas possible. Et pourquoi ? Non, mais c'est pas possible.
C'est différent. Pourtant, les gens pensent que c'est la même chose. Non, non. C'est quoi, la grande différence entre les deux ? La grande différence, c'est qu'il faut se dire une chose dans sa tête. C'est qu'à la Cibi, t'as un mic, t'appuies dessus. Tandis que là, t'es devant un micro, tu peux l'éteindre. C'est plutôt un kintosh, ici. Tu peux l'éteindre comme tu veux, ton micro. En Cibi, t'as des mics, et en radio, t'as des kintosh. T'appuies sur le bouton, là. Hop. Voilà. Et tu laisses tout le monde.
Je peux te demander un truc ? Chaque animateur radio a un QRZ ? Parce que, regarde, Max, c'est pas son vrai prénom. Donc Max, c'est son QRZ. Mais on le sait. Mais pourquoi, moi, on me dit GG ? Moi, j'aurais bien voulu trouver un autre nom pour passer à la radio. Un QRZ, c'est un prénom qui passe bien en radio. Gérard, ça passe en radio. Gérard, sur Fun Radio, ça fait pas pareil que Franck sur Fun Radio. Ouais, mais ça... C'est pas de ta faute si t'as un prénom. Dévoile pas trop ton identité, toi. Ta cutie. Dévoile pas trop ta cutie.
C'est pour ça que j'éteins la lumière du studio, pour pas qu'on regarde de mon visage. Voilà. Bien vu, Max. Et donc, c'est bon, Aurore ? Ouais. Ouais, donc c'était ça, ton plus beau cadeau ? Voilà. Ouais, ok. Alors... Donc voilà, j'espère qu'on a répondu à tes questions. Et puis, on te souhaite de bonnes fêtes, de la part de moi et Gérard. Ouais, ben moi aussi. Et puis, un joyeux nouvel an, quoi. Ben, passe une bonne année. Pense pas trop sur l'alcool, quand même. Passe une bonne fête de fin d'année 98. Ouais, ben toi aussi.
Ben, on va essayer. On va essayer, c'est pas évident. Ciao, Aurore. Ouais, allez. Allez, à bientôt. Allez, salut. David, 19 ans, de Nantes. Oui, bonsoir. Bonsoir. Bonjour, Sandy. Bonsoir. Alors, ma question, c'est... Je voudrais savoir, en fait, quel a été ton plus beau souvenir de routier, Gérard ? Alors, mon plus beau souvenir de routier, ben... C'est de faire de la route. C'est-à-dire ? C'est-à-dire, ben... Là, tu vois...
C'est bête, parce que j'aurais préféré qu'on te garde pour ce débat. Ah, mais t'as jamais eu, je veux dire, de problème ? Jamais ? Non. T'as toujours bien vaché ? Jamais de dérapage, ni rien ? Ah, ben, si. Ça va faire 4 ans que j'ai eu ça, hein. Ah, d'accord. OK. OK. Et c'est tout ? Ben, oui. Et sinon, j'ai entendu Sandy qui parlait d'un voyage, tout à l'heure. Eh ben, moi, je suis prêt à lui offrir un voyage au fin fond de mon lit. Qu'est-ce que ça l'attend ?
Attends, Gérard, Gérard. La question, ça ne reste à Sandy, pas à Gérard. Mais c'est un voyage, pour combien de temps ? Ben, ça ne reste pas dur, avant longtemps, je te le dis direct. Tiens, à mon avis, l'auditeur, il fait ça rapide. Pour une journée, ou pour deux jours, ou pour une semaine ? Ah, non, non, non. C'est un précoce, l'auditeur. 5 minutes, 5 minutes, 5 minutes. Oh, ben, 5 minutes, ça ne m'intéresse pas. Non. Rigo, on est combien sur l'Internet, s'il te plaît, avant qu'on accueille Bertrand ? On est 4367,4, ce qui n'est pas mal. Ça monte, ça monte, ça monte.
Allez-y, je veux 6000 personnes avant la fin. Et même Sandy vous dit, allez-y, foncez, allez sur l'Internet. Faites comme le Téléthon, donnez vos dons, donnez vos dons. Soyez généreux. Voilà. On accueille Bertrand. On peut peut-être déjà dire au revoir, quand même, à l'auditeur qui était avec nous. David, on te souhaite de bonnes fêtes de fin d'année. A toi aussi. A la prochaine, ciao. Salut. Alors, Bertrand, 25 ans de Lyon. Oui, bonsoir, bonsoir à tous, bonsoir l'équipe.
Salut Gégé, salut Sandy. Bonsoir. Salut. Avant toute chose, je voulais vous souhaiter une bonne Saint-Valentin. Merci. Non, ce n'est pas la Saint-Valentin. Non, mais à l'Avance. À l'Avance, oui, c'est bientôt. Qui vous a rappelé. À l'Avance. Moi, en échange, je te souhaite de bonnes fêtes de fin d'année. C'est gentil, je te remercie. Moi, je voulais vous poser une question qui concerne votre avenir. Je voulais savoir si vous aviez l'intention d'avoir une grande famille et donc d'avoir des enfants très prochainement dans l'avenir futur. Non, attends, je ne veux pas prendre le choker. Ah ben non.
Je voulais juste savoir si vous allez avoir des miens. Qu'est-ce qu'il se passe ? Non, il y a eu un problème avec Manu. Non, non, non, ce n'est pas Manu, c'est toi. Ah, pardon. Non, non, ce n'est pas Fildar. Donc la question, Sandy. Sandy, la réponse. C'était quoi déjà ta question ? C'est pour quand les gamins ? Voilà, les miens. Une grande famille. Les tiens ? Non, les tiens. Non, les vôtres. Ah, les nôtres. Les nôtres. Oui, ben, les enfants, tu vois, ça se fait à deux. Ouais. Donc, je pense que l'enfant, il viendra quand il viendra. Pour l'instant, on essaye le tout pour le tout, mais bon.
Vous essayez en ce moment d'avoir un enfant ? Ouais. Non, mais ça, ça ne te regarde pas, toi. Non, mais c'est le jeu de la vérité, Gérard. Je te pose une question. En fait, il faut dire la vérité dans le jeu de la vérité. C'est normal. Moi, je vais te dire une chose. J'essaye le tout pour le tout. Ça ne vient pas. Ça ne vient pas, c'est tout. Et vous faites comment ? Vous faites comment pour essayer ? Qu'est-ce que tu appelles le tout pour le tout ? Moi, je reste zen. Je fais, tu vois, je reste cool. Bon, ben, si ça vient, ça vient. Si ça ne vient pas, ben, tant pis. Tu as une érection, Gérard, quand même ? Ça demande ou pas ? C'est vrai que cette question s'adresse à toi. Non, mais moi, je pose Joker.
Ben, tu n'en as plus. Tu l'as déjà posé. Non, il y a un Joker. Il n'y a pas trois Jokers. Non, il y en a trois Jokers. Ah, tu n'as pas d'érection en ce moment, mais c'est normal. Tu as laissé tous tes Jokers, déjà ? C'est pas de ta faute. Gérard, est-ce que Sandy ? Ben, non, moi, je pense qu'un enfant, ben, ça vient quand ça vient. C'est pas... Mais, ouais, moi, ce que je voulais savoir, si vous faites une portée, vous pouvez m'en garder un, petit chihuahua ? Ouais, c'est ça, Tony. Non, c'est pas Tony, Gérard. C'est pas la voix de Tony. Il ne faut pas confondre avec les chiens et puis les personnes humaines. Mais le vétérinaire, il en pense quoi ?
Ça peut marcher, un cachalot avec un sanglier ? Ça va le faire ? Qu'est-ce que tu entends parler par cachalot et je ne sais pas quoi ? Baleine et puis, ben, ouais, sanglier, quoi, c'est clair. Non, mais là, on ne parle pas des animaux. On parle juste de nous deux. Moi et Gérard, on n'est pas des animaux. On est des personnes humaines, tu vois, comme toi et moi. Moi, je pense qu'un enfant, ça vient quand ça vient, c'est tout. Maintenant, les animaux, ils font ce qu'ils veulent. S'ils ont envie d'avoir des petits, ben, ils font ce qu'ils veulent. Moi, ce que je dis, c'est qu'il faut peut-être chercher les causes de pourquoi le gamin, il n'a pas envie de venir. Est-ce que c'est une question d'hygiène ?
Cette non-envie de venir de la part du gamin ? Mais non, non, non, attends, attends, attends, Bertrand. Moi, je vais te dire une chose. Ça dépend de l'homme et la femme, d'accord ? Vous avez de quoi l'accueillir ? Ben oui, oui, oui, t'inquiète pas, t'inquiète pas. T'inquiète pas, il y a ce qu'il faut. Là-dedans, j'ai tout ce qu'il faut. Donc, si j'ai besoin de quelque chose, j'ai une roue de secours. Gérard, sur l'IRC, la plupart des gens comprennent parfaitement pourquoi l'enfant, il ne veut pas venir. Donc, s'il y en a qui...
qui pouvaient préciser sur l'IRC... Leur nom ? Non, mais qui nous disent à peu près ce qu'ils en pensent, eux. Ben, il y a le gérard masqué qui dit que t'as des couilles au cul, mais je vois pas le rapport. Non, mais ça, ça n'a rien à voir. Ça aide pas pour la reproduction. Comment ? Je dis que ça aide pas pour la reproduction d'avoir des couilles au cul. Non, mais tu sais, il y a bien des singes en voie de... De disparition. De disparition, donc ça fait comme des enfants. Ouais, c'est clair. Ouais, parce qu'il y a des enfants qui sont...
Ouais, ben écoute, merci du conseil. Ben, de rien. En conclusion, je voulais dire, vive l'avortement. Ben, ouais, ben... Moi, je vais te dire une chose. Là, je suis contre. Alors là, je vais te dire une chose. C'est terminé pour toi. Au revoir. Allez, salut. Non, non, attends. Pourquoi t'es contre, Gérard, l'avortement ? C'est le jeu de la vérité. Tu réponds, laisse-le parler. C'est vrai que moi aussi, je suis contre. Pourquoi vous êtes contre ? Moi, je suis pas d'accord parce que si tu veux un enfant, dans ce cas-là, c'est la personne qui le veut.
On s'amuse pas à se faire avorter. Mais c'est pas qu'une personne qu'ils veulent. C'est les deux personnes. C'est les deux personnes. C'est le couple. Ils sont à deux pour le faire. Donc, si on se fait avorter dans ces cas-là, moi, je suis pas d'accord. On tue un être humain. Donc, il est hors de question qu'on tue un être humain là-dessus. Voilà, on prend ses précautions avant. Il faut se protéger. Il y a des moyens pour se protéger. Il y a le préservatif et la pilule. Donc, c'est pour ça que je vais pas m'éterniser là-dessus. Voilà. Donc, Fildar, on s'écoute.
T'as sur l'IRC qui dit que si vous y arrivez pas, c'est qu'il y a incompatibilité gégétique. Ça, ça dépend parce que ça peut être très bien aussi... Ça peut provenir aussi bien de moi que de Sandy. Ah, OK. Mais moi, de toute façon, je suis bien placée sur la question parce que comme j'ai déjà eu un enfant, donc je sais ce que c'est. Et moi, je sais que je peux en avoir. Donc, voilà. Donc, on s'écoute. On s'écoute le TGV avec Va plus vite, il faut que j'arrive à l'heure.
Et on se retrouve tout de suite après pour le dernier... Le dernier... Auditeur. Le dernier auditeur pour le droit de réponse. Vous pouvez nous appeler au 0800 308 5000 0800 75 000 et toujours l'IRC www.rfr.radio pour les débats qui vont porter sur les routiers. Après... À tout de suite ! Et joyeux Noël à tous !
Et voilà, vous venez d'écouter... Le TGV va plus vite parce que je risque d'arriver en retard. Voilà. Donc, vous êtes au 0800 308 5000 et 0800 75 000 et toujours Manu qui vous attend en standard. Donc, W... Et puis, Rigaud qui vous attend sur l'Internet www.fr.radio. Tout à fait. Et on est combien, Rigaud, s'il te plaît, là, maintenant ? On est à peu près comme tout à l'heure. On est 4424,8. Oh, non, mais attends ! Il est minuit.
Il est 0h56. Ils sont encore à table, là. Faut les laisser le temps. Bah ouais, mais... J'ouvre une parenthèse simplement pour dire, puisque tu salues les gens de l'Internet, pour saluer les gens qui viennent nous voir. Bah oui, mais je sais... Qui viennent de partout. Il y a un routier qui est passé à l'instant. Bah oui, je l'ai vu. Et il y a encore des gens qui viennent devant la radio pour visiter les locaux. Il y a pas mal de personnes qui viennent. Et là, vous n'allez pas... Le macro qui est venu, là, spécialement, ils vont aller aux putes, mais ils sont venus de dire bonsoir. Il est de Cannes. C'est un mec, un ancien dealer.
Deux auditrices. Oh, la vache, elle lui fait la bise. Oh, la vache, t'as pas peur. Sandy. La belle Sandy. Il y a le bulldog mystère, là-bas. Le top modèle. Je t'en prie, Gérard. Bah, attends... À la tienne. Salut. Je t'en prie. Oh, bah quoi ? Ah, trop fort. Et alors ? Encore, vous avez pas vu. Moi, je suis là. Oh, la vache. Mais attends, c'est ce que je veux. T'es à moi, maintenant. Ouais, mais tu me fais mal aussi. Tu tapes trop fort.
Pas trop fort. Il y a une personne. Heureusement qu'elle est là. Elle est forte. Il y a une personne qui va... Bah, j'ai la pêche. Ah, la patate, hein. Voilà. Sans déconner. J'aimerais bien avoir la banane, aussi. T'as pas la banane ? C'est une patate. Non, non, j'ai pas la banane. C'est toi qui as la banane. Ah, la banane du curé. Merde. Elle est où ? Tu sais où ? Entre mes jambes ? Bah, voilà. Elle est trouvée. On y va, on y va. Allez. Il y a une personne qui va vous parler. C'est un de tes copains qui est venu ce soir ? Ouais, mais ça, tu sais très bien qui c'est.
C'est qui ? C'est le seul. C'est le seul qui a voulu venir pour fêter Noël avec nous. C'est le seul. Parmi tous les auditeurs. L'invité mystère, vas-y. Bonsoir. Ah. Et là, tout le monde l'a reconnu, bien sûr, c'est... Bonsoir. Alain Le Beig. Voilà. Bienvenue, Alain. C'est le seul. C'est le seul qui est venu parmi tous les habituels. C'est le seul qui pouvait, donc. Voilà. C'est tout ce qu'on pouvait dire, quoi. Vas-y, Alain.
N'aie pas peur. Arrête, arrête. Bonsoir. Donc, on va accueillir... Le dernier. C'est qui ? Alain. Alain, tu restes zen. Ouais, ouais, il reste zen, Alain. Bon, ouais. Tranquille, hein. Ouais, tranquille. Tranquille. Tranquille, hein. Enfin, ça me fait plaisir que tu sois y venu. Ça fait plaisir à Max. Et que tu sois resté, surtout.
On est que les trois à être là. Bah oui, mais... Hé, hé, Gégé. Mais non, mais non, mais Max, c'est pas pareil. Lui, c'est le chef. Mais non, mais lui, c'est le chef. Parmi tous ces habituels. Gérard. On est que les trois. Gérard. Oui. Tu dis qu'on est tous les trois, d'accord, mais il y a quand même Max, il y a quand même Manu, il y a quand même tout le monde. Mais non, mais... Et il y a tous ceux qui sont derrière le poste de radio, aussi. Ouais, mais il y a tous ceux qui nous écoutent, il y a tous ceux qui viennent nous faire un petit coucou. Ça, on les remercie. Oui, on vous remercie, là.
Donc... Du fond du cœur. Donc, venez. Venez encore nombreux, si vous voulez, jusqu'à 4h du matin, de toute manière. On va tenir jusqu'à 4h. Surtout sur Internet. Et l'Internet, Rigo, s'il te plaît. Oui, c'est moi. Ouais, donc, combien ? Pour bouger ? Si, si, ça n'arrête pas de monter. Là, on est à 4524 moins 2. Ça va, ça booste. Bon, bah, ça va. Donc, Rigo... Oui, c'est moi. Non, c'est Manu. Non, non, excuse-moi. Manu, c'est qui ? C'est Audrey, tu l'as devant toi. Audrey.
Bonsoir. Audrey, 19 ans de New York. Bonsoir, Audrey. Bonsoir, Gérard. Bonsoir, Sandy. Bonsoir, Alain. Bonsoir. Bonsoir. Alors, moi, c'est une question. Je voulais savoir si vous étiez déjà fait cocu. C'est-à-dire si Gérard avait fait cocu Sandy et Sandy avait fait cocu Gérard. C'est une très bonne question. C'est ce que j'allais dire. Bah, écoute, moi, non. Je pense pas que, tu vois, quand tu es dans un couple, ça se fait pas... Si t'es avec quelqu'un, c'est pas normal si tu vas voir ailleurs ou alors si t'aimes pas vraiment la personne.
Ouais, mais ça peut arriver des fois comme ça. Oui, c'est vrai que ça peut arriver. Tu peux flasher pour quelqu'un, mais pas forcément pour aller coucher tout de suite avec elle. Oh bah, pourquoi pas ? Sauf si la personne n'est pas visible. Non, je te demande. Moi, je vais te dire une chose, tu vois. Je suis fidèle à Sandy. Ça va faire un an qu'on est ensemble. Eh ouais, déjà. Ça va faire un an que je la supporte. Eh moi, je te supporte aussi. Gérard, est-ce que t'as déjà trompé Sandy avec elle ? Non. Jamais ? Non. Et moi, jamais non plus.
J'irai pas voir ailleurs. J'irai pas voir ailleurs parce que je l'aime de trop. Même pas si t'as un super canon. Non, non, non. Gérard, il y a Anonyme sur l'IRC qui dit que tu mens. Non, c'est faux. Elle se rappelle de toi. Qui ? Je la connais pas. Anonyme. Je la connais pas. Elle veut pas dire son nom. Elle veut pas dire son nom, elle est Anonyme. Moi, je te connais pas, Anonyme, sur l'IRC. Donc, voilà. Donc, Anonyme, si tu pouvais préciser, comme ça, je pourrais avoir des renseignements, quoi. Ok. Non, parce que Gérard,
moi, je me rappelle tous les deux... De quoi, de quoi, de quoi, de quoi, de quoi ? Bah, toi et moi. Ah bon ? Quand ? Quand, quand, quand, quand ? Bah, c'était le mois dernier. Ah, le mois dernier, ça m'étonnerait parce que j'étais encore avec Sandy. Ah bah, ça n'empêche, hein. Non, non, non, non, non. Là, tu dis des mensonges. Tu peux préciser le jour... Précise, précise, précise. Précise. Je précise, je précise. Précise le jour, la date et l'heure. Et où, comment ? Le jour, la date et l'heure, bah, c'était le 27.
Il était... Le 27 de quel mois ? Bah, du mois dernier. Donc, on est... Le mois de novembre. Le 27 novembre, vas-y. L'heure ? Il devait être une heure ou deux du matin, je ne sais plus. Pardon, pardon, pardon, pardon. Je me suis trompé de bouton. Et Gérard, en attendant, il y a Anonyme sur l'IRC qui dit que c'était le 18 06 98 nu dans sa piscine. Non, c'est faux. Donc, je ne la connais pas. Elle a des photos. Elle m'a dit qu'elle allait les afficher dans Suren. Ah bah, c'est bien.
Et puis en plus, c'était très bien. Ouais. Ouais, ouais, ouais. Non, non, moi je pense pas. Non, non, t'es une menteuse. Tu vois, moi j'ai confiance en Gérard et je pense pas qu'il me ferait une chose pareille. Là, tu mens. Et si par exemple, un jour, Gérard, tu vois, je sais pas, ça peut arriver, tu vois, il te trompe, est-ce que tu lui pardonnerais ou pas ? Non, je crois pas. Qu'est-ce que tu ferais ? Moi, je pardonne pas, moi. Tu te barres. Tu te casses, tu le laisses. Ouais, je prends mes affaires et je m'en vais, quoi. D'accord, bah fais gaffe à toi, Gérard. Moi, je suis comme ça. Non, mais t'as raison, c'est normal.
Alors, elle dit, là, devant des millions d'auditeurs, mais en fin de compte... Ah non, mais je te jure, je pardonne pas. Mais non, mais attends. J'ai même pas pris mon joker, alors tu vois. Et alors, t'as pas besoin de joker, tu réponds à toutes les questions. Bah oui, donc toi, t'as pris tes trois jokers et puis moi, j'ai pas pris mes jokers, donc... J'ai répondu à toutes les questions. Bah alors, tu prends tes clics et tes claques et tu te casses. Bon, bah c'est sympa, alors. Voilà, c'est tout. Bah alors, toi, c'est pareil. Tu prends tes clics et tes claques et tu t'en vas, comme la chanson de Mélilique,
c'est quoi déjà ? Bye bye. Hé, Mélilique ! Bye bye ! Ah, c'est Mélilique qui chante bye bye ? Bah oui. Non, bah si, il chante bye bye, mais si tu veux, dans la chanson, tu prends tes clics et tes claques et tu te casses. N'importe quoi, ça a jamais été Mélilique. Mais si, c'est Mélilique. C'est MC Solar. C'est MC Solar. Alors ? Mais non, c'est pas MC Solar. Mais c'est MC Solar. Non, non, non, non. Mais c'est MC Solar, on l'a encore vu ce matin à 7h à la...
à la télé. Attends, arrête de dire des bêtises. Non, parce que Mélilique, je le reconnais, c'est à coiffure, donc... Ah ouais, bah bien sûr, il est coiffé comme toi. Non, non, non, pas tout à fait. Non ? Ah, avec Léopatra. Juste avec des petites tresses, quoi. Ouais, avec Léopatra. Pas comme moi. Ouais, mais c'est vrai que t'es... Eh, c'est vrai, sans déconner. Ouais, sans déconner. Sans déconner, comme Max il dit. Sans déconner, c'est vrai que t'as une tête de Cléopatra, hein. Ouais. C'est quoi pour toi une tête de Cléopatra, Gérard ? Eh, Cléopatra, c'est celle qu'on voit, là, sans arrêt. Ah, oui, d'accord. C'est vrai, hein.
Comment la petite, là ? Audrey. Elle s'appelait Audrey. On a répondu à ta question, Audrey ? Bah ouais, ouais. Mais bon, Gérard, t'as pas dit la vérité, quoi. Bah moi, j'ai pas dit la vérité. Moi, je t'ai dit que je suis toujours fidèle à Sandy et j'y resterai. Bah ouais, mais... Jusqu'à la fin. Jusqu'à la fin. Jusqu'à la fin. Non, mais ça se trouve, c'était un autre Gérard. Tu t'es peut-être trompé. Non, non, mais attendez, attendez, attendez, attendez. Ouais, faut peut-être arrêter les conneries. Parce qu'il y a des gens qu'on a marre d'être... qui sont harcelés.
Qui sont harcelés. Attends, Gégé... Elle veut pas le dire. C'est perso. Non, non, non, mais vas-y. Tu l'as vu. Tu as eu un rendez-vous avec elle. Enfin, avec lui, pardon. Tu l'as vu et tout ça. Ah bon ? Ah bon ? C'est bon ? Avec elle. Avec elle, avec elle, avec elle. C'est bon. Alors, vas-y. Donc, tu peux préciser plus ta pensée, là ? De quoi ? Tu veux que je donne des détails ? Ouais. Attends, je peux donner des détails ? Non, c'est perso, ça. Attends. Non, moi, je suis d'accord avec elle. Si elle veut garder ça pour elle,
elle le fera dans neuf mois, au pire. Ouais, voilà. Parce que t'avais pas mis de capote, je te signale, et moi, je prends pas la pilule. Non, non, bon, allez, on va s'arrêter, là. Non, non, bah, allez, c'est bon. C'est bon, donc. Audrey ? Ouais ? Bah, on va te souhaiter de bonnes fêtes de fin d'année. Ouais, bah, OK. Ouais, bonnes fêtes. Et puis, bah, à l'année prochaine, si tout va bien. D'accord. OK ? Donc, on va se retrouver, là, maintenant, pour attaquer les débats. Ah, le débat, ouais. Donc, le débat sur les routiers. Donc, on va... Il y a Manu et...
Manu, qui est au standard. Ouais. Donc, qui vous attend, les bras ouverts. Donc, 0803 08 5000. Rigaud, toujours sur l'Internet, au www.fr. Donc, si vous voulez nous appeler, n'hésitez pas. On est là. Et si vous voulez toujours passer, voir comment ça se passe dans les studios, c'est fini, là. Je pense que... Le chef, il vient de me faire... Hop ! Le chef, il m'a fait... Hop ! Il m'a fait... Hop ! Ça fait trois jours que tu me dis.
Comment on va faire visiter, surtout, personne pendant tes débats ? Et maintenant, t'arrêtes pas de demander aux gens de venir pendant tes débats. Bah, alors ? Non, bah, non. C'est toi qui as demandé à ce qu'il y ait personne. Bah, alors ? Bah, dans ce cas-là, on laisse la porte ouverte. On relance pas une annonce. C'est bon. Bah, si. Bah, si. Maintenant, c'est les concerts. On va... Attends. Maintenant, c'est les débats. S'il y a des gens qui veulent venir... Débat sur les routiers. Et voilà. Donc, s'il y a des gens qui veulent venir, donc, ils peuvent venir. Mais pas trop nombreux dans les studios. C'est tout ce que je demande.
Attendez la pub. C'est... Ouais, bah, attendez longtemps. Ouais, d'accord. La pub. Vous attendez la pause musicale. Je viendrai vous dire un bonjour. D'accord, ok. Bon, ça, c'est notre problème. D'accord, ok. Bon, bah, alors, les débats sur... Enfin, le débat sur les routiers. Le débat sur les routiers. Trois heures de débat. Il y a... 120 questions. Il y a 23 questions. Et que de la bombe, hein. Ouais. Et c'est de la bombe bébé. Comme dirait... Je sais pas qui, là. Ça, c'est... Ayam. Ouais. Et donc... Ayam.
on va garder... Cléopatra est toujours là. Cléopatra va réagir quand même. La bombe bébé, c'est réciproque. Chicho. La bombe bébé, Chicho. Fais-moi plaisir. C'est Noël. C'est Noël. Faites la fête. On va mettre un petit remix. On le mettra tout à l'heure. Faites la fête maintenant. Faites la fête.
Faites la fête. Faites la fête. Faites la fête. Tu peux arrêter deux minutes ? Je propose un truc. Tant qu'il n'y a pas les 6500 connectés sur Internet, on ne le met pas. Non. Ça les forcera à venir. Ça les forcera à venir. Non, non, non. Ce n'est pas toi qui commandes, c'est moi. D'accord. On le met alors. C'est moi. On y va. On se retrouve dans un instant, c'est ça ? On se retrouve tout de suite après aux 0803, 085000 et 0875000. Il n'y a plus qu'une personne au standard, c'est Manu. Ce n'est pas grave. Oui, mais toi, tu vas y retourner. Oui, d'accord. D'accord, mon canard.
Ok. Ok. Et c'est quoi là qu'on s'écoute ? Naromix.
Comment ? Comment ? Alors là, c'est une très bonne question. Ah, bon ? D'accord, je vois. Celui qui fait du bruit derrière, arrête. Parce que ça commence à m'énerver. C'est moi qui commande. Mais non ! Hey, hey. Sans déconner. Sans déconner.
Non, non, non. Attends, je t'écoute. C'est moi qui t'écoute maintenant. Tu réponds à la question ou si tu réponds pas, on va te dire pas.
Bonne nuit. Bonne nuit à toi. Allez, celui-là, dégage. Fais gaffe là-bas parce que j'ai l'air de faire avaler tes lunettes si tu fais le con. Mais attends, tu te fous de moi, toi ? Quoi ? Quoi ? Parle un petit peu plus fort devant ton combiné parce que j'ai un téléphone de merde. Toi, tu as l'air de faire sodomiser, toi. Sans déconner.
Remix ! Remix ! Remix ! Remix !
Remix ! Remix ! Remix !
Remix !
Il y a Gilbert, il y a Patrick, il y a pas mal de gens. Il y a pas mal de gens, donc je remercie tous les gens. Et il y a d'autres personnes encore qui sont en haut à l'accueil. C'est des routiers, hein ? Ouais. Il y a des triplés routiers, en plus. Derrière, juste derrière. Bon, toi, pour l'instant, tu as de terre et c'est tout. Non, mais c'est une routière qui est venue spécialement. Elle va livrer bientôt dans la Haute-Savoie. Elle est venue te dire bonsoir. Ouais, mais de toute manière, en fin de compte... Ah, les canons, hein, si t'étais célibate, si t'étais pas maqué. Non, mais je sais bien.
Moi, j'ai mon bébé. J'ai mon bébé rose. Je le garde, mon bébé rose. Non, s'il te plaît. Excuse-moi, là, je me porte en faux. C'est pas ton bébé rose, merci. Attends, toi, t'étais bien contente ? Ouais, bébé rose, c'est moi. Donc, toi, c'est bébé vert, bébé marron, bébé ce que tu veux, mais bébé rose, c'est moi. Ouais, mais t'étais bien content quand t'avais Aurélie, là, dans les studios, hier. Mais Aurélie, je lui ai rien dit, moi, Aurélie. C'est rigolo, hein ? Menteur ! Menteur, menteur.
Allez, sans déconner. Allez, sans rancune. On y va. 1h17, c'est parti. On accueille sans problème 20 ans de Niort. On écoute Fun Radio sur 93.3. Bonjour, Gérard. Bonjour. Joyeux Noël à toi. Bon anniversaire. Ah bah, d'accord. Toi, t'es vachement en avance. À l'avance, à l'avance. Chute 19 ans de Laval, 102.3. Oui, tout à fait. Salut, joyeux Halloween à tous. Salut à bébé gros.
Comment ? J'ai dit salut à bébé gros. Euh... Là, tu vas te calmer, toi. Allez, hop. C'est Noël, on écoute. Ouais, c'est Noël, Gégé. Allez-vous, allez-vous. Tranquille. Non, non, hé. Tu me l'attrapes et tu me le calmes déjà, lui. Ça y est, il commence déjà à faire sa somme dictature, le latin. Allez ! Hop. Couille de loup, 23 ans de Toulouse. On écoute Fun Radio sur 105.9. Bonsoir. Bonsoir. Petit téton, 18 ans.
Presse, 98.9. Oui, bonsoir et joyeux Noël. Eh ben, de même à toi. Euh... Raisin sec, 25 ans d'Alès. Bonsoir, joyeux Noël. 96.5. 65. Euh... 96.6, pardon. 65, genre. 96... 96... 95.6. OK. On écoute Fun Radio sur 95.6. Oui, si tu veux. Allez, hop. Allez, hop, il dégage, celui-là. Allez. Oh ! Vous avez vu, calmez.
La suite, Gégé. Eh... Poil de nez. Oui, bonsoir. 20 ans de Nantua. 99.4. Bonsoir, Paris. Bonsoir, Goumaud. Salut à toi. Parle bien dans ton téléphone, hein, Poil de nez. Ouais. Pardon ? Ouais, parle un peu mieux dans ton téléphone et... D'accord, mais je suis dans une cabine en pleine campagne, donc ça, c'est pas nouveau. Oh là là là là là ! C'est un portable, c'est un portable ! Non, non, c'est pas un portable. C'est ici, c'est un portable. C'est pas nouveau, bon. Oh, vous vous calmez, c'est pas vous qui commandez, c'est moi. OK, on y va, Gégé. OK.
Donc, c'est le débat sur les routiers, hein. Tu le rappelles, voilà. Donc, la question, excuse-moi, parce que j'ai pas écouté. Bon, la question, de toute manière, t'as pas besoin de l'écouter, toi. Ah, d'accord, bon. Toi, tu fais la réalisation, tu me donnes les fiches avec les titres de chansons. D'accord. OK. Rigaud, oui ? Oui. Bonsoir. Bonsoir. Débat sur les routiers, oui, tout à fait. Donc, y avait pas une petite question avant qu'on...
Spoutnik qui te demande comment il doit faire pour manger sa dinde de Noël avec des baguettes au resto chinois. Ah, là, je sais pas. Là, je sais pas du tout. Donc, la question, donc, un routier peut-il conduire 24h sur 24 sans s'arrêter ? Allez, hop ! Non, mais merci, Fildar. Mais ils sont là, les auditeurs, Gérard. Non, mais bravo, Fildar, tu commences. Bravo, Fildar. Bravo ! Bravo ! Bravo ! Bravo ! Bravo !
Je pense qu'il n'y avait aucun auditeur. Un routier peut-il conduire 24h sur 24 sans s'arrêter ? Impossible. On va demander à 100 problèmes. Pas de problème. Impossible. 24h sur 24, c'est impossible. Il y a quelqu'un qui mange. Non, mais... Non, mais ça dépend. Il dort, mais qu'il fasse autre chose.
Attendez, déjà, pas tous en même temps, parce qu'on ne comprend rien, s'il vous plaît. Vous coupez la radio. Qui c'est qui a une radio pourrite, là ? Elle est pourrite, ta radio, en plus. Pas moi non plus. Pas moi non plus. Qui c'est qui a une radio ? Je remercie celui qui met le son, parce que j'ai l'image, je n'avais pas le son. Gérard, il met de Goldorak, Manu... C'est bon, c'est bon, il gère, Manu.
Vas-y, Gérard. Alors, chute. Chute, à toi. C'est bon, je le calme. Bon, d'accord. C'était chute qui mettait Goldorak, c'est pour ça. C'est parce que je suis fan, je suis fan. Alors, tu peux... J'ai connu des routiers qui conduisaient beaucoup plus que 24h d'affilée, ça dépend à quoi ils tournent. Et moi, je dis, il y a des routiers qui ne respectent pas les consignes de sécurité, qui conduisent beaucoup plus que ce qu'ils devraient. Parce qu'il y a des accidents, comme d'habitude. D'accord. Oh, on se tait !
Si on est du routier qui tourne aux enfaites, je vais dire, ça sera conduit 72h, 96h de suite sans problème. Ils partent de Amsterdam, ils vont jusqu'à Tomboucou direct. D'accord. De toute manière, ce n'est pas la question. Bah si, il est routier, c'est quand même... Non, non, mais ce n'est pas la question, d'accord ? C'est international. Ce n'est pas la question ! Oh là là. C'est pas le thème du débat. Oh, le grand stratégaire ! Oh yes ! Oh là là ! Oh là là ! Eh putain, vous ne me faites pas là ! Oh, Manu, Manu, Manu. Bon, allez, stop. C'est bon.
Allez, Gérard. Oh, euh... Faut... Faut peut-être que tu te calmes, Manu. Gérard, sur IRC, il y a Sardine, le vrai de Marseille, qui te dit que s'il n'y a pas de feu rouge sur l'autoroute, il peut ne pas s'arrêter pendant au moins 120h, le routier. Non, mais attends, les feux rouges, je ne vois pas le rapport avec... Un routier peut-il conduire 24h sur 24h ? Bah si. Non, mais je ne vois pas le rapport avec les feux rouges. Ah si, s'il n'y a pas de feux rouges, il ne peut pas s'arrêter de rouler. Bah ouais, mais attends. Un routier qui conduit 24h sur 24h,
déjà, je n'en ai jamais vu. Bah alors, c'est quoi ta question ? Justement, c'est une question que je pose. C'est une question con. Bah ouais, si tu sais que ce n'est pas vrai, pourquoi tu poses la question ? Parce que... Parce que cette question-là, elle n'a jamais été posée lors qu'on a fait les débats sur les routiers. Donc c'était important de la poser, parce que comme ça n'avait jamais été fait... Gérard, sur IRC, on me demande si c'est que des questions à la con, comme ça, pendant tout le débat. Si ça ne leur plaît pas, c'est qui qui te demande ça ? C'est un peu tout le monde.
Fais gaffe, parce que si tu leur dis à tous de se casser, on va être mal. Donc, on va demander à Chut. Ouais. Bah écoute, moi je voulais te dire que des routiers qui conduisent plus de 24h, comme je t'ai dit tout à l'heure, il n'y a aucun problème. Ouais. Si Manuel Générix fout la main, si tu prends Steve Austin, il conduit largement plus de 24h. C'est pas moi l'arrière. Si tu prends Steve Austin, il peut conduire largement plus de 24h. Lui, c'est un show aussi, quoi. Ah bah ouais, non, mais je veux dire, ça, c'est du super routier, quoi. Ah, c'est clair.
Ouais, bah ouais, d'accord, t'as raison. Tu ne prends pas parti des ports, toi ? Ils ne prennent pas l'avion, Gérard. Non, non, mais tu ne prends pas parti des ports ? C'est important que tu transportes les cochons, alors, en France. Pourquoi tu veux tout de suite citer le nom de Manu ? Ah ! Tu n'as pas parlé de Manu, je t'ai demandé comment t'avais fait la fête. Manu, je l'ai vu en live, il n'est pas gros. Comment t'avais affrété ta meuf ?
Dégage-moi ce abruti, là. Ok, ça y est. Ah, tu vas voir, toi. On va s'occuper de toi, hein. Je vais savoir qui c'est. Qui c'est qui s'amuse à parler de Sandy ? C'est Robert. Non, il n'y a pas de Robert. On n'a pas de Robert, là, sur la liste. Gérard, à propos de Sandy, il y a Olio qui te demande combien de temps tu roules sans t'arrêter.
Je ne roule pas, je t'assure, mais bon, je ne peux pas te répondre à cette question. Tu flottes, alors, si tu ne roules pas. Donc, je prends un joker. Ce n'est pas le jeu de la vérité, c'est les débats. Alors, couille de loup. Moi, tu vois, je pense que ça dépend. En fait, s'il a pris du speed, il peut aller rouler plus de 24 heures. Je ne sais pas s'il roule plus vite aussi, ça dépend de la vitesse, en fait. Ça dépend à quelle vitesse il roule. Non, mais attends.
Facilement, plusieurs heures. Moi, je vais te dire une chose. Tu as déjà vu à combien ils sont limités, les routiers ? Ah ben non, moi, je ne suis pas routière. Non, tu n'es pas routière. 20, 30 à l'heure, je crois. Oui, c'est ça. Qui c'est qui vient de dire ça ? Chaudreau, Chaudreau. Qui ? Ils sont limités à combien, Gérard ? Toi, tu peux peut-être leur dire. Alors, limitation de vitesse. Manu, tu vas me faire du bon boulot.
S'il te plaît, pour la dernière. Gérard ! Il y a des routiers, ce soir. Il y a des routiers avec toi, en plus. Ils vont confirmer. Oui, je l'ai vu. Donc, il pourra le confirmer. Donc, je pense que les routiers sont limités à 80. Tu peux le confirmer ou pas ? 60, 80, voire 90, pas plus. C'est faux ! 90 sur autoroute. C'est faux ! Non, non, laisse-le réagir. Laisse-le s'exprimer. Non, non, mais c'est un vrai routier. 90 sur autoroute.
Ce n'est pas vrai ! C'est une honte ! Ce n'est pas vrai ! Attends, toi. Toi, avec ton vélo, tu roules à combien ? 91. 91 km heure. Tu fais moins le malin. Mais attends, ton vélo, on te le prend entre deux camions, tu n'as plus de vélo. C'est une boîte à conserve. Oui, mais moi, je prends ton camion entre deux vélos. C'est moins le malin. Mon camion entre deux vélos, tu as raison. Prends... Ouais. Donc, petit téton. Oui, bien sûr, il peut conduire...
Oh, ta gueule, toi ! Ça s'appelle des routiers somnambules. Ah, d'accord. Des routiers somnambules. Tu as vu jouer ça dans Spirou Magazine ou dans Tintin Milou ? Non, dans Mickey. Ah, dans Mickey. Moi, je crois que j'ai vu jouer ça dans L'île aux enfants avec Casimir. Ne cherche pas à être drôle, Gérard. Ça ne marche pas, Gérard. Gérard, sur IRC, il y a Sean qui te demande de répéter la question. Ah non, je ne répète plus les questions, maintenant. On accélère. Raisin sec.
Alors, les routiers, ils sont limités à 230, normalement, non ? Bien sûr. Pourquoi pas 250 km heure aussi ? La dernière fois, j'étais à 140, je me suis fait doubler par un camion. Alors, je ne comprends plus, maintenant. Euh, Gégé ? Ouais ? Si son problème, ça ne te dit pas, on fait une petite pause pendant un quart d'heure et on met le son de Goldorak. Non, non, non, non, non, non. Alors, son problème, terminé pour toi. Est-ce qu'il joue de la guitare, là ? Non, personne ne joue de la guitare. Non, non, Actarus. Euh, Poil Donné.
Tu n'as pas répondu à ma question. Qui ? Raisin sec. Alors, vas-y. Je t'ai demandé comment ça se faisait que j'étais à 150 sur le tour de route et qu'un camion m'a doublé. Non, mais attends. Tu étais avec quoi ? Avec ma voiture. Gérard, ça peut rouler au maximum à combien, un camion, un semi ? Un camion, de toute manière, on a confirmation, c'est limité à 90. Non, mais c'est limité. Mais si ça dépasse la limite, ça peut rouler à combien ? Non, il n'y a pas de si il dépasse la limite. Il y a son mouchard.
Il y a un petit voyant rouge. Donc, le mouchard, pour préciser, pour ceux qui ne sont pas routiers, qui n'ont pas l'habitude de le faire, et là, on a deux... Ils peuvent confirmer. On a des routiers qui sont là, qui peuvent confirmer. Donc, le mouchard, c'est là où qu'on met le disque pour savoir à combien qu'on roule et tout ça. Donc, c'est un boîtier comme un... Attends, parce que tu dis que ce n'est pas un lecteur CD pour mettre le disque, c'est un radio cassette. Non, mais c'est à peu près comme ton disque.
Oui, c'est ça. Tu as le disque qui tourne... C'est un lecteur cassette, CD. Même, non. On appelle ça des mouchards. Oui, les mouchards, ce sont ceux qui disent des... Non, non, non. Comme les Kleenex, des trucs comme ça ? Mais non, attends, toi... C'est exactement ce qu'on demande à un salarié. Non, non, non. Là, on a des routiers. Donc, on peut confirmer. Les mouchards, c'est un truc où tu mets ton disque. Tu mets ton nom. Ton disque CD ou vinyle ? Mais non, tu mets un disque normal. Tu prends ça.
C'est faux ! Mais arrêtez vos conneries, putain ! Mais moi, c'est ce que je dis. Alors, toi, tu t'écrases, ok ? Ouais, non, mais attendez. Un disque, c'est un genre de truc comme ça. Ah, une feuille de papier. Non, mais qui est trouée là. Montre bien, parce que les gens ne voient pas bien, peut-être. Là, tu as tout ça. Tout ça, c'est un disque. Et tout de suite... Ah, tu fais une horloge, comme une radio. C'est une horloge. Mais si tu n'as pas d'horloge, tu peux mettre quoi ? Non, tu ne peux pas.
Tu ne peux pas. Réveil ! Non, non, tu ne peux pas. Pas de réveil ? Non, non. Non. Ah bon. Tu ne peux pas machiner là-dessus. Ah, tu ne peux pas machiner, surtout. Alors... Je voulais dire quand même que les routiers, c'est des grosses balances, quand même. Ta gueule, là, toi. Toi, la balance, tu sais où tu vas terminer, toi ? Là. Ah ouais, ah ouais, ah ouais. Gérard ? Excuse-moi. Vas-y, Manu, vas-y. À la place de sans problème, on accueille n'importe quoi. Euh... Je vais te dire une chose. Attends, tu permets sans problème ? Euh... Il n'est plus là, il n'est plus là. Il est parti sans problème.
C'est n'importe quoi. N'importe quoi. Ouais. Je vais te dire une chose, Manu. Ouais. Pas comme toutes les semaines. Ah, excuse-moi. Dis plus rien, parce que sinon, ça fera plus d'une chose. Là, tu ne peux pas dire... Tu ne peux pas dire sur les 24 lignes, parce qu'il n'y en a plus que 12, mais... Ouais, ouais, non, mais je voudrais qu'on prenne un peu, là. Sur les 12 lignes, Manu. Donc, c'est comment, son nom ? N'importe quoi. N'importe quoi. Attends, Gérard, j'ai lutté pour essayer de vous joindre. Ouais, donc, tu peux répondre à la première question ? Bah, j'ai pas entendu, j'étais au standard avec Manu. Alors, la première question, donc, je la rappelle,
parce que tout le monde a à peu près fait le tour. Donc, n'importe quoi pour toi. Je répète. Un routier peut-il conduire 24 heures sur 24 sans s'arrêter ? Euh... Si c'est mon argent. Oui, je pense, oui. S'il prend de la caféine. C'est ça, t'as raison. Et celui qui dit « fais chier maman », c'est ton... C'est mon argent. Ouais, c'est ça. Et celui qui fait le porc, c'est pareil. Il n'y a personne qui peut m'enregistrer l'épisode de Goldo en DVD ? Non, non, non, non, il n'y a personne qui peut t'enregistrer Goldo en DVD.
Il est monté sur moi, c'est tout. Oh... Gérard, tu parlais des mouchards. Moi, je voulais savoir quelle est ta théorie sur le Morbac. Non, il n'y en a pas. Alors, comment s'organise un routier ? Attends, Paul Donnet, il n'a pas répondu. Non, vas-y. Bon, alors, tu parlais de... C'est quoi déjà la question ? Oh, allez, tu me prends pour un con, là. Allez, va retirer tes poils de nez. Allez, hop. Hop, terminé. Va retirer tes poils de nez. Je m'en souviens. Non, non, c'est bon, c'est bon. Joyeux Noël à toi.
Va retirer tes poils de nez. Hop, terminé pour toi. Alors, comment s'organise un routier quand il s'ennuie ? On va demander ça à n'importe quoi. Je pense qu'il se tape une grosse branlette. Alors, tu peux... Vas-y. Rigo, attends, attends. Justement, à ce propos, il y a un misto sur l'IRC qui dit que 99% des routiers se branlent quand ils se font chier et l'autre pour cent sont des neuneux. Alors, là, je vais te dire une chose. Qui c'est qui a dit ça sur l'IRC ? Misto. Misto.
Je vais te dire une chose que là, tu as ouvert la réponse dans peu de temps parce qu'il y a des routiers qui sont là. Toi, tu ne peux pas répondre. Ils peuvent confirmer. C'est bon. Ils peuvent confirmer que c'est faux. Non, non, non, c'est faux. Il ne faut pas déconner. Attendez. Il ne faut pas. N'importe quoi. Putain, il fait la transformation. Excuse-moi. Donc, Gérard. Bon, allez, hop. Attends, il fait la transformation. Non, non, non, non, non. Non, non, ouais. Je ne sais pas d'où ça vient.
Gérard. Gérard. Allez, allez, allez. Manu. Manu, bosse un peu. Putain, autrement, tu dégages. Rigo. Non, non. Tu le tais, toi. Non, il y a juste Misto qui dit que si tu ne fais pas partie des 99% qui se branlaient, c'est que tu étais un neuneu. Et alors ? Tous les routiers ne se branlent pas dans leur camion. Attends. Tous les routiers ne sont pas neuneux. 99%. Tous les routiers ne sont pas des cochons comme la question va être posée. Donc, je...
Je sais qu'il n'y en a pas beaucoup qui sont sur les routes, malheureusement. Ah, pourquoi ? C'est les fêtes. Quoi, il y a du gel ? Eh non, mais... Ça gèle ? Non, mais il n'y a pas de routiers. Ouais, vas-y, toi. Je voulais juste te dire qu'à la place de Poil Donné, on accueillait Sandrine, c'est tout. Alors, Sandrine, bonsoir. Non, non, c'est bien, ça. Oui, bonsoir, Gérard. Salut, Sandrine. Salut, Sandrine. Bonsoir, c'est Sandrine de France. Ouais, c'est ça, Travelo. Bon, vous fermez un peu vos gueules. Ok, super. Merci.
Ah, on va peut-être plus avoir de confirmation, mais c'est pas grave. Salut, les routiers. Salut, les routiers. Salut à vous. Bonne route, vous êtes sympas. Bonne bourre. Bonne bourre et prudence sur les routes. Ouais. Passez la deuxième, quand même, des fois. Sortez couverts, les mecs. Gérard. Oui ? C'est Sandrine. Est-ce que je peux avoir la question ? Parce que Manu m'a pris sur le standard. Ouais, ouais, ouais. En plus, il est sourd. Oh, tu te tais, toi. Ferme-toi, s'il te plaît. Moi, ça va. Alors, comment s'organise un routier quand il s'ennuie ? Oh, putain, mais vous me faites ça, mec !
Bon, moi, j'arrête à 3 heures, hein. Allez, hop ! Allez, allez, allez. Manu, c'est quoi, ce bordel ? C'est nul. Nul, nul, nul, nul. Faut me mettre à l'aréa, moi, je pense. Allez, on va s'écouter, Sacha, avec Fête la Fête et La Grosse. Et on se retrouve après pour la deuxième question. Comment s'organise un routier quand il s'ennuie ? A tout de suite.
Sous-titrage Société Radio-Canada
...
...
...
... ... ... ... ... ... ... ... ... ... ... ...
... ... ...
... Et voilà, c'était Saga avec Fête la Fête et... Saga Africa ? Non, c'est Saga avec Fête la Fête à La Grosse. Donc, c'était dédié pour... La Grosse ? Pour ma petite femme que j'aime de tout mon cœur. Avant de recommencer avec les auditeurs, j'ai un petit sondage sur l'Internet.
Alors, c'est de paradoxe. Alors, attention, parce que ça défile très vite. Alors, sondage reçu par l'AFP. 15% des routiers sont des maniaco-dépressifs. 23,78% sont en proie à de gros problèmes sexuels. 36% prennent du Viagra. 3% sont sans emploi. Et 90,3% auraient préféré être CRS. Parce qu'ils ont le même QI. Euh... CRS, non, je vois pas trop le rapport.
N'importe quoi, bonsoir. Bonsoir, Gérard, comment vas-tu ? Re-bonsoir. Chut, derrière, vous fermez vos gueules. Oh putain, mais... Oh, Manu ! Faut gérer un peu, là, parce que ça commence à bien faire. Chut. Il y a un mec qui fait le malin, derrière. Oh là là, Goldorak, Manu ! Ça vient pas de chez moi ! Oh, moi, j'en ai ras-le-bol, là !
Mais y a personne ! Regarde un peu, y a personne en air ! Putain, tu as bossé comme il faut, toi ! Mais y a personne, ça vient pas de moi, hein ! Si t'as pas envie de bosser, ce soir de Noël, tu retournes voir ton bébé rose ! Mais y a personne ! Tu nous fais chier, là ! Ouais, c'est vrai. D'accord, retournez voir ton bébé rose ! Ouais, d'accord. Ouais, Gérard, on y va, on y va. Euh, chut ! Ouais. Ouais, d'accord, euh... Couille de loup ! Ouais. Re-bonsoir. Bonsoir. Petit téton. Oui. Re-bonsoir.
Raisin sec ! Raisin sec ! Oui ! Ouais. Oh, tu travailles ou quoi, là ? Excuse-moi, ça va ! Eh, Sandrine ! Dis le trableau ! T'es sourd ! C'est-à-dire GG. Moi, je kiffe bien sur tes pantoufles internes. Bon, alors... Celui-là... Il dégage ! Il dégage ! C'est Pedro qui a dit ça ! Bon, vous fermez ! Maintenant, vous allez vous la fermer ! Ok. Allez, hop ! Eh, Gérard ! De quoi ?
Comment ? Tu voudrais être routier ? C'est qui ? Petit téton. Petit téton ? Ben, tu retournes voir Manu, il va... Il va... Gérard, elle te pose la question. Est-ce que t'aimerais redevenir routier ? Non. Pas pour l'instant. Pourquoi ? Parce que j'ai une bonne place. C'est tout. Alors, maintenant, comment s'organise... Comment s'organise un routier quand il s'ennuie ? Sandrine. Alors, Sandrine, vas-y, le trableau. Alors, la question de facilité, ce serait de dire, bon, la branlette, mais à mon avis, c'est pas ça.
Donc, un routier, qu'est-ce qu'il va faire ? Il va chez Ypres. Je donne pas la marque de la station au service. Ouais. Il va acheter des cassettes de cul. Ou alors, des calendriers de cul, de la bouffe, et tout ça. C'est quoi, ça ? C'est la solvée. Et voilà. Merde en figure ! Putain, Manu, Manu, Manu ! Voilà, Gérard. J'essaie de gérer, ça y est. Non, mais si tu veux, on peut arrêter à 3h.
Parce que c'est ce qu'on va faire, on va pas faire les deux débats. Parce que là... Non, mais moi, ça m'emmerde pas. C'est toi que ça emmerde. Parce que toi, pour l'instant, t'es en train de me foutre de la merde. Ça se voit que c'est le dernier débat de l'année. Parce que t'es pas avec ton bébé rose. Et moi, je suis pas... Moi, elle est là, mais on n'a pas fait de réveillon encore. Gérard, pour revenir au débat, il y a Chandler, le vrai, sur l'IRC, qui te demande qu'est-ce qu'il faut faire comme étude pour devenir routier.
Justement, ça, c'est dans le deuxième débat. Donc, c'est pas maintenant. Gérard ? Oui ? C'est Sandrine, donc j'ai pas fini. Ouais, vas-y. Parle dans ton téléphone, Sandrine. Pardon ? Parle dans ton téléphone. Ouais, mais attends, attends, Sandrine. Toi, tu recommences pas ce que tu viens de faire. Parce que c'est toi qui t'amuses à... Non, c'est pas moi qui mets Goldorak. Non, non, tiens. Ah, tu vois, c'était pas moi. Tiens, tiens, tiens, tiens. C'est pas parce que je mets main là que je mets Goldorak. Parce que tu veux que je te le mette, Goldorak, tu vas avoir un autre son, regarde. Ah, ouais, ouais.
Ça, c'est Goldorak. C'est mon Goldorak, c'est pas l'auditeur, là. Ouais, ouais, ouais. Tu vois ? Ouais, ouais, c'est ça, allez. Laisse-le. Toi, il y a une différence. Bon, allez. Bon, Gérard, c'est de la bombe, c'est un épisode. Gérard ! C'est Sandrine, j'ai pas fini, donc. Bon, alors, dépêche-toi. Le routier, s'il s'ennuie vraiment, à mon avis, ils peuvent même aller jouer aux flippers, style Sugar Ray, par exemple, les flippers qui marchent pas, ou la PlayStation. D'accord. Gérard, résin sec. Ouais. Alors, je voulais dire que, bon, les routiers, quand ils s'ennuient,
ils peuvent appeler leur famille, hein. Ils sont pas tout seuls, ils doivent avoir des enfants, aussi, les routiers. Non ? Ben, à mon avis, s'ils sont sur la route, ils peuvent pas être chez eux, hein. Non, mais ils peuvent avoir un portable pour appeler de leur route. Petit téton ! Ben, ils écoutent la radio. Ah, d'accord, carrément, toi. Ben, écoute, c'est une réponse intelligente, hein. Ah, ouais, ben, je vois. Euh, couille de loup. Non, moi, je pense qu'il doit se taper une grosse.
Gérard ! Ah, ta gueule. Oh ! Oh, vous gâlez un peu ! Ouais. Bon, allez, vas-y, cochon. Couille de loup ! Attends, la cochonne, attends, merde, toi ! C'est pas une cochonne, c'est une salope ! Oh ! Oh, tu calmes tes nerfs, toi, ou je te calme ? Ouais, c'est clair, arrêtez. Ben, heureusement que je suis pas marié avec lui ! Parlez pas comme ça aux chiennes, mec. Oh ! Gérard, on pourrait revenir un peu dans le débat avec les auditeurs, parce que c'est n'importe quoi. Ouais, mais c'est n'importe quoi, tu demanderais,
t'es à l'hôte, là. Manu, on pourrait revenir dans le débat, parce que c'est n'importe quoi, là. Non ! Gérard, à propos du débat, reviens dans le débat, Gérard, s'il te plaît. Tu m'écoutes ? Oui, Rigo. Il y a Rainbow, le vrai arc-en-ciel, qui te demande si un routier a une prime pour Noël s'il travaille pour le réveillon. Ah, c'est une bonne question, ça. Voilà la question que je m'attendais. Mais ça, c'est dommage qu'il soit parti. Ah, ils peuvent plus approuver, là.
Une prime, non, mais être payé double, oui. C'est faux. Attends, toi, tu fermes ta... ta gueule, hein ? Tu fermes ta gueule, et tu me fais du boulot correct, ok ? C'est tout ce qu'on te demande, Manu, merde. C'est tout ce que je te demande, avant que je te mette une claque dans... Dans le museau. Fais le con.
Fais le con. Tu vas voir tout à l'heure. Tout à l'heure, tout à l'heure, tu vois ce qu'il reste de coca ? Allez, on y retourne, Gérard. On y va, on y va, on y va. Alors... Chut ! Ah, on n'est plus en antenne, c'est bon. Chut ! J'ai pas répondu, ouais. Allô, Gérard ? Oh, ta gueule, toi. Oh, putain, ferme-la, couillon. Ouais, Gégé, on va... Ta gueule, un peu. Voilà. Gégé, c'est chute ? Ouais. Moi, je voulais te dire que j'ai connu des routiers qui, quand ils s'emmerdaient, bah, tout simplement, ils classaient, ils avaient des collections de calendriers de cul. Allô, Gérard ?
Ils classaient leurs calendriers de cul, bah, quand ils se faisaient chier, quoi, pour couper. Et je voulais savoir si tu confirmais. Oui. Gérard, t'as même pas écouté la question. Ouais, c'est pas poli, Gérard. Tu sais, j'ai très bien compris, et je vais te dire une chose. Vas-y, dis ta chose. Vas-y, dis une chose, Gérard. Moi, je peux vous dire une chose, que les routiers n'ont pas de calendriers de femmes à poil dans leurs camions. C'est faux ! Vous mentez tous ! Vous êtes tous des menteurs ! Vous êtes tous des menteurs ! C'est faux !
C'est faux ! C'est faux ! N'importe quoi ! C'est pas pareil ! Je suis là, je suis là, je suis là ! Qu'est-ce qu'il y a, Gégé ? Tu réponds à la question ? J'ai déjà répondu tout à l'heure, donc, voilà, quoi. Je t'ai déjà dit que, quand ils se faisaient chier, ils se tapaient des petites pignoles dans leur cabine. Non, ça dépend. S'ils sont à deux, ils s'en couillent. S'ils sont à deux, ils s'en couillent. S'ils sont à deux, ils s'en couillent. Troisième question.
Allez, Gérard ! Allez ! Allez ! Attendez, Gérard est en train de dealer un truc. Mais non, il n'y a pas Tony ! Arrête tes conneries ! Il n'y a pas Tony ! Gérard, pour calmer le débat, il y a Scone sur l'IRC qui souhaite un joyeux Noël à tout le monde, quand même. C'est sympa. C'est bien, on te souhaite un joyeux Noël aussi, à toi. Moi, je t'emmerde, toi. Peut-on tricher sur les puces de paille d'un routier ? Ta gueule ! Tu peux m'écouter ? Peut-on quoi ? Peut-on tricher sur une puce de paille d'un routier ? Tout à fait.
Alors, n'importe quoi. Oui, je pense. C'est possible. C'est possible, non ? Tu pirates ton salaire, et c'est bon, il n'y a pas de problème après. Tu gagnes le pognon que tu veux par mois. D'accord. Chut ! Moi, je pense qu'on ne peut pas tricher sur une puce de paille d'un routier. Tu peux préciser ? Vu les sommes qu'il y a, je crois qu'il n'y a pas de quoi tricher. De 1 franc, tu passeras à 2 francs. Oui, mais ça ne fait pas tricher. Couille de loup !
Oui, non, moi, je ne pense pas, parce qu'ils ne doivent pas avoir le QI assez élevé pour pouvoir piger comment on fait. De quoi ? Non, je dis, je ne crois pas qu'ils doivent être assez intelligents pour comprendre comment on fait pour falsifier la feuille. Non, mais attends. Peut-on tricher ? Peut-on tricher sur les puces de paille d'un routier ? Je vais te dire une chose, c'est que c'est le patron qui triche. Ce n'est pas le routier, d'accord ? C'est faux ! Toi, Manu, tu fermes ta gueule, maintenant. C'est faux ! Bon, Manu, tu dégages, tu pousses le camp à l'arrière. D'accord !
Non, non, non, non, non. Si, si, si, si, si, si. Non, mais attends. Non, mais c'est bon, attendez. Faites un débat correct, on verra après. Non, non, mais attends, pour l'instant, il est en train de me foutre de la merde. Euh, petit téton. Eh, tu viens chez moi, après, Gérard. Ta gueule ! Je peux parler ? Oui, ben, je ne sais pas du tout répondre. Non, mais, eh ! Oh ! Quoi, qu'est-ce qu'il y a, Gérard ? Oh, Max ! Eh, tu lui demandes qu'il me passe du bon boulot, là,
pour la dernière de l'année, ou pas ? J'étais pas là, moi. Non, t'étais pas là. T'étais où, bâtard ? T'étais où ? J'ai arrêté ma cassette vidéo, là. Ouais, t'as arrêté ta cassette vidéo. Moi, de toute manière, on ne va pas durer jusqu'à 4h du matin. Eh, tu viens chez moi, après, Gérard. Bon. Qui c'est qui a donné tout ça aux auditeurs ? J'ai personne. J'ai personne à l'antenne. Non, non, non, non, non. C'est pas possible, là. Allez, hop.
Hop, envoie-moi la musique. Attends, j'ai pas de disque, là, Gérard. Envoie ! Envoie ! Je m'en fous, je veux pas le savoir. Envoie la musique. Allez, hop. Envoie la musique. Bah, attends, je vais en trouver, alors. Je veux pas le savoir, tu te démerdes. Tu m'envoies un truc. Attends, attends, moi, j'ai des questions pour toi, pour calmer le débat, auxquelles tu peux répondre. Alors, il y a... Attends que je retrouve. Il y a Chandler, le vrai sur l'IRC, qui te demande combien représente le salaire d'un routier. Bah, justement, ça...
On se calme, les gars, on se calme un peu. La question, on n'en est pas là. Non, mais réponds, réponds. La question, combien... Non, mais Gérard, à chaque fois que je te pose une question, tu dis, c'est pas la question, on viendra plus tard. Réponds tout de suite. Combien gagne un routier ? Voilà. Bon, un routier, à l'heure actuelle, si tu veux, gagne entre 10 000 et 15 000 francs. Donc, selon là où il s'en va. Oh là là ! Bon, toi, toi,
tu vas me faire du bon boulot. Mais, Fildar... Attends, je cherche. Non, non, mais tu cherches, tu vas pas chercher longtemps, parce que sinon, sinon, le débat, il s'arrête et on va laisser Rousseau. Ouais, attends deux secondes, j'ai trouvé un truc super, là. Non, non, mais je m'en fous. On peut pas laisser Rousseau, il joue à la PlayStation. La disco ? Tu veux de la disco ? Bah, je m'en fous, tu mets ce que tu veux, mais moi, soit que Yannin, il fait du bon boulot. Non, mais si Manu faisait du bon boulot, il n'y aurait pas de problème. Soit qu'on fait du bon boulot, on continue.
Soit que j'arrête maintenant. C'est simple. Gérard ? Et si j'arrête maintenant, on est combien ? Non, mais non, on n'arrête pas, là. On est presque 5 000, on est 4 852 moins 4. C'est très bien, j'aimerais bien qu'on booste bien. Les gars ! Et il y a quelqu'un, je me rappelle plus qui c'est, sur l'IRC, qui te demandait le salaire, ça fait combien en euros ? C'est pas la question. En euros, là, je peux pas trop lui répondre, parce que l'euro, il est à 6... Non, il est à 5,57. Non, 6,50.
6,50, oui, pardon. Il est à 6,50, ça devrait faire 6 500 euros. Oui. À quelque chose près. Il y a des milliers d'euros, de soi. Au lieu de dire que je sais pas et de bouffer ton gobelet quand Maxi parle, tu la fermes et tu me calmes les auditeurs. Avant que moi, je te calme. Bon, alors les gars, on refait de réunion. Gérard, qu'est-ce que t'as à dire ? Pour un cent... Eh oui, eh oui, filard, fais du bon boulot. Pour un cent.
Oui. Rigaud, c'est bon. Mais l'autre, parce qu'il est pas avec son bébé rose, il fout de la merde. Il est en train de nous foutre de la merde. Non, c'est pas vrai, je te bosse bien. Mais si, mais si, mais si. Non, je fais du bon taf. Mais non, pour un cent, t'es en train de me faire de la merde, on est à la troisième question, et il y a 23 questions en tout. Eh ben, on a le temps jusqu'à 4 heures. Ouais, ben, tu crois que je vais durer jusqu'à 4 heures ? Ça m'étonnerait. Bah si. Je crois pas. Parce que c'était prévu qu'avec Maxi, ça se passait mal,
t'es à 3 heures, et je pense que je vais arrêter à 3 heures. C'est bien, là, pourtant, parce que... Alors, on va s'écouter Moby Dick avec des prouts. Des prouts en plus, et on se retrouve aussitôt après.
Pour ceux qui sont encore en plein réveillon, ben, bon réveillon de Noël. Ça m'étonnerait qu'il y en ait encore à 2 heures qui mangent la dinde. Ah bon ? T'inquiète pas, il y en a encore. On peut la manger jusqu'à quelle heure, la dinde ? Je sais pas. Il y a peut-être des mecs qui baisent. Manu ! T'éteins ton micro pour deux mots maintenant, et tu t'écrases. D'accord ! Je disais, il y a peut-être des mecs qui baisent ! La dinde ! Bon, tu t'écrases, c'est tout. D'accord ! Donc, je sais qu'il y en a...
qui sont sur les routes. Ouais. Donc, prudence à eux. Ils font réveillon sur la route ? Non, peut-être pas. Non, non. Oui, Rigaud. Oui, je voulais juste dire qu'on a dépassé les 5000. Ouais. On est à 5123,4. Ouais. Donc, si tu peux les remercier. Ben, je remercie tous ceux qui sont... C'est pas assez. Tous ceux qui sont sur l'Internet. Donc, je vous souhaite un joyeux Noël. C'est pas assez, hein, 5000 fois. Et une bonne et heureuse année 99, parce que j'aurais pas l'occasion de... de vous avoir pour le réveillon.
Ouais. Donc, ben... Voilà. Voilà ce que je peux vous dire. Donc, on récupère n'importe quoi. Eh, tu viens chez moi, après, Gérard ? Ah, ta gueule, à toi ! Oh là là ! Ouais, c'est moi. N'importe quoi. Ah, je vais passer à l'entrée, d'ailleurs, là, dans 5 minutes. Oh là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là là Et je baisse dans une demi-heure. Et moi, je t'emmerde. Je t'emmerde. Bon, allez, on se dépêche. Bon, n'importe quoi. Eh, tu viens chez moi, après, Gérard ?
Bonsoir, Gégé ! Joyeux Noël à toi ! Chut ! Ouais, salut. Bon 14 juillet à tous. Ouais, c'est ça. Joyeux Pâques. Couille de loup. Ouais, salut. Petit téton. Salut. Raisin sec. Non, excuse-moi, il est parti. On n'a que Jean-Pul, à la place. Non, mais alors, attends. Manu ! Ouais ? Un conseil que je te donne. Ouais. Tu vois, tu fais une chose, tu me prends,
sur les 12 lignes qui sortent. Ce que j'ai fait, c'est un nouveau. Non, non, non, non, non, non. Bah si, je suis désolé. Tu prends sur les deux lignes. Alors, c'est comment ? Jean-Pul. Jean-Pul. Ouais, mais attends. Jean-Pul. Ouais. Non, Jean-Pul. Bon, alors, tu te démerdes, tu me fais une fiche propre. Ouais, une fiche propre, Gérard. Quand même. Alors, la question, ben, peut-on tricher sur les fiches de pays d'un routier ? Donc, je pense que vous avez réfléchi. Ouais. Donc, ben... Oui ? Oui, tu m'as oublié. Ben,
je t'écoute. Rebonsoir, Gérard. Ben, rebonsoir à toi. Donc, allez-y, posez... Ouais, c'est chute. Ouais, chute. Ouais, moi, ce que je voulais dire, c'était que si les routiers, il fallait qu'ils trafiquent leurs fiches de pays, il faudrait déjà qu'ils sachent compter. Non, mais attends. Attends, attends. Attends, chute. Chute, chute, chute, chute. Chute. Chute. Écoute-moi bien. Oui, chute. Peut-on tricher sur les fiches de pays d'un routier ? Oui, ben, justement. S'il faut qu'ils trichent... Attends, celui qui rentre derrière, arrête ! Jean-Pul. Jean-Pul.
Il faudrait qu'ils sachent compter. Et je pense, bon, je me permets d'émettre un léger doute, quoi, tu vois. Mais je croyais que ça se faisait par ordinateur, maintenant, les fiches de paye. Ouais, mais de toute manière, il faut se dire une chose, qu'il y a certains patrons qui trichent quand même sur certaines fiches de paye. Ouais, mais sur les leurs, pas sur celles de leurs employés, si. Jean, à peine. Ils retirent de l'argent sur leurs payes, alors ? Bon, alors. Mais comment ça se passe ? Un routier, c'est payé au kilomètre ? Comment ? Non, c'est pas payé au kilomètre, en fin de compte.
Comme une personne... Oh, t'as de jolle ! D'accord, c'est... Maintenant, tu m'emmerdes, toi. Ouais. Voilà. Donc, tu disais, GG ? Non, mais, en fin de compte, c'est pas payé... Au kilomètre ? Au kilomètre, c'est payé comme toi et moi. Non, mais c'est payé comme toi et moi. D'accord. Par exemple, le mec, il va rester... De nuit, ça va être payé un peu plus cher. Et ainsi de suite. D'accord. En fait, il doit faire...
Il doit faire 39 heures par semaine, comme un employé... Ah, non, non, non ! Non, c'est pas 39 heures ? Non, non, parce qu'il faut se dire une chose, que les routiers, à l'heure actuelle, passent plus de temps sur les routes que chez eux. Donc, il faut bien se dire... Il faut bien se mettre à la place d'un routier. Je y ai été. Donc, je peux savoir ce que c'est. D'accord. Et je vais te dire une chose, que... Bon, j'ai pas fait de la route. Ouais. Mais ceux qui font de la route ne sont pas tout le temps là. Ah, d'accord. Gérard ? Oui, Rigaud ? Il y a Sardine de Marseille qui te demande
des routiers abandonnés par leur camion sur les aires de repos de l'autoroute. Euh... Des routiers abandonnés... Des routiers qui font du stop pour rentrer chez eux les week-ends, oui. Mais des routiers abandonnés, non. Jamais. Ouais. Gégé ? Oui ? Oui, je voulais savoir... On m'a dit qu'être routier, c'était un métier qui nécessitait de la sueur. On disait que c'était un métier dur, qu'il fallait transpirer et tout. Et je voulais savoir si c'est pour ça que, dès tout jeune, tu avais trouvé ta vocation dans ce milieu-là. C'est clair. Euh...
Ouais. Laquelle ? Laquelle ? Laquelle ? Laquelle ? Oh ! Tu te tais, toi ! Ouais, vas-y, j'ai répondu. Un routier. Donc, c'est toi qui viens de poser la question. C'est comme... C'est chute, c'est chute. C'est chute. Ouais. Donc, ta question, tu peux me la reposer, s'il te plaît ? Ouais, donc, je te disais, il paraît qu'être routier, c'est un métier qui demande de la sueur et de la transpiration. Et je voulais savoir si c'est ça qui, dès ton enfance, t'avais quand même donné ta vocation pour savoir ce que t'allais faire plus tard. Alors, moi, je vais te dire une chose. Qu'un routier transpire beaucoup,
ça, c'est vrai. Parce qu'il faut se dire une chose, que certains routiers sont obligés de décharger. Pas tous. C'est clair. Mais certains. Ouais. Donc, d'autres, quand ils arrivent, ils sont dans la cabine, ils dorment et... Oh là là ! Celui-là, il va se faire virer une fille, non ? Manu ! Non, mais continue, Gégé, continue. Manu, tu fais ton boulot correct ou pas ?
Tu fais ton boulot correctement ou pas du tout ? Ou tu pires ? Ah, correctement, correctement. Ou tu retournes voir ton bébé rose ? Ouais. Gégé, t'en étais au problème de décharger. Donc, t'as certains routiers qui sont obligés de vider leur camion, d'autres, non. Pourquoi ? Parce que quand ils arrivent, ils se mettent hackés, ils sont dans leur cabine et ils dorment. Ouais, mais pour... Oh là là ! Pour le problème de la douche, Gégé, ils font comment, les routiers ? Parce qu'il y a un lit à l'arrière du camion, mais il n'y a pas de douche. Non, mais ça...
Ça, pour les douches et tout ça, ils s'arrêtent dans... Bon ! Je réponds à Chut. Ça, pour cette histoire de se laver, ils peuvent s'arrêter dans des aires de repos. Il y a des douches, spécialement, qui sont dans les aires de repos, qui peuvent se laver et tout. Ouais, mais ils ne se lavent pas souvent, du coup. Si, si, si, si, si. Et je voulais savoir si, toi, pourquoi, depuis que t'avais arrêté le métier, t'avais quand même gardé des manières de routier, quoi ?
Même si t'es plus dans le métier, je veux dire, tu transpires encore beaucoup et tu ne te laves pas souvent et tu décharges pas mal. Non, non, mais attends, je transpire beaucoup parce que là, il n'y a même plus de ventilation dans les studios, je ne sais pas pourquoi. Ils ont déménagé la ventile, hein. Ouais, mais là, ça devient inadmissible. Euh... Gérard ? Ouais. Gérard, il y a le vrai canard vissé sur l'IRC qui te demande pourquoi les routiers pissent sur le long des routes et pas sur les aires de repos. Attends, attends. Ça, c'est complètement faux.
Euh... Ouais. Non, non, non, non, non, non. Chute, tu t'es, chute, tu t'es. C'est une anecdote. Non, non, mais je réponds. Je peux prévenir tout de suite, là. Je réponds à canard vissé que c'est faux qu'il n'y ait aucun routier qui s'arrête sur les bandes d'arrêt d'urgence. Non, non, non, non, non. Les bandes d'arrêt d'urgence, ça fait pourquoi ? Pour les arrêts d'urgence. Alors, vas-y, vas-y. Le mec, il n'était pas arrêté sur la bande d'arrêt d'urgence, il était garé en triple fil sur l'autoroute et donc, il y pissait. C'est ça. Tu ne prendras pas les...
Tu ne prends pas les gens pour des cons, toi ? Non, mais c'est réel. Non, tu les laisses. C'est réel. Que transporte un routier en fin de journée ? Que transporte un routier en fin de journée ? Que transporte un routier en fin de journée ? Que transporte un routier en fin de journée ? Oui, oui. Gérard, tu m'excites avec tes moustaches. Ta gueule ! Tu m'excites avec tes moustaches. C'est n'importe quoi, Gégé, je vais répondre. Gérard, tu m'excites avec tes moustaches. Vas-y, jouis. Oui, oui, oui, Gérard. Gégé. Chute, chute, chute.
Vas-y. Je voulais te dire qu'un routier, après avoir déchargé toute la journée, à mon avis, à la fin de la journée, il est vide, quoi. Oui, mais... Il t'enrôde un sec. Ah, attends, là. Pour toi, il est vide. Ah oui, il est vide. Il t'enrôde un sec. Moi, je pense qu'à mon avis, il repart recharger pour aller vider quelque part d'autre. Ah non, il faut qu'il s'arrête, quand même. Non, non, mais attends. Tu ne peux pas décharger si tu ne récupères pas au moins un quart d'heure ou une demi-heure entre deux décharges. Non, non, mais attends, ce n'est pas un quart d'heure ou une demi-heure. Tu t'épuies si tu ne fais pas une petite pause. Ce n'est pas un quart d'heure.
Une demi-heure qui prend, c'est deux heures de repos maximum. Tu vois, donc il faut bien se reposer entre deux décharges. Maximum. OK. OK. Alors, n'importe quoi ? Oui, à part transporter des dindons et des cachalots, je ne vois pas ce qui... Bon, alors, n'importe quoi, c'est terminé. Ce n'est pas méchant. Dindons et cachalots, moi, je t'emmerde. Ce n'est pas pour toi, Gégé. Moi, je t'emmerde. Mais je te kiffe. Je t'emmerde. Hop, terminé pour lui. Bon, allez, hop, au standard. Hop. Non, non, mais c'est bon pour lui. Allez, chute.
Standard. C'est pas chute, hein. Merci, c'est chute qui a dit ça. Oh, gamin. Bon, Gégé, c'est bon. Voilà. Voilà. Lui, c'est terminé. Au revoir. Au revoir. Alors, chute. Ah, ben non, je viens de te répondre, Gégé. Je viens de te répondre, mon Gégé. Ah, tu viens de répondre ? Ah, oui, oui. Coup de loup. Tu répètes la question, s'il te plaît ? Allez. Alors, c'est la dernière fois que je répète la question. Que transporte un routier en fin de journée ? Gérard ? Oui. En attendant, il y a un rainbow, le vacancier sur l'IRC, qui te demande quand tu étais routier,
t'as été attaqué par le gang des chasseurs de routiers sur l'autoroute. Non. Des mecs qui volent les cargaisons. Ouais. Ça, c'est vrai, ça s'est produit en Russie, je crois. Il y a un routier qui s'est fait... qui s'est fait agresser. Ils lui ont piqué carrément son camion, plus la cargaison, carrément. Ouais, ouais, ouais. Ça coûte cher, un camion ? Un camion, je peux te dire une chose, c'est dommage qu'on n'aille pas,
tous là, les routiers, mais un camion, ça vaut plus de 150 000 francs. C'est vrai ? Carrément ? 150 000 francs ? 150 000, hein. Ah bah, ça va. C'est pas trop cher, hein. Ouais, bah, attends, ça dépend, ça dépend ce que tu prends comme camion, hein. Donc, euh... Oui, Rigo ? Excuse-moi, j'avais éteint mon micro. Sinon, il y a Chantelor qui te demande comment fait un routier, puisque tu disais qu'ils s'arrêtent pas... ils s'arrêtent qu'aux aires de repos pour faire leurs besoins, mais comment ils font quand ils ont la diarrhée et qu'ils sont dans leur camion ?
Ben, ils peuvent s'arrêter, mais dès qu'ils trouvent une aire de repos, hein. Ben, ça, justement, c'est des questions... Elles vont venir après, les questions, j'ai l'impression qu'internet, ils ont des questions... Non, non, non, non, non, non, non. Attends, euh... Fildar, c'est moi qui... C'est mes débats, donc c'est moi qui commande. Ok. Donc, euh... Là, pour te dire une chose, en fin de compte, on va... Oh ! Oh, t'es pas dans un salon de thé, là ? Eh ! Oh, on n'est pas dans un salon de coiffure,
c'est papa-maman, là, hein ! Bon, on s'affirme quand je parle un peu. Alors ? J'ai fermé la porte, alors, ouais. Oh, ça veut dire quoi, là ? Vous jettez dehors et c'est tout ? Ok. Vous allez jeter dehors ? Ouais, tu vas voir, tout à l'heure, toi, je vais te kiffer, moi. Je vais te mettre une bombe dans... Moi, je vais te mettre une bombe, tu vas voir. Une bombe de routier, tu vas voir ce que ça donne. Bon, ouais. Alors ? Je vais te faire une petite marque, mais bon... Fais gaffe ! Alors, on était où, nous ? On parlait de quoi, là ? Euh... Des questions, si on est...
Ah, ouais. Ouais, donc, les questions, là, sur Internet, donc, je vous en supplie, répondez aux premières questions, parce que le deuxième... Non, ils répondent pas, ils t'en posent. Bah, ouais, mais c'est la suite. Ça fera le deuxième. Tu vois, il y a Sardine de Marseille qui te demande si t'as déjà posé pour un calendrier de routier. Mais non, mais ça... Ça, là-dessus, non. Moi, je voudrais... Combien qu'on est, maintenant, sur Internet ? Allez.
5288. Oh, ça baissait, là ! Non, non, non. Non, non, non. Non, non, non. 5144, on est. Ah, d'accord. 5200. Ah, d'accord. Euh... Excusez-moi. Ouais ? À la place de n'importe quoi, on accueille Billy. Allô ? Allô, quoi ? Salut, Billy. Salut, Billy. Salut, Billy. Salut, Billy. Salut, Billy. Alors, euh... Bon, la question, que transporte un routier en fin de journée, Billy ? Tu peux répéter la question ? Merde ! Ah, ça va répondre.
Non, non, t'es en antenne, là, connard ! Bon, laissez parler le gamin, là. Allez, le gamin, là, accouche. Ouais, moi, je pense qu'il se transporte des cadeaux pour aider le Père Noël. Hein ? Tu vois pas ? Non, mon ami, je pense pas. Non, je pense que le Père Noël, il va se transporter des cadeaux, et voilà. Non, mais ça va, le mec, avec son klaxon de mariage, tranquille ? Ça, c'est un klaxon de routier, ça, hein ?
Attends, Billy, tu dégages. Ah, Gérard, Gérard, Gérard ! Au revoir, au revoir, au revoir, au revoir, au revoir ! Allez, euh... Coup de loup. Tu peux répéter la question ? Non. Mais Gérard, Gérard, c'est pas pour toi ! Gérard, attendez, parce que Billy a foutu la merde. Oh là là, oh là là, oh là là, Manu ! Gérard ? Manu ! Gérard, calme-toi, il y a Scone sur l'IRC qui te demande si les conducteurs de J9 font partie des routiers. Alors, J9, c'est des véhicules légers.
T'as une tartine ? Non, mais, euh, ça y est, ça... Merci, Cathy. Tu veux une tartine, Gégé ? Tu veux une tartine ou pas ? T'as l'air, je t'en mets tout une tartine, moi ! Tu vas l'avaler ! Ouais, deux, trois tartines, ce serait bien. Tu peux répéter la question ? Oh là là, oh, putain, vous commencez à me casser les couilles, hein ? Allez, on enchaîne. Billy, il a mis la merde, alors on n'a pas entendu. Non, couille de loup ! Ouais, ben, je pense qu'il transporte...
d'autres trucs. Tu peux préciser ? Ben, je sais pas, moi, il a déchargé, après, il remballe d'autres machins, et puis, bah, il continue sa tournée. Ah, ben, voilà, enfin ! Ah, ben, alors ! Voilà, enfin, une bonne question ! Bon, je pense qu'on a une bonne réponse, plutôt, ouais. Ben, ouais ! Ben, voilà ce que j'attendais ! Petit piéton ! Petit piéton ! Gérard, t'es beau ! Ta gueule ! Il peut tout transporter ! Allô ? Ben, je sais pas, moi, n'importe quoi ! Tu te reviens un petit peu ?
Petit piéton, là ? Ouais. C'est quoi, ça ? C'est un gros piéton ! Allez, dégage-la, allez ! Allez, hop ! Hop, hop, hop, hop, hop ! Euh, Jean-Pulle ! C'est beau ! Jean-Pulle ! Ouais, je suis là, je suis là, je suis là ! Eh ben, je sais pas, c'est pas mal ! Oh, non ! Comme un camion ! Allô ? Oh, là, là, là, là, là, là ! Bon, allez, moi, j'attaque le deuxième, hein ! Hop, terminé ! Attends, j'ai un... Ouais, Rigo ! Il y a... Attends, j'ai un... Voilà, c'est Oxyd sur l'IA3.
Qui te demande par où rentre le Père Noël dans les camions, vu qu'il n'y a pas de cheminée ? Le pot, le pot. Par, euh... Au déchagement. Par les portes. Ah, ok. Voilà. Euh, Puldar ! J'aimerais répondre. Puldar ! Il est parti chercher sa tartine. Sinon, Gérard, il y a Turcontine sur l'IA3 qui te demande pourquoi tous les routiers sont-ils vulgaires ? Euh, pourquoi que les routiers sont tous vulgaires, t'en as certains, mais pas tous. Donc, euh... Oui, mais pourquoi ? Non, non.
Non, non, il y a... Tous les routiers ne sont pas vulgaires, ça, c'est faux. Ouais, mais pourquoi ils sont vulgaires ? Non, non, non, non, non, non. C'est faux ! Non, non, il y a... Non, mais tu dis pas non quand je te demande pourquoi. Pourquoi ils sont vulgaires ? Voilà. En fin de compte, euh... On n'a jamais été vulgaires vis-à-vis des gens. Non, mais est-ce que vous êtes grossier, alors ? Euh... C'est quoi ? Est-ce que vous êtes grossier ? Euh... Dans quel sens que tu veux... Non, parce qu'il y a aussi le pape, le vrai pape, sur l'IA3, qui me dit que...
Un routier, quand tu le regardes, il fait une sale gueule, toujours. Au feu rouge ou sans être en route. Ouais, non, mais attends. On a toujours l'impression qu'un routier, c'est malheureux. Bah ouais. C'est vrai ou pas ? Bah, pourquoi ? Bah, bien sûr, ils sont malheureux. Pourquoi ? Parce qu'ils passent trop de temps sur les routes. Non, mais c'est leur métier. Bah oui, mais... De toute manière, tout le monde a... Comme je l'ai dit, euh... Dans... Dans un best-of, dans ton livre. Non, non, dans un best-of, chacun... Chacun fait... Bois midi à sa porte. Le routier, il a choisi de faire...
Faire ça, c'est son boulot. Donc... Faux ! Oh, putain, mais t'as gueule à toi ! J'ai rien dit ? Donc, euh... Les routiers... Ouais. Ont choisi leur boulot, c'est leur... C'est leur métier. Maintenant, s'ils veulent pas faire ça, bah... Ils le font parce qu'ils peuvent rien faire d'autre. Ouais, mais attends. Un routier, s'il choisit, c'est sa vocation. S'il choisit de faire ça, c'est sa vocation. Ouais, donc... Un routier, pour moi, c'est quelqu'un de...
Qui est né pour faire de la route. Qui est né pour faire de la route, dans un sens, si tu veux, oui. Mais, en fin de compte, il peut très bien changer, après. Si ça, il peut plus, il peut changer. Ah, il peut faire quoi, des chemins ? Non, mais... Il peut... Il peut changer. Il peut... Il peut se retrouver employé de bureau ou animateur radio. Ah, oui. Comme moi. Ah, oui. Voilà. T'as gueule. Donc, on s'écoute. Euh... Oh, c'est bon. Euh... Oui, alors...
Il y a Nassim qui te demande pourquoi tous les routiers ont-ils une moustache ? Si oui, est-ce que cela leur sert d'airbag ? Non. Alors, tous les routiers... Il y a des routiers qui ont des moustaches, mais ça leur sert pas d'airbag pour... Quand ils ont un accident. Donc, voilà la réponse. Sinon, il y a Sardine sur l'IRC qui dit que comme tous les routiers sont des pédés, est-ce que les lesbiennes ont le droit d'être routières ? Ah... Une bonne question. Alors, tous les routiers ne sont pas des pédés. Déjà, une pour commencer.
Non. Non. Ça, c'est faux. C'est faux. C'est faux, c'est faux, c'est faux. Voilà, c'est tout. Euh... On s'écoute. Ah, tu m'as posé une question avant quand même qu'il réfléchisse. Alors, que pensez-vous ? Pensez-vous que les routiers sont des vieux cochons ? Non, monsieur. Allez, on s'écoute. Non, non, non. Ah, bah, non, mais vas-y. Ben, couche. Mais ça, mais ton boulot, au lieu de bouffer, là, il devrait être fait. Il devrait être fait.
Les numéros de téléphone, l'Internet... Donc, alors, vous pouvez toujours nous appeler au 0870 5000 et 0803 75 000. Non, non, non. C'est pas ça du tout. Quoi ? Dis les numéros correctement. On les dit pas. Attends, je les dis pas. Je les dis pas, abruti. Non, mais les dis pas. Tu dis n'importe quoi. C'est pas ça, le bon numéro. Dis le bon numéro. Quoi ? C'est 0870 5000 et 0803 75 000 ? Non, 0803 08 5000. Eh ben, alors ? Eh ben, t'as qu'à les annoncer, toi. Ben, tu me donnes ta paye.
Et Rigo vous attend. Et Rigo, tu peux nous dire combien qu'on est, là ? Ouais, dis-le, dis-le. Ça monte, ça monte. 5 432. Ouais. Aïe, aïe, aïe. J'ai l'impression qu'avant 4 heures du matin, on va aller à 10 000. C'est faux ! Oh, arrête. 4 heures, j'ai fait une barbe, ça va être faux. Alors, on s'écoute les petits poussins avec des verres dans la raie et on se retrouve tout de suite après.
Vous venez d'écouter les petits poussins avec... Des verrues. Des verrues dans la raie. Et vous êtes toujours sur pleine radio. Il est 2h19 du matin. Donc, joyeux Noël à tous. Malgré qu'on ne l'a pas assez annoncé. Ah oui, peut-être que je ne l'ai pas assez dit. J'ai dit au moins 200 fois déjà. Ah ouais, mais alors, c'est normal. Donc, ouais, tu voulais dire quoi ? Je voulais dire qu'à la place de Billy, que t'as dégagé sauvagement, on accueille Marcel et c'est un routier.
Ah, enfin ! Marcel, bonsoir. D'accord. Salut, Marcel. Bonsoir, c'est bon. Salut, Marcel. Salut, bien. Le 27 ? Oui. Ok. Je t'appelle. Eh, qui c'est qui regarde les textes avoués, là ? Non, mais tu le calmes, là, ou quoi ? J'ai rien à calmer, moi. Non, mais ça va pas. Alors, la question... Ouais. Gérard. Allez, hop.
Oh là là ! 5 630,2. Et je salue Ice-T. Ok. Eh ben, on salue tous les gens. Eh, bousclez un peu, là. Il en manque 500, là. On salue tous les gens ? Ok. Alors, on salue... Non, mais... On salue Seb, on salue Tony. On salue... Non, il n'est pas là, il est à Lille. C'est marrant, on le salue quand même. On salue Acta, on salue Canard WC, Chamicha, Chand, Chocapic, Lisenne, Geoffroy, Ouls, Ice-T, je viens de le citer,
Le Pape, Malcolm X, Le Vrai, Ressuscité, Miss Lover, Nassim, No Live, Paradox, Sardine, Scorpion, Shun, Symbol, Thanatos, Ben non, c'est... Ça sert à rien, mais bon, c'est pas grave. Titos, Turpentine, Zirt, Keneda, Steph, Redox, Olio, Acide, Inc. Ça y est, c'est bon. C'est bon, Régo. C'est bon, ça y est. Ouais. C'est Marcel. Il y a quelque chose que je comprends pas. Ouais, vas-y. Sur mon ordinateur, je tape www.fr,
mais je n'arrive pas à aller sur le Channel Fun Radio. Alors, le Channel Fun Radio, c'est www.frfunradio. D'accord ? Merci, merci. Ok. D'accord. Alors, en de bon entendeur, salut, si tu veux pas participer au débat. Mais bien sûr que si, mais c'était juste pour me renseigner. Bah, et t'es qui, toi ? Je suis Marcel. Bon, bah alors... Alors, pensez-vous que les routiers sont de vieux cochons ? On va demander, ben...
Ouais, bah écoute, moi, je suis tout à fait d'accord pour dire que c'est des gros pervers. Ouais. Je crois qu'on peut pas nier quand même que ça se tignole dans les cabines. Et tout à l'heure, il y avait le pape, je crois, sur Internet qui demandait pourquoi il faisait la grimace. Bah, tout simplement parce qu'ils sont concentrés sur leur banlette, c'est tout. D'accord. Ok. Euh... Couille de loup ? Ouais, moi, je pense qu'il y en a plein, ouais. Il faut les voir, ils roulent toute la journée, alors forcément... Non, mais tu peux préciser le point de ta pensée ?
Oui. La façon de ma pensée, oui, c'est qu'il y en a. Jérôme ? Euh... Oui, Rigo ? Ouais, il y a Sardine de Marseille sur l'IRC qui te demande si tu peux faire une pause parce qu'il voudrait aller aux toilettes et qu'il a pas la radio aux toilettes. Copyright, copyright. Non, non, euh... Non, non. Pause caca. Non, non, il y a pas de pause. C'est plus de pause, là. Là, la prochaine pause, c'est pas avant 3h. Euh... Non, 2h30, 3h moins le quart, à peu près. Et c'était de qui, le copyright ? Oh, mec, je sais pas, je comprends pas. Bon, ok. C'est pas grave. Euh...
Ouais. Euh... Petit Tétron ? Ouais, moi, je trouve que c'est les plus délicieux et à mon avis, ils ont des photos pernos dans leur camion. Ouais. Non, moi, je te démends. Je démends ! Non, Gégé, Gégé. C'est qui ? C'est Mortel. Ouais, bah, pour l'instant, c'est pas toi que je m'adresse. Euh... J'en pulle. J'en pulle une fois, j'en pulle deux fois, j'en pulle trois fois. Au revoir ! Il est là, Gérard. Il est là, si tu croyais. Non, non, si tu croyais pas, tu l'entendrais.
Eh, Gérard, crie pas, tu fais mal aux oreilles. Ouais, bah, si tu te fais mal aux oreilles, t'es avec un wetman ? Non, non, non. Non ? T'es avec la main de ma soeur dans la chouette dans ce web ? Ouais... Tu t'en t'en pulls et on cule ta soeur ? Ok, le comique. Alors, j'en pulle. Euh... Bah, je suis d'accord. D'accord. Alors, toi, t'es d'accord sur la question ? C'est tout ce que t'as à me dire ? Euh... Bah, ouais, je suis d'accord avec toi. Ah, bah, c'est bien. Ah, bah, Sardine. C'est bien, si t'es d'accord. Sardine. Sardine.
Ouais, Sardine. Ouais, ça fait un moment que je gueule parce que j'étais pas à l'antenne. Ouais. Euh... Ouais, je pense que oui. Je pense que ce sont des gros dégueulasses et qu'ils mettent plein de poupées espagnoles dans leur... Je sais de quoi je parle. Euh... Tu peux préciser le point que t'as pensé ? Bah... En tant qu'agent de l'OT, quand ils prennent leur retrait chez eux, ils mettent des poupées espagnoles sur leur armoire. Et... Voilà. Alors, Marcel ?
D'ailleurs, je vais faire aller CTX avec la simile. Il y a tout le monde qui te salue, hein. Non, mais... Tu réponds à la question, s'il te plaît. Bah, en fait... Ouais, bon... Faut pas dire que les routiers sont des pervers. Bon, moi, j'ai quelques magazines. Mais, euh... Ça va pas à plus de 400 pignoles par jour. Donc, voilà, quand même, hein. Au revoir. Le 28, sinon. Ouais, non, mais... Je t'écoute. Il y en a un tout à l'heure... Il y en a un tout à l'heure qui va se prendre une bouteille de coca, ça va lui faire tout drôle.
Il va prendre facilement dans la gueule, ouais. Hein ? J'aime pas, Gégé. J'aime pas, Fildar. Gérard, est-ce que t'as mangé le pâté qu'un auditeur t'a offert, là ? Mais qu'est-ce que ça peut te foutre, à toi ? Non, non, parce que j'ai pas... Combien gagne un routier en euros ? N'importe quoi ! Combien gagne un routier en euros ? N'importe quoi ! Manu ! C'est la dernière fois que je te demande de faire ton boulot ! Ok. Sinon, tu sais ce que tu fais.
Tu prends tes clics et tes claques, et tu vas avoir ton bébé rose. D'accord. Ok ? Ok. Et on va mettre Sandi à ta place au standard. Ok, mais je commence à ronger, alors. Ouais. Ouais, tu peux, tu peux. C'est de la place, c'est de la place. Tu peux, tu peux. Tu peux commencer à ronger, si ça va pas. C'est de la place, Manu. Non, non, mais tu peux. Attends, attends, merde, le Sandi, d'accord ? C'est de la place, Manu. Ouais, bah attends, toi, tu dégages. Le boulot mystère. Allez, hop. C'est quoi ? Faut vider le studio, là, si t'as bien le rang. Ouais, bah, tu peux commencer à ronger.
Bah ouais. Ouais, bah, t'inquiète pas. Tu peux commencer, là. C'est la table. Manu, Manu, Manu. Eh, Manu. Ouais. Tu peux commencer à ronger, je crois. Je suis en train, je suis en train. Tu vas dégager vite fait, bien fait. Enlevez la table dans le couloir, vite. Tu vas vite fait dégager. Ouais, ouais. J'ai l'impression. Ouais. Vite fait, vite fait, hein. Vite, vite, vite. Vite, parce qu'on va mettre Sandi, là. Non, non. Fais de la place, alors. Combien gagne un euro ?
Un euro en routier. Combien gagne un routier en euro ? Sandrine. Sandrine. Je sais pas très bien, en fait. Déjà, je connais pas très, très bien ton salaire de routier, donc en euro, je peux pas trop convertir, en fait. Ouais. Alors, je vais te dire une chose, que l'euro, il est à 6,50. Ouais. D'accord ? C'est faux. Oh là là. 6,50. C'est pas moi qui dis ça. Arrête d'halluciner un peu. Toi, tu commences à me les gonfler.
Ouais. Donc, Sandrine ? 6,50, tu dis mieux. Alors, le euro, il est à 6,50, hein, Gérard. Oui, il y a Titeuf. Il y a Titeuf sur l'IRC qui te demande dans quel pays il paye en euros. Ah ouais ? Non, mais ça va, toi, si t'as envie de bailler. Non, tu te bailles pas, je fais ah oui. Non, mais attends, parce que j'ai pas trop compris la question. Rigo, tu peux me la... C'est bizarre que Gérard comprenne pas les questions. On te demande.
Dans quel pays on paye en euros ? Ben, pour l'instant, l'euro, d'une part... Bon, toi, tu... Tu t'écrases ? D'accord. Ok. Hein ? Pour l'instant, l'euro, il sort qu'à partir de... Ben, nulle part. De 6 jours. Non, putain que... Toi, t'éteins ton micro, je te dis que... Je te dis que tu prends tes clics, etc., que tu passes, tu vas voir ton bébé rose. Ok. Et tu nous fais pas fier. Hein ? Hein ? Donc, l'euro sort pas avant 6 jours.
En fait, au début de l'année. Il sort au début de l'année 99. Ouais. C'est-à-dire, pour le premier janvier 99, ce qui va se produire, c'est qu'on va avoir des pièces euros, mais on n'aura pas encore les billets. Parce que les billets sont... Ta gueule ! Merci. Donc, je disais, donc, ça va être en pièces. Les billets seront pas avant 2001, voire 2002.
Donc, pour l'instant, ça sera uniquement qu'en pièces. D'accord. En plus, il y a Canada qui dit que c'est faux. Ah bon ? Ben... N'importe quoi ! Eh ben, dans ces cas-là, si c'est faux, qu'elle écoute bien les informations, parce qu'ils arrêtent pas d'en parler, que maintenant, c'est dans moins de 6 jours qu'on a l'euro en pièces. Les billets sont pas avant l'an 2000 ou 2002. Bon, enfin. Bref. Passons. Donc, Marcel. Ouais.
Euh... J'étais en antenne. J'étais là, et Manu m'ont calmé, ou je sais pas qui c'était. Non, mais pour l'instant, tu réponds à la question. J'ai pas très bien entendu la question. Justement. Tu réponds... C'est bien que le salaire d'un routier en euros, c'est ça ? Voilà. Ok. Alors, ouais, ça doit être... Ça doit tourner aux alentours de 15, 20 euros, un truc comme ça. Voilà, Michel. Alors, c'est tout à deux. Il y en a un qui entend le calmer, c'est Manu, parce que...
Pour l'instant, il est en train de... Il est en train de me foutre du boulot de merde ! Qu'est-ce qu'il fait, Manu ? Bon, Manu... Non, il disait les routes viraux rouges, les heures à éviter, tout ça, pour les bouchons. Ça, c'est du journal en plein débat, ça. Ça doit être intéressant. Non, mais... À part ça, après... Après, il va dire... Ah ouais, mais moi, j'ai fait du bon boulot ! C'est faux. Alors que c'est faux. Pour l'instant, il me fait de la merde. Non, c'est bien, moi, je trouve. Ouais, et qui c'est qui met sa musique, là ? Bah, je sais pas, j'ai pas d'auditeur à l'antenne. Ah non, t'as pas d'auditeur. Ah non, regarde.
J'ai pas d'auditeur. Euh, Jean-Pul ! C'est moi, c'est moi ! Jean-Pul ! Y a personne, là. Non, c'est Manu. Regarde, là, c'est là. Regarde. C'est bien Gérard. C'est bien Manu. Il y avait encore de la musique. Non, y a pas de musique. C'est faux. Ils sont tous en attente, là. C'est faux. Tu vois ? Alors, tu me les mets tous en l'air et tu le suites. Allez, Manu ! Mais pas des auditeurs, la musique. Allez, Manu ! Je suis perdu. Jean-Pul ! Oui, c'est moi. Donc, c'est à toi. Euh...
- Je vais lui donner un coup de Tokyo Rock en revanche. - 4 euros ? - Oui, mais c'est peu. - A mon avis, ça m'étonnerait. - Ah non ! - Eh, attends, je veux dire... - J'en pull. - Toujours le même rang au gueule. - J'en pull. - Oui, ça sûrement. - Je veux dire une chose, ça m'étonnerait qu'un routier gagne 4 euros, parce que pour 4 euros, il travaillera pour un mec. Bon. Allez, hop. Qu'est-ce qu'il y a, Gérard ?
- Tu vas où, là ? - C'est de la faute de fil d'or, encore. - Mais non, justement, reviens. - Gérard ! - Oh là là. - Gérard, attends. Bon, Manu. - Ouais ? - C'est toi qui as foutu la merde, tu vas le chercher. - Ah, ça va pas, non ? - Attends, tu vas le chercher, toi tu combles. Ouais, parce que là, regarde, maintenant, on est... Bon, les auditeurs, vous patientez, parce que là, en fait, Gérard est sorti du studio, je sais pas pourquoi. Attendez, alors, voilà. Non. Assis. Assis, il y a Max et il y a Gérard. Allez, Gérard, assis-toi. Mais tu le calmes. J'ai rien fait, là, Gérard. Non, non, tu ne fais rien, tu ne fais même pas ton boulot.
- C'est terminé, toi. - Non, mais c'est bon, je vais le calmer. Je vais le calmer deux secondes. - Non, non, non. - Manu. Tu me demandes de le calmer, tu me demandes pas de le zapper. - Non, non, mais ouais, est-ce qu'on continue pas... - Alors, donc, silence. - Ah... - Manu. Manu. - Ouais, ouais, ouais. - Tu te calmes. - OK. - Non, mais... - Merci, chef, de m'avoir calmé comme ça. Et là, il va être calmé, hein. - Mais je m'en fous, moi. - Mais je m'en fous.
Je m'en fous, il fait son boulot correctement. Pas du tout. - Mais pense au gamin défavorisé qui écoute la radio. - Mais attends, il fait un boulot de merde. - T'as fait un peu la cité de la 94. - Mais attends. - T'es un peu le père Noël du 94, toi. - Mais attends, il fait du boulot de merde, là. - C'est quoi, ce bordel ? - Attends, c'est quoi, ce bordel ? Il me reprend même pas. Les auditeurs, il met une message de non. - Non, c'est pas vrai, j'ai un routier. - Non, non, non, il n'y a pas de routier.
- Non, c'est tout. - C'est un routier. - Non, c'est un boulot au standard. - Ouais, allez, au standard. - Ah non. - Hop, t'envoies la musique, t'es terminé. Allez, hop, passe ça. Allez, hop, deux heures et demie, pause. Comme on est là jusqu'à quatre heures, pause. Hop, pause. - Pause quoi ? - Pause, je t'envoie un vide. Je t'ai même pas donné le disque. Tu mets, tu l'annonceras. Allez, on fait une pause, allez, hop. On l'annonce après, alors. T'envoies, et c'est tout. D'accord.
Alors, donc, on récupère... Qu'est-ce qu'on a ? On a Marcel, pute, couille de loup, petit téton, j'en pue les cendrilles. Bon, vous fermez un peu vos jolles. Oh, putain, mais ta gueule, toi, mec, Gérard ! Oh, Gérard ! Tu me commences à me casser les couilles. Putain, mais, tu vas les calmer, là. Oh, merde !
Gérard ! Gérard ! Gérard ! Je t'avais dit, Fildar, avec tes pauvres sons, là, j'ai tout le monde. T'as l'air égoûté, gros. T'as l'air chiant, les auditeurs, parce que tu regardes les Gérards avec tes mauvais, quoi. T'abuses, Fildar, ils nous ont fait calmer, là. Fildar, honnêtement, arrête. Non, mais... Ah, il y a rien... Ils arrêtent pas, là, mais ils vont te calmer, ou quoi ? Bah oui. Calmez-vous, les auditeurs. Non, non, arrête, arrête. Mais donc, tu l'as arrêté, ok ? Mais quoi ? J'ai rien fait.
Mais ça, ça, là ! C'est quoi, là ? Ça, là ! Mais c'est un remix ! Oui, alors ? Oui, alors, c'est toi qui t'amuses ? Mais non, c'est un remix ! C'est un remix de... C'est des remixes de la... Mais moi, ils sont très calmes, les auditeurs, là. Non, mais ça, je vais écouter, je vais surveiller. Le premier qui fait une merde, il jarte ! Ça, c'est un general ball ! Mais attends, mais ça, c'est pas quand même connecté. 5 940, j'aimerais bien qu'on arrive à... 5 60, merde ! 5 60 pour arriver à 6 000, Gérard, à 6 000.
Allez ! Allez, bonsoir ! Ça, moi, je commence à me... Rêve de ta gueule ! Ça a tombé par aussi ! Rêve ! Rêve ! Rêve ! Rêve ! Rêve ! Rêve ! Rêve ! C'est bon, Gérard, t'es prêt, là ? Parce que ça fait une heure. Non, il a pété son casque ! Oh, merde ! Non, c'est bon, il le répare, Gérard. Tu peux quand même commencer à...
reprendre les auditeurs avec tout ça, hein. Ouais, ouais. C'est bon ? T'es là, encore, hein. Ah, là, là, là. Non, merci, chef. Ah, ouais. Alors, là, je vais écouter le premier qui fait une merde, il dégage. Non, mais là, maintenant, il... Non, mais je vais surveiller Manu, je vais surveiller Manu. Parfait. Eh, ensuite... Oui, je suis là, oui. Petit Delou. Oui ? Petit Téton. Eh, mais merde ! Mais ils sont là, Gérard. Mais attends, il n'est pas là, Jean-Pulle ! Qu'est-ce que tu demandes ?
Ah, tu ne m'as pas appelé ? Non, à peine ! Tu me prends pour un con, là ! Ça va pas, non ? Mais non ! Sandrine ! Oui, je suis là. Et Marcel ! Alors, la question... Pensez-vous que les routiers sont des vieux cochons ? Oui. Alors, qui, oui ? Banane. Banane. Attends, Banane, elle sort d'où ? Eh, je ne sais pas quoi elle a à faire ! Je ne sais pas, je ne sais que la tête à gueule !
Je ne sais pas d'où elle sort. Putain de merde ! Je ne sais pas. Tu me fais quoi, là ? Ben, je ne sais pas d'où elle sort, je vais la trouver. Putain, c'est pas vrai, hein ! Eh, merde, il y a un gourmet qui l'a mangé. C'est le pâle qui t'a mangé. Voilà ! Voilà, continue ! Laissez-le dire des conneries ! Ben, c'est toi qui... Oh, tu mets ta cop, là ! Arrête ! Hop, allez hop ! C'est écrasé !
C'est quoi, ce bordel ? C'est quoi ? C'est quoi, ce bruit ? Quel bruit ? Ouais, tu as mon cul ! Oui, je suis là. Salut à tout le 94 et spéciale dédicace à la prison de freine. Allez, hop, dégage pour toi ! Hop, au revoir ! Hop, au revoir ! Ok, Michel ! Hop, écoute Delou ! Ouais ? Tu réponds ? Eh ben, ouais. J'ai déjà répondu tout à l'heure. Non, tu n'as pas répondu à la question. Si ! Alors, ouais,
ce sont tous des cochons, ouais. D'accord. Et pourquoi c'est des cochons ? C'est ça qu'il faut savoir. Est-ce qu'il y a un cochon ? Oui, c'est un cochon. Mais pourquoi il est cochon ? Ben, parce qu'ils n'ont rien d'autre à foutre dans leur camion toute la journée. Ouais. Ils pensent à ça. Ouais, mais attends. Tu crois que le routier, il n'en a pas marre de passer... Je ne crois pas en penser au cul, mais je ne crois pas, non. Non, mais tu crois qu'il n'en a pas marre d'être sur la route constamment 24 heures sur 24 en pensant...
{{AutoCat}}
ii1fhtv7pjs0rwyv6461ru2dslz9yb8
Dictionnaire de philosophie/Déterminisme
0
83064
768383
767286
2026-06-23T03:57:25Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768383
wikitext
text/x-wiki
{{DicoPhilo|Déterminisme|lecture=oui}}
Le '''déterminisme''' désigne la thèse philosophique selon laquelle chaque événement est complètement déterminé par des conditions ou des causes antérieures conformément à des lois. Dans sa formulation classique, le déterminisme soutient que l'état présent du monde, conjugué aux lois de la nature, détermine un futur unique<ref>Pierre-Simon de Laplace, ''Essai philosophique sur les probabilités'', Paris, Courcier, 1814, p. 2-3</ref>. Cette conception implique que, si l'on connaissait exhaustivement l'état actuel de l'univers et les lois qui le régissent, on pourrait en principe prédire tous les événements futurs et reconstituer tous les événements passés.
Le déterminisme se distingue du fatalisme, qui postule que les événements se produiront nécessairement indépendamment de toute action, et du nécessitarisme, qui exclut toute alternative possible<ref>Gilles Deleuze, ''Spinoza et le problème de l'expression'', Paris, Minuit, 1968, p. 97-115</ref>. Il ne faut pas non plus confondre déterminisme et prédictibilité : un système peut être déterministe sans être prévisible en pratique, comme le montrent les découvertes de la théorie du chaos<ref>Henri Poincaré, ''Science et méthode'', Paris, Flammarion, 1908, p. 68-72</ref>.
== Histoire du concept ==
=== Origines antiques ===
Les racines du déterminisme remontent à l'Antiquité. Les philosophes présocratiques recherchaient déjà les causes premières des phénomènes naturels. Démocrite (vers 460-370 av. J.-C.) développa un atomisme selon lequel tous les événements résultent du mouvement et de la collision des atomes dans le vide, obéissant à une stricte nécessité<ref>Jean-Paul Dumont, ''Les Présocratiques'', Paris, Gallimard, collection « Bibliothèque de la Pléiade », 1988, p. 821-823</ref>.
Le stoïcisme antique constitue la première élaboration systématique d'une doctrine déterministe. Pour les stoïciens, le ''fatum'' (destin) désigne l'enchaînement causal universel qui régit le cosmos. Zénon de Citium (334-262 av. J.-C.) et Chrysippe de Soles (280-206 av. J.-C.) défendirent l'idée que tous les événements sont liés par une chaîne causale ininterrompue<ref>Victor Goldschmidt, ''Le système stoïcien et l'idée de temps'', Paris, Vrin, 1953, p. 89-112</ref>. Chrysippe distingua toutefois les causes antécédentes, auxiliaires et prochaines des causes principales et parfaites, nuançant ainsi le déterminisme stoïcien et permettant de préserver une forme de responsabilité morale<ref>Cicéron, ''De fato'', § 41-43, texte établi et traduit par Albert Yon, Paris, Les Belles Lettres, 1950</ref>.
Aristote (384-322 av. J.-C.) développa une théorie de la causalité qui structure la pensée occidentale jusqu'à l'époque moderne. Il distingue quatre types de causes : la cause matérielle (ce dont une chose est faite), la cause formelle (l'essence ou la forme de la chose), la cause efficiente (le principe du mouvement ou du changement) et la cause finale (le but en vue duquel la chose existe)<ref>Aristote, ''Physique'', II, 3, 194b16-195b30, traduction par Pierre Pellegrin, Paris, Flammarion, 2000</ref>. Cette quadripartition enrichit considérablement la réflexion sur le déterminisme en montrant que l'explication causale ne se réduit pas à la seule causalité efficiente.
=== Moyen Âge et Renaissance ===
Au Moyen Âge, la question du déterminisme se reformule dans le cadre de la théologie chrétienne. Comment concilier la toute-puissance et l'omniscience divines avec la liberté humaine et la contingence du monde créé ? Saint Augustin (354-430) développa une doctrine de la prédestination qui affirme que Dieu connaît de toute éternité ceux qui seront sauvés, sans pour autant nier la responsabilité morale des hommes<ref>Augustin d'Hippone, ''De libero arbitrio'', livres I-III, vers 391-395, traduction par François-Joseph Thonnard, Paris, Desclée de Brouwer, 1952</ref>.
Thomas d'Aquin (1225-1274) tenta de résoudre cette tension en distinguant la providence divine, qui ordonne toutes choses selon un plan éternel, du destin, qui désigne l'ordre des causes secondes dans le monde créé. Pour Thomas, la providence divine n'exclut pas la contingence de certains événements ni la liberté du vouloir humain<ref>Thomas d'Aquin, ''Somme théologique'', Ia, q. 22-23, traduction par Albert Raulin, Paris, Éditions du Cerf, 1984</ref>.
=== L'âge classique ===
Le XVIIe siècle marque un tournant décisif avec l'émergence de la science moderne. René Descartes (1596-1650) défend une conception mécaniste de la nature physique : les corps matériels obéissent à des lois strictement déterministes comparables à celles d'une machine<ref>René Descartes, ''Principes de la philosophie'', IV, articles 188-203, Paris, Adam et Tannery, tome IX, 1904</ref>. Cependant, Descartes préserve la liberté humaine en distinguant radicalement l'âme pensante (''res cogitans''), douée de libre arbitre, du corps étendu (''res extensa''), entièrement soumis au mécanisme. Cette solution dualiste soulève toutefois la question difficile de l'interaction entre l'âme et le corps.
Baruch Spinoza (1632-1677) développa un déterminisme plus rigoureux encore. Pour Spinoza, tout dans la nature découle nécessairement de l'essence de Dieu, substance unique dont toutes choses sont des modes. « Dans la nature, il n'y a rien de contingent, mais tout est déterminé par la nécessité de la nature divine à exister et à opérer d'une manière certaine »<ref>Baruch Spinoza, ''Éthique'', I, proposition 29, traduction par Charles Appuhn, Paris, Garnier-Flammarion, 1965</ref>. Ce déterminisme absolu n'exclut cependant pas la liberté humaine, que Spinoza redéfinit comme connaissance de la nécessité qui nous détermine. L'homme libre est celui qui comprend les causes qui l'affectent et agit selon la nécessité de sa propre nature plutôt que d'être passivement déterminé par des causes extérieures<ref>Spinoza, ''Éthique'', IV, préface et propositions 66-73</ref>.
Gottfried Wilhelm Leibniz (1646-1716) proposa une position plus nuancée avec son principe de raison suffisante : « Jamais rien n'arrive sans qu'il y ait une cause, ou du moins une raison déterminante »<ref>Leibniz, ''Monadologie'', § 32, in ''Principes de la nature et de la grâce'', édition par André Robinet, Paris, Presses Universitaires de France, 1954</ref>. Leibniz distingue cependant la nécessité absolue (logique) de la nécessité hypothétique ou morale. Les vérités contingentes, qui concernent le monde créé, ne sont pas logiquement nécessaires même si elles sont déterminées par des raisons suffisantes. Dieu a créé le meilleur des mondes possibles, mais d'autres mondes restaient logiquement possibles. Cette distinction permet à Leibniz de concilier déterminisme et contingence.
=== Le déterminisme laplacien ===
L'expression la plus célèbre du déterminisme scientifique se trouve chez Pierre-Simon de Laplace (1749-1827). Dans son ''Essai philosophique sur les probabilités'' (1814), Laplace écrit : « Une intelligence qui, pour un instant donné, connaîtrait toutes les forces dont la nature est animée et la situation respective des êtres qui la composent, si d'ailleurs elle était assez vaste pour soumettre ces données à l'analyse, embrasserait dans la même formule les mouvements des plus grands corps de l'univers et ceux du plus léger atome : rien ne serait incertain pour elle, et l'avenir, comme le passé, serait présent à ses yeux »<ref>Laplace, ''Essai philosophique sur les probabilités'', op. cit., p. 2-3</ref>.
Cette « intelligence », appelée plus tard « démon de Laplace », représente l'idéal d'un déterminisme universel fondé sur la mécanique newtonienne. Pour Laplace, les lois de Newton, qui gouvernent le mouvement des corps célestes avec une précision remarquable, s'appliquent à l'ensemble de l'univers physique. Le déterminisme laplacien repose sur plusieurs postulats : la réversibilité temporelle des lois physiques, la possibilité en principe d'une connaissance exhaustive des conditions initiales, et la calculabilité de tous les états futurs du système à partir de ces conditions<ref>Émile Meyerson, ''Identité et réalité'', Paris, Vrin, 1908, p. 241-267</ref>.
== Le déterminisme dans les sciences ==
=== Physique classique et remises en question ===
La mécanique classique de Newton, qui domine la physique du XVIIIe et du XIXe siècle, incarne le paradigme déterministe. Les équations du mouvement permettent en principe de calculer la trajectoire future d'un système à partir de sa position et de sa vitesse initiales. Cette réussite spectaculaire de la physique mathématique sembla confirmer l'idéal laplacien.
Toutefois, Henri Poincaré (1854-1912) découvrit à la fin du XIXe siècle que certains systèmes dynamiques, bien que strictement déterministes, manifestent une extrême sensibilité aux conditions initiales. Dans son étude du problème des trois corps en mécanique céleste, Poincaré montra qu'une modification infinitésimale de l'état initial peut conduire à des trajectoires radicalement différentes<ref>Poincaré, ''Les méthodes nouvelles de la mécanique céleste'', tome III, Paris, Gauthier-Villars, 1899, p. 389-394</ref>. Cette découverte, qui préfigure la théorie du chaos, établit une distinction cruciale entre déterminisme et prévisibilité.
La théorie du chaos, développée dans la seconde moitié du XXe siècle, confirme et généralise les intuitions de Poincaré. Un système chaotique est déterministe – ses états futurs sont univoquement déterminés par son état présent et les lois qui le gouvernent – mais imprévisible en pratique car une incertitude infinitésimale sur les conditions initiales croît exponentiellement avec le temps<ref>Edward Lorenz, « Deterministic Nonperiodic Flow », ''Journal of the Atmospheric Sciences'', vol. 20, 1963, p. 130-141</ref>. Le célèbre « effet papillon » illustre cette sensibilité : le battement d'ailes d'un papillon au Brésil pourrait en principe déclencher une tornade au Texas.
=== Mécanique quantique et indéterminisme ===
La mécanique quantique, élaborée dans les années 1920, remet plus fondamentalement en question le déterminisme classique. Werner Heisenberg (1901-1976) établit en 1927 le principe d'indétermination (ou d'incertitude) : il est impossible de mesurer simultanément et avec une précision arbitraire la position et la quantité de mouvement d'une particule<ref>Werner Heisenberg, « Über den anschaulichen Inhalt der quantentheoretischen Kinematik und Mechanik », ''Zeitschrift für Physik'', vol. 43, 1927, p. 172-198</ref>. Cette impossibilité n'est pas seulement technique ou épistémique mais ontologique : selon l'interprétation standard (dite de Copenhague), la particule ne possède pas simultanément une position et une vitesse précises avant la mesure.
Plus généralement, la mécanique quantique introduit un élément probabiliste irréductible. L'équation de Schrödinger, qui décrit l'évolution de la fonction d'onde, est certes déterministe, mais la fonction d'onde ne représente que des probabilités de résultats de mesure. Le « collapse » ou réduction de la fonction d'onde lors de la mesure apparaît comme un processus fondamentalement aléatoire<ref>Erwin Schrödinger, « Die gegenwärtige Situation in der Quantenmechanik », ''Naturwissenschaften'', vol. 23, 1935, p. 807-812, 823-828, 844-849</ref>.
L'interprétation de ces phénomènes quantiques reste controversée. Albert Einstein, sceptique face à l'indéterminisme quantique, déclara : « Dieu ne joue pas aux dés »<ref>Max Born, ''Physique atomique'', Paris, Dunod, 1962, p. 346</ref>. Il proposa avec Boris Podolsky et Nathan Rosen le paradoxe EPR (1935) pour montrer que la mécanique quantique était incomplète et qu'il devait exister des « variables cachées » rétablissant le déterminisme<ref>Albert Einstein, Boris Podolsky et Nathan Rosen, « Can Quantum-Mechanical Description of Physical Reality Be Considered Complete? », ''Physical Review'', vol. 47, 1935, p. 777-780</ref>. Cependant, les travaux de John Stewart Bell (1964) et les expériences d'Alain Aspect (1982) ont montré que les variables cachées locales ne peuvent pas rendre compte des corrélations quantiques, confortant l'interprétation indéterministe standard<ref>Alain Aspect, Philippe Grangier et Gérard Roger, « Experimental Realization of Einstein-Podolsky-Rosen-Bohm Gedankenexperiment: A New Violation of Bell's Inequalities », ''Physical Review Letters'', vol. 49, 1982, p. 91-94</ref>.
D'autres interprétations de la mécanique quantique préservent néanmoins une forme de déterminisme. L'interprétation de de Broglie-Bohm postule des variables cachées non-locales qui rendent le processus entièrement déterministe. L'interprétation des mondes multiples d'Everett suppose que tous les résultats possibles d'une mesure se réalisent dans des branches parallèles de l'univers, préservant ainsi un déterminisme global bien que chaque observateur n'expérimente qu'une branche particulière<ref>Hugh Everett III, « 'Relative State' Formulation of Quantum Mechanics », ''Reviews of Modern Physics'', vol. 29, 1957, p. 454-462</ref>.
=== Déterminisme biologique ===
En biologie, la question du déterminisme se pose sous des formes spécifiques. Le déterminisme génétique soutient que les caractères d'un organisme sont entièrement déterminés par son patrimoine génétique. Cette position, popularisée au début du XXe siècle, doit être considérablement nuancée. Si les gènes jouent un rôle crucial dans le développement et le fonctionnement des organismes, les facteurs épigénétiques, environnementaux et stochastiques interviennent également de manière déterminante<ref>Richard Lewontin, ''La triple hélice. Les gènes, l'organisme, l'environnement'', Paris, Seuil, 2003, p. 45-78</ref>.
Charles Darwin (1809-1882) introduisit un élément de contingence dans l'explication biologique avec sa théorie de l'évolution par sélection naturelle. Les variations sur lesquelles opère la sélection apparaissent de manière en partie aléatoire, et le cours de l'évolution dépend des circonstances environnementales changeantes. Stephen Jay Gould a souligné le rôle de la contingence historique en montrant que si l'on « rejouait le film de l'évolution », le résultat serait probablement très différent<ref>Stephen Jay Gould, ''La vie est belle. Les surprises de l'évolution'', Paris, Seuil, 1991, p. 51-82</ref>.
== Déterminisme et libre arbitre ==
La question du rapport entre déterminisme et libre arbitre constitue l'un des problèmes centraux de la philosophie morale et de la métaphysique. Si tous nos actes sont déterminés par des causes antérieures, comment pouvons-nous être tenus pour moralement responsables ? Trois positions principales structurent le débat.
=== Libertarianisme ===
Le libertarianisme (à ne pas confondre avec la doctrine politique du même nom) soutient que le libre arbitre est incompatible avec le déterminisme et que nous possédons effectivement un libre arbitre. Cette position implique un certain indéterminisme : pour être véritablement libre, l'agent doit avoir le pouvoir de choisir entre des alternatives réelles, ce qui suppose que ses actes ne sont pas entièrement déterminés par des causes antérieures<ref>Roderick Chisholm, « Freedom and Action », in Keith Lehrer (dir.), ''Freedom and Determinism'', New York, Random House, 1966, p. 11-44</ref>.
Thomas d'Aquin, dans sa doctrine du libre arbitre (''liberum arbitrium''), affirme que la volonté humaine n'est pas nécessitée par les objets particuliers qu'elle rencontre, bien qu'elle soit nécessairement attirée par le bien en général<ref>Thomas d'Aquin, ''Somme théologique'', Ia-IIae, q. 10, a. 1-2</ref>. Descartes considère le libre arbitre comme une évidence immédiate de la conscience et comme « une des plus communes notions qui soient en nous »<ref>Descartes, ''Principes de la philosophie'', I, article 39</ref>. Il distingue cependant une « liberté d'indifférence » (le pouvoir de choisir entre des alternatives sans raison) qu'il juge inférieure, d'une liberté éclairée où l'intelligence guide la volonté vers le vrai et le bien.
Kant, dans la ''Critique de la raison pratique'' (1788), défend une forme sophistiquée de libertarianisme. Il distingue le monde phénoménal, où règne la causalité naturelle déterministe, du monde nouménal des choses en soi. En tant qu'être nouménal, l'homme possède une causalité par liberté qui échappe au déterminisme naturel. Cette liberté transcendantale est la condition de possibilité de la moralité : « Tu dois, donc tu peux »<ref>Emmanuel Kant, ''Critique de la raison pratique'', Ak. V, 30, traduction par François Picavet, Paris, Presses Universitaires de France, 1943</ref>.
La difficulté principale du libertarianisme réside dans l'intelligibilité d'une causalité libre. Comment concevoir une cause qui ne soit pas elle-même déterminée par des causes antérieures ? Un acte purement indéterminé ne serait-il pas simplement aléatoire plutôt que libre ?
=== Déterminisme dur ===
Le déterminisme dur (ou incompatibilisme déterministe) affirme que le déterminisme est vrai et que, par conséquent, le libre arbitre est une illusion. Cette position fut défendue par le Baron d'Holbach (1723-1789) dans son ''Système de la nature'' (1770). D'Holbach soutient que l'homme, comme toute chose dans la nature, est entièrement soumis aux lois du mouvement et de la nécessité. L'impression de liberté résulte simplement de notre ignorance des causes qui nous déterminent<ref>Paul-Henri Thiry d'Holbach, ''Système de la nature'', partie I, chapitre XI, Londres, 1770</ref>.
À l'époque contemporaine, certains neuroscientifiques comme Benjamin Libet ont mené des expériences suggérant que les décisions conscientes sont précédées d'une activité cérébrale inconsciente qui les détermine. Ces résultats ont été interprétés par certains comme une preuve empirique de l'absence de libre arbitre<ref>Benjamin Libet, « Do We Have Free Will? », ''Journal of Consciousness Studies'', vol. 6, n° 8-9, 1999, p. 47-57</ref>.
Le déterminisme dur fait face à de sérieuses objections. D'un point de vue pratique, il semble impossible de vivre en ne se considérant pas comme responsable de ses actes. D'un point de vue théorique, la thèse même du déterminisme dur paraît auto-réfutante : si nos croyances sont entièrement déterminées par des processus causaux, pourquoi accorder plus de crédit à la croyance dans le déterminisme qu'à la croyance dans le libre arbitre ?
=== Compatibilisme ===
Le compatibilisme soutient que libre arbitre et déterminisme sont compatibles. Cette position, défendue notamment par Thomas Hobbes, John Locke et David Hume, définit la liberté non pas comme l'absence de détermination causale, mais comme l'absence de contrainte externe et la conformité de l'action à la volonté de l'agent<ref>David Hume, ''Enquête sur l'entendement humain'', section VIII, traduction par André Leroy, Paris, Aubier, 1947, p. 115-148</ref>.
Pour Hobbes, un homme est libre lorsqu'il agit selon ses désirs sans être empêché par des obstacles extérieurs, même si ses désirs eux-mêmes sont déterminés par des causes antérieures<ref>Thomas Hobbes, ''Léviathan'', chapitre XXI, traduction par François Tricaud, Paris, Sirey, 1971</ref>. Hume distingue la liberté (''liberty''), qui consiste à agir selon sa volonté, de la nécessité (''necessity''), qui désigne l'uniformité causale dans la nature. La liberté humaine ne contredit pas cette nécessité mais en est même la condition : c'est parce que les actions humaines sont régulières et prévisibles qu'elles peuvent manifester le caractère de l'agent et fonder la responsabilité morale.
Le compatibilisme contemporain a développé des analyses plus sophistiquées. Harry Frankfurt distingue les désirs de premier ordre (désirer quelque chose) des désirs de second ordre (désirer avoir ou ne pas avoir un certain désir). La liberté consisterait à agir selon des désirs de premier ordre que l'on s'approprie réflexivement par des désirs de second ordre<ref>Harry Frankfurt, « Freedom of the Will and the Concept of a Person », ''The Journal of Philosophy'', vol. 68, n° 1, 1971, p. 5-20</ref>.
Peter van Inwagen a cependant formulé l'« argument de la conséquence » contre le compatibilisme : si le déterminisme est vrai, nos actions sont les conséquences nécessaires du passé lointain et des lois de la nature ; or nous n'avons aucun pouvoir sur le passé ni sur les lois de la nature ; donc nous n'avons aucun pouvoir sur nos actions<ref>Peter van Inwagen, ''An Essay on Free Will'', Oxford, Clarendon Press, 1983, p. 55-105</ref>. Cet argument, bien que contesté, continue de nourrir le débat.
== Autres formes de déterminisme ==
=== Déterminisme psychologique ===
Le déterminisme psychologique soutient que nos états mentaux, nos décisions et nos actions sont déterminés par des processus psychiques antérieurs selon des lois psychologiques. Sigmund Freud (1856-1939) développa une forme de déterminisme psychique en affirmant que les actes manqués, les rêves et les symptômes névrotiques, loin d'être accidentels, sont déterminés par des contenus psychiques inconscients<ref>Sigmund Freud, ''Psychopathologie de la vie quotidienne'', chapitre XII, traduction par Samuel Jankélévitch, Paris, Payot, 1922</ref>. Pour Freud, « rien dans l'esprit n'est arbitraire ou indéterminé » : tout phénomène psychique a une cause.
Le behaviorisme radical de Burrhus Frederic Skinner (1904-1990) poussa le déterminisme psychologique plus loin encore en réduisant le comportement humain à des réponses conditionnées par l'environnement et les renforcements. Pour Skinner, la notion même de liberté intérieure est une fiction qu'il faut abandonner<ref>B.F. Skinner, ''Par-delà la liberté et la dignité'', Paris, Robert Laffont, 1972, p. 31-58</ref>.
=== Déterminisme social et historique ===
Le déterminisme social affirme que les pensées et les comportements des individus sont largement déterminés par leur appartenance sociale, leur milieu et leur éducation. Émile Durkheim (1858-1917) défendit l'idée que les faits sociaux possèdent une réalité propre et exercent une contrainte sur les individus. Le taux de suicide, par exemple, ne s'explique pas principalement par des facteurs psychologiques individuels mais par le degré d'intégration et de régulation sociales<ref>Émile Durkheim, ''Le Suicide. Étude de sociologie'', Paris, Félix Alcan, 1897, livre II, chapitres II-VI</ref>.
Pierre Bourdieu (1930-2002) développa le concept d'« habitus » pour désigner les dispositions durables et transposables qu'acquièrent les individus par leur socialisation et qui orientent leurs pratiques. L'habitus fonctionne comme un « système de dispositions durables et transposables » qui structure les actions sans les déterminer de manière strictement mécanique<ref>Pierre Bourdieu, ''Le sens pratique'', Paris, Minuit, 1980, p. 88-89</ref>.
Karl Marx (1818-1883) formula un déterminisme historique en soutenant que l'histoire humaine est gouvernée par des lois objectives liées aux modes de production économique. « Ce n'est pas la conscience des hommes qui détermine leur être, c'est inversement leur être social qui détermine leur conscience »<ref>Karl Marx, ''Contribution à la critique de l'économie politique'', préface de 1859, in ''Œuvres. Économie'', tome I, Paris, Gallimard, collection « Bibliothèque de la Pléiade », 1965, p. 273</ref>. Cependant, Marx n'excluait pas l'action révolutionnaire consciente, et son déterminisme laissait place à la praxis transformatrice.
== Critiques et limites du déterminisme ==
Le déterminisme a fait l'objet de nombreuses critiques philosophiques. Henri Bergson (1859-1941) contesta le déterminisme au nom de la durée vécue et de la liberté créatrice. Dans l'''Essai sur les données immédiates de la conscience'' (1889), Bergson montre que le déterminisme applique au temps vécu les catégories de l'espace et mécanise artificiellement la vie psychique<ref>Henri Bergson, ''Essai sur les données immédiates de la conscience'', Paris, Félix Alcan, 1889, chapitre III</ref>. L'acte libre, pour Bergson, émane de la personnalité tout entière et ne peut être prédit car il crée du nouveau.
Jean-Paul Sartre (1905-1980) affirma plus radicalement encore la liberté humaine : « L'homme est condamné à être libre »<ref>Jean-Paul Sartre, ''L'existentialisme est un humanisme'', Paris, Nagel, 1946, p. 37</ref>. Pour Sartre, l'existence précède l'essence, ce qui signifie que l'être humain n'a pas de nature déterminée mais se définit par ses choix. Toute forme de déterminisme constitue une forme de « mauvaise foi », une tentative illusoire d'échapper à la responsabilité de nos choix.
Karl Popper (1902-1994) critiqua le déterminisme scientifique en montrant que même dans un univers strictement déterministe, certains systèmes sont en principe imprévisibles. De plus, Popper argumenta que le déterminisme universel est auto-réfutant car il rendrait impossible toute argumentation rationnelle : si nos croyances sont entièrement déterminées par des processus physiques, elles ne peuvent prétendre à la vérité<ref>Karl Popper, ''L'univers irrésolu. Plaidoyer pour l'indéterminisme'', Paris, Hermann, 1984, p. 87-129</ref>.
== Enjeux contemporains ==
Le déterminisme reste une question vive dans plusieurs domaines contemporains. En neurosciences cognitives, les avancées dans la compréhension des mécanismes cérébraux soulèvent la question de savoir si nos décisions conscientes ne sont pas simplement des épiphénomènes de processus neuronaux déterministes. Cette interrogation a des implications pour le droit pénal et la notion de responsabilité<ref>Michael Gazzaniga, ''Le libre arbitre et la science du cerveau'', Paris, Odile Jacob, 2013, p. 158-201</ref>.
En intelligence artificielle et en éthique des algorithmes, le développement de systèmes déterministes capables de prendre des décisions complexes pose la question de leur responsabilité et de leur contrôle. Les systèmes d'apprentissage automatique, bien que déterministes en principe, peuvent manifester des comportements imprévisibles et difficilement interprétables.
La question écologique contemporaine réactive également le débat sur le déterminisme. Les modèles climatiques, bien que fondés sur des équations déterministes, révèlent la complexité et la sensibilité du système climatique. Le débat sur l'anthropocène interroge la capacité humaine à infléchir les déterminismes naturels et sociaux qui conduisent au réchauffement climatique.
== Notes et références ==
{{references|colonnes=2}}
== Bibliographie ==
* Aristote, ''Physique'', livres I-II, traduction par Pierre Pellegrin, Paris, Flammarion, 2000
* Henri Bergson, ''Essai sur les données immédiates de la conscience'', Paris, Félix Alcan, 1889
* Pierre Bourdieu, ''Le sens pratique'', Paris, Minuit, 1980
* Cicéron, ''De fato'', texte établi et traduit par Albert Yon, Paris, Les Belles Lettres, 1950
* René Descartes, ''Principes de la philosophie'', Paris, Adam et Tannery, tome IX, 1904
* Émile Durkheim, ''Le Suicide. Étude de sociologie'', Paris, Félix Alcan, 1897
* Victor Goldschmidt, ''Le système stoïcien et l'idée de temps'', Paris, Vrin, 1953
* Stephen Jay Gould, ''La vie est belle. Les surprises de l'évolution'', Paris, Seuil, 1991
* David Hume, ''Enquête sur l'entendement humain'', section VIII, traduction par André Leroy, Paris, Aubier, 1947
* Emmanuel Kant, ''Critique de la raison pratique'', traduction par François Picavet, Paris, Presses Universitaires de France, 1943
* Pierre-Simon de Laplace, ''Essai philosophique sur les probabilités'', Paris, Courcier, 1814
* Richard Lewontin, ''La triple hélice. Les gènes, l'organisme, l'environnement'', Paris, Seuil, 2003
* Karl Marx, ''Contribution à la critique de l'économie politique'', in ''Œuvres. Économie'', tome I, Paris, Gallimard, collection « Bibliothèque de la Pléiade », 1965
* Henri Poincaré, ''Science et méthode'', Paris, Flammarion, 1908
* Karl Popper, ''L'univers irrésolu. Plaidoyer pour l'indéterminisme'', Paris, Hermann, 1984
* Jean-Paul Sartre, ''L'existentialisme est un humanisme'', Paris, Nagel, 1946
* Baruch Spinoza, ''Éthique'', traduction par Charles Appuhn, Paris, Garnier-Flammarion, 1965
* Thomas d'Aquin, ''Somme théologique'', traduction par Albert Raulin, Paris, Éditions du Cerf, 1984
* Peter van Inwagen, ''An Essay on Free Will'', Oxford, Clarendon Press, 1983
== Articles connexes ==
* Causalité
* Chaos (théorie du)
* Compatibilisme
* Contingence
* Fatalisme
* Indéterminisme
* Libre arbitre
* Mécanique quantique
* Nécessité
* Responsabilité morale
* Stoïcisme
[[Catégorie:Métaphysique]]
[[Catégorie:Philosophie de l'action]]
[[Catégorie:Éthique]]
[[Catégorie:Épistémologie]]
{{Autocat}}
ic261ge91x9a0ifn3tz7majzk2hn5lg
Dictionnaire de philosophie/Divertissement
0
83065
768389
760078
2026-06-23T03:58:25Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768389
wikitext
text/x-wiki
{{DicoPhilo|Divertissement|lecture=oui}}
Le divertissement désigne l'ensemble des activités par lesquelles l'être humain se détourne de certaines préoccupations fondamentales de son existence. Tiré du latin ''divertere'' (détourner), le concept acquiert une dimension philosophique centrale au XVII{{e}} siècle avec Blaise Pascal, qui en fait une catégorie d'analyse de la condition humaine<ref>Pascal, Blaise, ''Pensées'', 1670, fragment Lafuma 133 (Brunschvicg 168)</ref>. Loin de se limiter aux loisirs et aux amusements, le divertissement englobe pour Pascal toutes les activités humaines par lesquelles l'individu fuit la confrontation avec sa misère existentielle et sa condition de mortel.
Cette notion traverse toute l'histoire de la philosophie occidentale et permet d'interroger le rapport que l'humanité entretient avec le temps libre, le travail, la finitude et les formes contemporaines de la consommation culturelle. Elle constitue un outil critique pour penser les mécanismes d'esquive et d'oubli par lesquels les sociétés et les individus s'accommodent de leur condition, tout en révélant les structures de domination qui organisent ces pratiques.
== Le divertissement pascalien : fuite devant la misère de l'homme ==
=== La critique de la condition humaine ===
Dans les ''Pensées'', Pascal élabore une anthropologie sombre de l'existence humaine. L'homme se caractérise par sa misère constitutive : créature déchue, privée de Dieu, confrontée à sa finitude, il ne peut supporter la conscience lucide de sa condition<ref>Pascal, Blaise, ''Pensées'', fragment Lafuma 168 (Brunschvicg 139)</ref>. L'ennui surgit dès que l'homme cesse de s'agiter : « Rien n'est si insupportable à l'homme que d'être dans un plein repos, sans passion, sans affaire, sans divertissement, sans application. Il sent alors son néant, son abandon, son insuffisance, sa dépendance, son impuissance, son vide »<ref>Pascal, Blaise, ''Pensées'', fragment Lafuma 622</ref>.
Cette impossibilité de demeurer au repos dans une chambre révèle la structure existentielle du divertissement. L'homme ne supporte pas la confrontation avec lui-même, car celle-ci l'expose à l'angoisse de sa propre vacuité et à la conscience de sa mortalité. Le divertissement apparaît alors comme une nécessité anthropologique : « Les hommes n'ayant pu guérir la mort, la misère, l'ignorance, ils se sont avisés pour se rendre heureux de n'y point penser »<ref>Pascal, Blaise, ''Pensées'', fragment Lafuma 133</ref>.
=== La logique du désir et la quête du bonheur ===
Pascal développe une analyse fine du mécanisme du divertissement à travers l'exemple du chasseur et du joueur. Ce qui importe n'est pas l'objet que l'on poursuit (le lièvre, l'argent), mais l'activité elle-même qui permet d'échapper à l'ennui. « On aime mieux la chasse que la prise » : le processus de recherche offre une occupation qui détourne l'esprit de ses maux, tandis que la possession de l'objet désiré ramène immédiatement à l'ennui<ref>Pascal, Blaise, ''Pensées'', fragment Lafuma 136</ref>. Le divertissement fonctionne ainsi sur un double mensonge : l'individu se persuade qu'il recherche un objet alors qu'en réalité, il fuit sa propre condition ; et il croit trouver le bonheur dans la possession, alors que seule l'agitation le console provisoirement.
Cette analyse s'étend à toutes les conditions sociales. Les grands de ce monde, malgré leur richesse et leur pouvoir, ne sont pas moins dépendants du divertissement que les pauvres. Au contraire, leur vie entière est organisée pour qu'ils ne se retrouvent jamais seuls avec eux-mêmes : « Le roi est environné de gens qui ne pensent qu'à divertir le roi et à l'empêcher de penser à lui »<ref>Pascal, Blaise, ''Pensées'', fragment Lafuma 142</ref>. La grandeur apparente masque une misère plus profonde : dès que le courtisan perd sa fonction, dès que le magistrat se retire dans ses terres, l'ennui surgit et révèle le néant de l'existence vouée au divertissement.
=== L'ambiguïté du divertissement ===
Pascal ne condamne pas simplement le divertissement. Il en reconnaît la fonction consolatrice : « La seule chose qui nous console de nos misères est le divertissement, et cependant c'est la plus grande de nos misères »<ref>Pascal, Blaise, ''Pensées'', fragment Lafuma 171</ref>. Cette formule paradoxale exprime l'ambiguïté constitutive du phénomène. Le divertissement est nécessaire pour rendre l'existence supportable, mais il empêche l'homme de prendre conscience de sa condition véritable et, par conséquent, de chercher le seul remède authentique : la religion. Sans divertissement, l'homme sombrerait dans le désespoir ; mais en se divertissant, il s'éloigne de la seule vérité qui pourrait le sauver.
Cette perspective théologique distingue Pascal de la plupart des penseurs ultérieurs du divertissement. Pour l'auteur des ''Pensées'', la misère de l'homme s'explique par sa nature corrompue depuis la chute d'Adam, et seule la grâce divine peut restaurer sa dignité perdue. Le divertissement devient alors un symptôme du péché, une fuite devant Dieu autant que devant soi-même.
== Le loisir dans l'Antiquité : ''skholè'' et ''otium'' ==
=== La conception grecque du loisir ===
La notion de divertissement au sens moderne contraste fortement avec la conception antique du temps libre. Dans la Grèce ancienne, la ''skholè'' (σχολή) désigne le loisir comme condition de l'activité intellectuelle et politique la plus noble<ref>Aristote, ''Politique'', VIII, 3, 1337b-1338a</ref>. Loin d'être une fuite ou une occupation futile, le loisir représente le moment où l'homme libre peut se consacrer à la philosophie, à la contemplation et à la participation aux affaires de la cité. Le mot grec signifie littéralement « l'arrêt », le repos qui permet la réflexion, et c'est de cette racine que dérive le terme « école » (''skholè''), marquant ainsi le lien essentiel entre éducation et temps libéré des nécessités matérielles.
Cette valorisation du loisir repose sur une hiérarchie sociale stricte : seuls les citoyens libres, déchargés du travail productif grâce au labeur des esclaves et des métèques, peuvent accéder à cette forme supérieure d'existence. Le travail (''askholia''), formé avec le préfixe privatif ''a-'', se définit négativement comme privation de loisir. L'homme véritablement libre n'est pas celui qui ne travaille pas, mais celui qui dispose du temps nécessaire pour se consacrer aux activités qui définissent l'humanité : la connaissance, la délibération politique, la contemplation du beau et du vrai<ref>Aristote, ''Éthique à Nicomaque'', X, 7, 1177a-1178a</ref>.
=== L’''otium'' romain et ses ambiguïtés ===
Les Romains reprennent cette conception sous le terme d’''otium'', mais avec une nuance significative. Dans la Rome républicaine, l’''otium'' s'oppose au ''negotium'' (le négoce, l'affaire, littéralement la négation de l'otium). Si l’''otium'' conserve une valeur positive comme temps de la réflexion et de la culture, il reste subordonné aux devoirs civiques. L'idéal romain valorise l'action politique et militaire (''vita activa'') : l’''otium'' n'est légitime qu'après l'accomplissement de ses obligations envers la cité<ref>Cicéron, ''De Officiis'', I, 69-71</ref>.
Sénèque, dans ses lettres et traités, tente de réhabiliter l’''otium'' comme condition de la sagesse stoïcienne, mais cette défense témoigne déjà d'une suspicion croissante à l'égard du loisir, perçu comme potentiellement dangereux pour l'ordre social. Avec l'Empire et la décadence des institutions républicaines, l’''otium'' des élites se transforme progressivement en oisiveté improductive, tandis que le peuple est maintenu dans la soumission par le « pain et les jeux » (''panem et circenses'') dénoncés par Juvénal<ref>Juvénal, ''Satires'', X, 77-81</ref>. Cette évolution préfigure les analyses modernes du divertissement comme instrument de domination sociale.
== Le divertissement à l'âge de l'industrie culturelle ==
=== La critique marxiste de l'aliénation ===
La conception du divertissement se transforme profondément avec l'avènement du capitalisme industriel. Karl Marx, bien qu'il ne traite pas directement du divertissement, fournit les outils conceptuels permettant d'en penser la fonction dans les sociétés capitalistes à travers sa théorie de l'aliénation. Dans les ''Manuscrits de 1844'', Marx analyse comment le travail salarié dépossède le travailleur de son activité productive, qui devient une simple marchandise<ref>Marx, Karl, ''Manuscrits économico-philosophiques de 1844'', in ''Œuvres'', t. II, Économie, Paris, Gallimard, Bibliothèque de la Pléiade, 1968, p. 57-65</ref>. Le travailleur ne s'appartient plus : il n'a de contrôle ni sur le produit de son travail, ni sur le processus de production, ni même sur sa propre activité vitale.
Cette aliénation du travail engendre une séparation radicale entre le temps contraint de la production et le temps libre. Mais ce dernier n'est pas véritablement libre : il est structuré par les besoins de reconstitution de la force de travail et par les formes de consommation que le système capitaliste organise. Le divertissement devient alors une fonction nécessaire au système : il permet aux travailleurs de reconstituer leur capacité productive tout en les maintenant dans une passivité qui empêche toute remise en cause de l'ordre établi. Marx note dans ''Le Capital'' que le capitaliste cherche à extraire le maximum de plus-value en allongeant la journée de travail au-delà de la durée nécessaire à la reproduction de la force de travail<ref>Marx, Karl, ''Le Capital'', Livre I, chapitre VIII, « La journée de travail », Paris, PUF, coll. « Quadrige », 1993 , p. 257-354</ref>. Le temps libre apparaît comme un enjeu de lutte entre le capital et le travail.
=== Horkheimer et Adorno : l'industrie culturelle ===
Max Horkheimer et Theodor W. Adorno radicalisent cette analyse dans ''La Dialectique de la raison'' (1947), où ils développent le concept d'« industrie culturelle » (''Kulturindustrie''). Ils montrent comment la production culturelle, soumise aux impératifs de rentabilité et de standardisation, transforme l'art et la culture en marchandises destinées à divertir les masses<ref>Horkheimer, Max et Adorno, Theodor W., ''La Dialectique de la raison. Fragments philosophiques'', trad. Éliane Kaufholz, Paris, Gallimard, 1974 , p. 129-176</ref>. Le cinéma, la radio, les magazines, loin de libérer les esprits, reproduisent les schèmes de domination en offrant des produits standardisés qui ne laissent aucune place à la pensée critique.
L'industrie culturelle ne se contente pas de produire des objets de consommation : elle façonne les désirs et les besoins des individus. « Dans le capitalisme avancé, l'amusement est le prolongement du travail. Il est recherché par celui qui veut échapper au processus du travail automatisé pour être à nouveau en mesure de l'affronter »<ref>Horkheimer et Adorno, ''op. cit.'', p. 150</ref>. Le divertissement n'offre donc aucune échappatoire réelle : il prépare au contraire le retour au travail en maintenant les individus dans un état de régression intellectuelle. La promesse de jouissance qu'offrent les produits culturels est perpétuellement différée : le film érotique ne montre jamais l'acte sexuel, la publicité promet un bonheur qui ne sera jamais atteint par l'achat du produit. Cette frustration permanente maintient les consommateurs dans un état de désir insatisfait qui alimente la logique marchande.
=== Guy Debord et la société du spectacle ===
Guy Debord prolonge cette critique dans ''La Société du spectacle'' (1967). Il y analyse comment le capitalisme contemporain ne se contente plus de produire des marchandises : il produit des images, des représentations qui médiatisent tous les rapports sociaux<ref>Debord, Guy, ''La Société du spectacle'', Paris, Buchet-Chastel, 1967, thèse 4</ref>. « Toute la vie des sociétés dans lesquelles règnent les conditions modernes de production s'annonce comme une immense accumulation de spectacles. Tout ce qui était directement vécu s'est éloigné dans une représentation »<ref>Debord, ''op. cit.'', thèse 1</ref>.
Le spectacle n'est pas un ensemble d'images, mais un rapport social médiatisé par des images. Le divertissement spectaculaire ne s'oppose pas au travail : il en est le complément nécessaire. Il maintient les individus dans une passivité contemplative qui les empêche d'agir et de transformer leurs conditions d'existence. Debord reprend explicitement la critique marxiste du fétichisme de la marchandise : le spectacle est « le stade contemporain du fétichisme de la marchandise », où les relations entre les personnes prennent la forme de relations entre des choses<ref>Debord, ''op. cit.'', thèse 215</ref>. Le divertissement spectaculaire devient ainsi l'opium du peuple moderne, remplaçant la religion dans sa fonction d'illusion consolatrice.
== Figures existentialistes du divertissement ==
=== Kierkegaard : angoisse et désespoir ===
Søren Kierkegaard, bien qu'antérieur à Marx, développe une analyse de l'existence qui permet de penser le divertissement sous un angle existentiel. Dans ''Le Concept de l'angoisse'' (1844) et ''La Maladie à la mort'' (1849), il décrit l'homme moderne comme fuyant devant lui-même à travers les distractions de la vie esthétique<ref>Kierkegaard, Søren, ''La Maladie à la mort'', trad. Paul-Henri Tisseau et Else-Marie Jacquet-Tisseau, in ''Œuvres complètes'', t. XVI, Paris, Éditions de l'Orante, 1971 , p. 167-303</ref>. L'angoisse surgit lorsque l'individu prend conscience de sa liberté et de sa responsabilité. Pour échapper à cette angoisse, l'homme se perd dans la foule, se conforme aux opinions du « On », se divertit dans l'immédiat. Mais cette fuite n'abolit pas l'angoisse : elle la transforme en désespoir, cette « maladie à la mort » qui ronge l'existence inauthentique.
Kierkegaard distingue trois stades de l'existence : esthétique, éthique et religieux. Le stade esthétique, où l'individu recherche le plaisir et le divertissement, est marqué par l'instabilité et l'ennui. Don Juan, le séducteur, incarne cette existence vouée à la quête perpétuelle de nouvelles sensations qui ne comblent jamais le vide intérieur. Le passage au stade éthique, puis religieux, exige un saut qualitatif, une décision qui arrache l'individu à la dispersion du divertissement pour le confronter à sa responsabilité et à sa finitude.
=== Schopenhauer : entre souffrance et ennui ===
Arthur Schopenhauer développe une philosophie pessimiste où l'existence oscille entre la souffrance et l'ennui. Dans ''Le Monde comme volonté et comme représentation'' (1818), il analyse la vie comme manifestation d'une Volonté aveugle et insatiable<ref>Schopenhauer, Arthur, ''Le Monde comme volonté et comme représentation'', trad. Auguste Burdeau revue par Richard Roos, Paris, PUF, 1966 , § 56-59, p. 387-410</ref>. Le désir engendre nécessairement la souffrance puisqu'il est manque, et la satisfaction du désir ne procure qu'un bref apaisement avant de laisser place à l'ennui. « La vie oscille, comme un pendule, de droite à gauche, de la souffrance à l'ennui »<ref>Schopenhauer, ''op. cit.'', § 57, p. 394</ref>.
Pour échapper à cette oscillation, l'homme se livre au divertissement, mais celui-ci n'offre qu'un soulagement illusoire. Schopenhauer écrit : « Se divertir, c'est fuir au mieux possible l'ennui, ce n'est pas être heureux ». Le seul salut authentique réside dans l'ascèse et la contemplation esthétique, qui permettent momentanément de suspendre l'emprise de la Volonté et d'accéder à une forme de repos. Mais ces moments de grâce restent rares et fragiles face à la puissance du vouloir-vivre.
=== Heidegger : authenticité et quotidienneté ===
Martin Heidegger, dans ''Être et Temps'' (1927), reprend et transforme ces thèmes dans le cadre de son analytique existentiale du Dasein (l'être-là, l'existence humaine)<ref>Heidegger, Martin, ''Être et Temps'', trad. François Vezin, Paris, Gallimard, 1986 , § 35-38, p. 223-258</ref>. Le Dasein existe d'abord et le plus souvent sur le mode de la quotidienneté inauthentique : immergé dans le « On » (das Man), il se perd dans les préoccupations du monde environnant, fuit devant lui-même dans l'agitation et le bavardage. Cette fuite n'est pas accidentelle : elle révèle une structure ontologique fondamentale, celle de la déchéance (Verfallen).
L'angoisse peut arracher le Dasein à cette fuite en le confrontant au néant et à sa propre finitude. Dans l'angoisse, le monde familier perd sa signification rassurante et révèle son étrangeté radicale. Le Dasein découvre alors qu'il est jeté dans l'existence sans fondement, qu'il est « être-pour-la-mort ». Cette découverte peut conduire soit à un retour dans la fuite quotidienne, soit à une existence authentique où le Dasein assume sa finitude et se décide pour ses possibilités les plus propres<ref>Heidegger, ''op. cit.'', § 52-53, p. 327-348</ref>. Le divertissement apparaît ici comme la modalité ordinaire de l'existence inauthentique, tandis que la confrontation lucide avec la mort ouvre la possibilité d'une vie authentique.
== Le divertissement dans la société de consommation ==
=== La marchandisation du temps libre ===
Après la Seconde Guerre mondiale, les sociétés occidentales connaissent une expansion sans précédent du temps libre et des industries du loisir. La réduction de la durée du travail, conquise par les luttes ouvrières, ouvre un nouvel espace pour la consommation. Mais ce temps libéré du travail n'est pas véritablement libre : il est colonisé par la logique marchande. Les activités de loisir deviennent des produits à consommer : tourisme de masse, spectacles sportifs, parcs d'attractions, industries du divertissement audiovisuel.
Cette marchandisation répond à une double nécessité du système capitaliste. D'une part, elle offre de nouveaux débouchés pour la production et permet la réalisation de la plus-value. D'autre part, elle maintient les individus dans un état de passivité et de consommation qui empêche toute contestation de l'ordre établi. Les critiques de la société de consommation, de Vance Packard à Jean Baudrillard, ont montré comment les besoins sont fabriqués par la publicité et le marketing, créant un désir perpétuellement insatisfait qui alimente la croissance économique<ref>Baudrillard, Jean, ''La Société de consommation. Ses mythes, ses structures'', Paris, Denoël, 1970</ref>.
=== Les nouvelles formes du divertissement numérique ===
L'avènement d'Internet et des technologies numériques a profondément transformé les formes du divertissement. Les réseaux sociaux, les plateformes de streaming, les jeux vidéo offrent des possibilités de divertissement permanent, accessible à tout moment et en tout lieu. Cette disponibilité constante intensifie la logique du divertissement : il devient de plus en plus difficile de ne pas se divertir, de résister à la sollicitation permanente des écrans et des notifications.
Les entreprises du numérique ont mis au point des techniques sophistiquées pour capter l'attention et maintenir les utilisateurs dans un état d'absorption permanente. Les algorithmes de recommandation, le scroll infini, les notifications poussées exploitent les mécanismes psychologiques de la récompense et de l'addiction. Le « temps de cerveau disponible » que les chaînes de télévision cherchaient à vendre aux annonceurs se trouve désormais capturé avec une efficacité sans précédent. Cette captation de l'attention devient un enjeu économique majeur : l'économie de l'attention transforme le divertissement en instrument d'extraction de valeur.
Les plateformes numériques ne se contentent pas de proposer des contenus : elles collectent en permanence des données sur les comportements des utilisateurs, créant ainsi une surveillance généralisée. Le divertissement devient un mécanisme de contrôle social d'une efficacité redoutable, combinant les fonctions répressives analysées par Michel Foucault avec les mécanismes d'asservissement volontaire par la consommation.
== Critiques et dépassements ==
=== Les limites de la critique du divertissement ===
La critique du divertissement, sous toutes ses formes, présente certaines limites qu'il convient de reconnaître. D'abord, elle peut dériver vers une forme d'élitisme culturel qui méprise les pratiques populaires de loisir au nom d'une conception étroite de la culture légitime. Les analyses d'Adorno sur le jazz ou la musique populaire témoignent de ce risque : elles reconduisent une hiérarchie culturelle qui sert les intérêts des classes dominantes en disqualifiant les cultures populaires comme simples produits abêtissants de l'industrie culturelle.
Ensuite, la critique du divertissement tend parfois à sous-estimer la capacité d'agir des individus et à les réduire au statut de consommateurs passifs manipulés par l'industrie culturelle. Les études de réception ont montré que les publics ne sont pas de simples réceptacles des messages médiatiques, mais qu'ils pratiquent des formes de braconnage, d'appropriation créative et de résistance face aux produits culturels. Il existe des marges de manœuvre, des pratiques de détournement qui ne se réduisent pas à l'aliénation totale.
Enfin, la critique du divertissement peut conduire à une posture de dénonciation stérile qui ne propose aucune alternative concrète. Si toute forme de loisir est suspecte, si le temps libre n'est que la reconduction de la domination sous d'autres formes, que reste-t-il comme possibilité d'existence émancipée ? Cette question exige de penser des formes de loisir qui ne seraient pas soumises à la logique marchande et qui permettraient l'épanouissement authentique des individus.
=== Vers un loisir émancipateur ===
Plusieurs penseurs ont tenté de définir les conditions d'un loisir véritablement libérateur. André Gorz, dans sa ''Critique de la division du travail'' et ses écrits ultérieurs, défend l'idée d'une réduction massive du temps de travail qui permettrait aux individus de développer des activités autonomes, non marchandes, échappant à la logique de l'emploi salarié<ref>Gorz, André, ''Métamorphoses du travail. Critique de la raison économique'', Paris, Galilée, 1988</ref>. Il distingue le temps contraint (travail hétéronome), le temps libre marchandisé (consommation de loisirs) et le temps libéré où s'exercent des activités autonomes choisies pour elles-mêmes.
Cette perspective rejoint les réflexions contemporaines sur le revenu universel et la réappropriation du temps. Si le travail salarié occupe une place démesurée dans l'existence, réduisant le temps libre à une parenthèse de reconstitution de la force de travail, alors la libération exige de transformer radicalement le rapport au travail. Le loisir émancipateur ne peut advenir que dans une société où le temps ne serait plus mesuré et contrôlé par les impératifs de la production capitaliste.
Les expériences d'éducation populaire, de création collective, d'organisation coopérative du temps libre offrent des exemples de ce que pourrait être un loisir authentiquement libérateur. Elles reposent sur des principes d'autogestion, de gratuité, de non-marchandisation qui permettent aux individus de développer leurs capacités sans être soumis à la logique du profit. Ces pratiques, certes marginales, esquissent la possibilité d'un dépassement du divertissement aliéné vers des formes d'activité où l'individu se réalise effectivement dans la création et le partage.
== Conclusion ==
Le concept de divertissement traverse l'histoire de la philosophie comme un analyseur des rapports complexes que l'humanité entretient avec sa propre existence. De la fuite pascalienne devant la misère de la condition humaine à la captation contemporaine de l'attention par les plateformes numériques, le divertissement révèle les mécanismes par lesquels les individus et les sociétés esquivent certaines questions fondamentales tout en reproduisant les structures de domination qui les oppressent.
La critique du divertissement n'implique pas le rejet de toute forme de loisir ou de plaisir. Elle invite à distinguer entre le divertissement comme fuite et oubli de soi, instrument de domination sociale, et le loisir comme condition de l'épanouissement humain, espace d'autonomie et de création. Cette distinction exige une transformation profonde des rapports sociaux de production et de consommation, ainsi qu'un réexamen critique de nos modes de vie. À l'heure où l'industrie du divertissement colonise tous les aspects de l'existence, la reconquête d'un temps véritablement libre constitue un enjeu politique majeur pour toute perspective d'émancipation.
== Notes et références ==
{{references}}
== Bibliographie ==
* Adorno, Theodor W., ''Minima Moralia. Réflexions sur la vie mutilée'', trad. Éliane Kaufholz et Jean-René Ladmiral, Paris, Payot, 1980
* Arendt, Hannah, ''Condition de l'homme moderne'', trad. Georges Fradier, Paris, Calmann-Lévy, 1961
* Baudrillard, Jean, ''La Société de consommation. Ses mythes, ses structures'', Paris, Denoël, 1970
* Debord, Guy, ''La Société du spectacle'', Paris, Buchet-Chastel, 1967
* Gorz, André, ''Métamorphoses du travail. Critique de la raison économique'', Paris, Galilée, 1988
* Heidegger, Martin, ''Être et Temps'', trad. François Vezin, Paris, Gallimard, 1986
* Horkheimer, Max et Adorno, Theodor W., ''La Dialectique de la raison. Fragments philosophiques'', trad. Éliane Kaufholz, Paris, Gallimard, 1974
* Kierkegaard, Søren, ''La Maladie à la mort'', in ''Œuvres complètes'', t. XVI, Paris, Éditions de l'Orante, 1971
* Marx, Karl, ''Le Capital. Critique de l'économie politique'', Livre I, Paris, PUF, coll. « Quadrige », 1993
* Marx, Karl, ''Manuscrits économico-philosophiques de 1844'', in ''Œuvres'', t. II, Économie, Paris, Gallimard, Bibliothèque de la Pléiade, 1968
* Pascal, Blaise, ''Pensées'', éd. Philippe Sellier, Paris, Classiques Garnier, 2010
* Schopenhauer, Arthur, ''Le Monde comme volonté et comme représentation'', trad. Auguste Burdeau revue par Richard Roos, Paris, PUF, 1966
{{Autocat}}
eewtwg28holhgyxtb5h0a197ce1vmoh
Dictionnaire de philosophie/Empédocle
0
83144
768395
767905
2026-06-23T03:59:25Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768395
wikitext
text/x-wiki
{{DicoPhilo|Empédocle|lecture=oui}}
== I. Biographie et contexte historique ==
Empédocle naît à Agrigente (en grec Akragas, en latin Agrigentum, l'actuelle Agrigento) vers 492-490 av. J.-C.<ref>Diogène Laërce, ''Vies et doctrines des philosophes illustres'', VIII, 51-52 ; Apollodore, ''Chronologie'' (''FGrHist'' 244 F 33)</ref>. Les dates exactes de sa naissance et de sa mort demeurent incertaines, les témoignages anciens divergeant sur ces questions fondamentales. La datation communément admise place sa naissance autour de 492-490 av. J.-C., se fondant sur le témoignage d'Aristote rapporté par Simplicius, selon lequel Empédocle naquit peu après Anaxagore, lui-même né vers 500 av. J.-C.<ref>Simplicius, ''Commentaire sur la Physique d'Aristote'', 25, 19 (éd. Diels, ''CAG'' IX) ; Aristote, ''Métaphysique'', I, 3, 984a11</ref>. Cette datation s'accorde avec la victoire olympique remportée par son grand-père, également nommé Empédocle, lors de la 71{{e}} olympiade (496-495 av. J.-C.)<ref>Diogène Laërce, VIII, 51 ; Ératosthène cité par Apollodore</ref>, événement qui permet d'ancrer la famille d'Empédocle dans le temps avec une relative certitude.
La cité d'Agrigente, fondée vers 580 av. J.-C. par des colons venus de Géla, eux-mêmes descendants de Rhodiens et de Crétois, constituait à l'époque d'Empédocle l'une des plus riches et des plus puissantes colonies grecques de Sicile, rivalisant avec Syracuse en splendeur et en influence<ref>Thucydide, ''Histoire de la guerre du Péloponnèse'', VI, 4, 1-4 ; Pindare, ''Pythiques'', XII, 1-2</ref>. Située sur la côte méridionale de la Sicile, entre deux fleuves, l'Hypsos et l'Akragas, la ville s'élevait sur une colline qui lui servait d'acropole naturelle. Pindare la qualifiait de « la plus belle des cités mortelles »<ref>Pindare, ''Pythiques'', XII, 2</ref>, témoignage de l'éclat qu'elle avait acquis au cours du V{{e}} siècle av. J.-C. La fertilité exceptionnelle du territoire environnant, produisant céréales, huile d'olive et vin en abondance, ainsi que l'élevage florissant, avaient contribué à l'enrichissement rapide de la cité. Selon certaines estimations rapportées par Diodore de Sicile, la population atteignait deux cent mille habitants, dont vingt mille citoyens à part entière<ref>Diodore de Sicile, ''Bibliothèque historique'', XIII, 84, 3 (ces chiffres sont considérés comme exagérés par les historiens modernes)</ref>.
Empédocle appartient à une famille aristocratique d'Agrigente, dont la richesse et la notoriété sont solidement établies. Son grand-père paternel, Empédocle, s'était illustré dans les courses de chevaux, remportant la victoire dans l'épreuve du quadrige aux Jeux olympiques de 496 av. J.-C.<ref>Diogène Laërce, VIII, 51 ; Ératosthène cité par Apollodore</ref>. Cette victoire, qui conférait un prestige considérable à toute la famille, témoigne de la fortune dont disposaient les Emménides – le clan auquel appartenait Empédocle<ref>Héraclide du Pont, ''Des maladies'' (''περὶ νόσων''), cité par Diogène Laërce, VIII, 57</ref>. Son père, Méton, joua vraisemblablement un rôle important dans la vie politique agrigentine, participant probablement au renversement du tyran Thrasydée en 472-471 av. J.-C. et à l'établissement d'un gouvernement démocratique<ref>Diogène Laërce, VIII, 63-64 ; Timée de Tauroménion, ''Histoires de Sicile'', livres XI-XII (''FGrHist'' 566 F 93-94)</ref>.
Le contexte politique dans lequel grandit Empédocle se caractérise par une succession de bouleversements majeurs. Après une période de domination du tyran Phalaris (vers 570-554 av. J.-C.), qui s'était rendu célèbre par sa cruauté légendaire, Agrigente connut une phase de gouvernement oligarchique dominé par une « Assemblée des Mille », institution aristocratique regroupant les citoyens les plus fortunés. En 488 av. J.-C., Théron, membre de la famille des Emménides, s'empara du pouvoir et instaura une tyrannie qui dura jusqu'à sa mort en 472 av. J.-C.<ref>Diodore de Sicile, XI, 48-53 ; Hérodote, VII, 165-166</ref>. Le règne de Théron fut généralement considéré comme éclairé, les sources littéraires grecques louant sa sagesse et sa modération<ref>Pindare, ''Olympiques'', II et III</ref>. Allié de Gélon, tyran de Syracuse, Théron contribua de manière décisive à la victoire des Grecs de Sicile sur les Carthaginois à la bataille d'Himère en 480 av. J.-C., victoire qui assura la sécurité et la prospérité d'Agrigente pour plusieurs décennies<ref>Hérodote, VII, 165-167 ; Diodore de Sicile, XI, 20-24</ref>.
À la mort de Théron, son fils Thrasydée (en grec Thrasydaios) lui succéda. Contrairement à son père, Thrasydée se montra violent, despotique et incompétent<ref>Diogène Laërce, VIII, 66 ; Timée, ''Histoires'', livre XIV (''FGrHist'' 566 F 94)</ref>. Déjà gouverneur d'Himère sous l'autorité de son père, il s'était attiré la haine des populations locales par sa brutalité. Devenu maître d'Agrigente, il engagea inconsidérément une guerre contre Hiéron I{{er}} de Syracuse, guerre qui se solda par une défaite sanglante<ref>Diodore de Sicile, XI, 53, 1-5</ref>. Profitant de ce désastre militaire, les Agrigentins se soulevèrent et chassèrent Thrasydée en 472-471 av. J.-C. Le tyran déchu s'enfuit en Grèce continentale, fut arrêté à Mégare et exécuté publiquement<ref>Diogène Laërce, VIII, 66 ; Polyen, ''Stratagèmes'', V, 6</ref>. C'est dans ce contexte de bouleversement politique et d'instauration d'un régime démocratique qu'Empédocle, alors âgé d'une vingtaine d'années, fit son entrée dans la vie publique.
L'environnement intellectuel et culturel dans lequel se forma Empédocle était d'une richesse exceptionnelle. Agrigente attirait poètes, dramaturges et penseurs venus de toute la Grèce. Pindare, le plus célèbre poète lyrique de son temps, séjourna à Agrigente et y composa plusieurs odes en l'honneur de Théron<ref>Pindare, ''Olympiques'', II et III ; ''Pythiques'', VI</ref>. Eschyle, le grand tragique athénien, se rendit également en Sicile et mourut à Géla vers 456 av. J.-C.<ref>Vie anonyme d'Eschyle</ref>. Plus importante encore fut l'influence des courants philosophiques qui circulaient en Grande-Grèce et en Sicile au début du V{{e}} siècle av. J.-C. Bien qu'il soit chronologiquement improbable qu'Empédocle ait personnellement rencontré Xénophane de Colophon, il connut indubitablement son œuvre, qui critiquait vigoureusement l'anthropomorphisme religieux traditionnel<ref>Xénophane, fragments 11-16 (DK 21 B 11-16)</ref>. L'influence de Parménide d'Élée sur Empédocle fut considérable tant sur le plan stylistique que conceptuel : le poème de Parménide, avec sa distinction entre la voie de la vérité et la voie de l'opinion, fournit à Empédocle un modèle formel et un cadre problématique<ref>Théophraste cité par Diogène Laërce, VIII, 55-56</ref>.
Les liens d'Empédocle avec le pythagorisme sont complexes et controversés. Selon Timée de Tauroménion, historien sicilien du IV{{e}}-III{{e}} siècle av. J.-C., Empédocle fut disciple de Pythagore, mais en fut exclu pour plagiat (logoklopia), accusé d'avoir divulgué publiquement des enseignements tenus secrets par l'école pythagoricienne<ref>Timée cité par Diogène Laërce, VIII, 54-55</ref>. Cependant, l'anachronisme chronologique rend impossible une telle filiation directe : Pythagore mourut vers 495 av. J.-C., année même où naquit probablement Empédocle. Il est néanmoins indubitable qu'Empédocle connut la doctrine pythagoricienne, soit par contact avec des pythagoriciens établis en Sicile et en Grande-Grèce, soit par la lecture d'écrits pythagoriciens, soit encore par transmission orale. L'interdiction de consommer des fèves, la croyance en la transmigration des âmes (métempsychose), le végétarisme strict et l'importance accordée aux nombres et aux proportions dans l'explication du cosmos témoignent d'une imprégnation pythagoricienne profonde, même si Empédocle reformula ces doctrines de manière originale<ref>Empédocle, fragments 117, 128, 136, 137, 139 (DK 31 B 117, 128, 136, 137, 139)</ref>.
Sur la vie personnelle et l'activité politique d'Empédocle, nos informations proviennent principalement de Diogène Laërce et de Timée. Empédocle refusa la royauté ou la tyrannie qui lui furent offertes, préférant soutenir le parti démocratique et œuvrer en faveur du peuple<ref>Diogène Laërce, VIII, 63-66 ; Aristote cité par Diogène Laërce, VIII, 63</ref>. Plusieurs anecdotes illustrent son engagement politique égalitaire. Lors d'un banquet offert par un magistrat, Empédocle s'indigna qu'un convive fût désigné comme « roi du festin » avec pouvoir d'imposer aux autres invités des humiliations. Le lendemain, il fit citer en justice l'hôte et le « roi », les fit condamner et exécuter, y voyant une atteinte à l'égalité des citoyens<ref>Diogène Laërce, VIII, 64 ; Timée, ''Histoires'', livre XI (''FGrHist'' 566 F 93)</ref>. De même, lorsque le médecin Acron demanda au conseil l'autorisation d'ériger un monument à son père sur l'acropole, Empédocle s'opposa vigoureusement à ce privilège, prononçant un discours où il tourna en dérision cette prétention aristocratique en jouant sur les mots<ref>Diogène Laërce, VIII, 65</ref>. Plus tard, Empédocle fit dissoudre l'Assemblée des Mille, institution oligarchique qui limitait les droits politiques à un millier de citoyens fortunés, trois ans après sa fondation, démontrant ainsi qu'il appartenait certes à la classe des riches mais qu'il soutenait fermement les principes démocratiques<ref>Diogène Laërce, VIII, 66 ; Timée, ''Histoires'', livres XI-XII (''FGrHist'' 566 F 93-94)</ref>.
Parallèlement à son action politique, Empédocle exerça la médecine et acquit une réputation de thaumaturge. On lui attribue des guérisons miraculeuses, notamment celle d'une femme nommée Panthéia, que les autres médecins avaient abandonnée, la croyant morte<ref>Héraclide du Pont, ''Des maladies'', cité par Diogène Laërce, VIII, 60-61, 67-69</ref>. Il aurait également délivré Sélinonte d'une épidémie de peste en faisant détourner le cours de deux rivières voisines pour assainir les eaux stagnantes responsables des miasmes pestilentiels<ref>Diogène Laërce, VIII, 70</ref>. À Agrigente, il aurait maîtrisé les vents étésiens qui menaçaient les récoltes en faisant fabriquer des outres en peau d'âne pour les capturer, exploit qui lui valut le surnom de « dompteur de vents » (kôlysanemas)<ref>Timée cité par Diogène Laërce, VIII, 60</ref>. Ces récits, qui mêlent histoire et légende, témoignent de l'aura extraordinaire dont Empédocle fut entouré de son vivant.
L'apparence d'Empédocle frappait les contemporains. Il se présentait vêtu d'une robe de pourpre, ceint d'une ceinture d'or, chaussé de sandales de bronze, couronné de lauriers et portant les bandelettes sacrées delphiques<ref>Diogène Laërce, VIII, 73 ; Favorinus, ''Histoires diverses''</ref>. Cette mise en scène théâtrale, qui le distinguait de manière notable des autres citoyens, correspondait à la représentation qu'il donnait de lui-même dans ses poèmes, où il se présentait comme un dieu immortel circulant parmi les mortels<ref>Empédocle, fragment 112, 4-5 (DK 31 B 112)</ref>. Cette attitude fut diversement interprétée : certains y virent de l'arrogance et de la vanité, d'autres l'expression d'une authentique conscience de sa mission spirituelle<ref>Timée cité par Diogène Laërce, VIII, 66-67</ref>.
Les circonstances et la date de la mort d'Empédocle demeurent entourées de mystère. Selon Aristote, il serait mort à l'âge de soixante ans, donc vers 432-430 av. J.-C.<ref>Aristote cité par Diogène Laërce, VIII, 52</ref>, mais d'autres sources lui prêtent un âge bien plus avancé, jusqu'à cent neuf ans<ref>Apollodore cité par Diogène Laërce, VIII, 52</ref>. Quant aux circonstances de sa mort, la légende la plus célèbre, rapportée par Héraclide du Pont et amplement diffusée dans l'Antiquité, raconte qu'Empédocle se serait jeté dans le cratère de l'Etna pour faire croire à son apothéose et convaincre ses disciples de sa divinité ; le volcan aurait cependant rejeté l'une de ses sandales de bronze, révélant ainsi la supercherie<ref>Héraclide du Pont cité par Diogène Laërce, VIII, 67-70 ; Horace, ''Art poétique'', 464-466</ref>. Timée de Tauroménion, historien plus soucieux d'exactitude, conteste vigoureusement cette version, affirmant qu'Empédocle quitta la Sicile pour le Péloponnèse et n'y revint jamais, de sorte que les modalités de sa mort demeurèrent inconnues<ref>Timée cité par Diogène Laërce, VIII, 71-72</ref>. D'autres traditions mentionnent qu'il serait mort d'une chute de char en se rendant à Messine, ou qu'il se serait pendu, ou encore qu'il se serait noyé<ref>Diogène Laërce, VIII, 73-74</ref>. L'incertitude même qui entoure sa fin contribua à renforcer le caractère quasi mythique du personnage, dont la figure hanta l'imaginaire occidental jusqu'à inspirer Hölderlin, Nietzsche et Matthew Arnold<ref>Hölderlin, ''La mort d'Empédocle'' (1798-1800) ; Nietzsche, ''Esquisses d'un drame d'Empédocle'' (fragments posthumes, 1870-1871) ; Matthew Arnold, ''Empedocles on Etna'' (1852)</ref>.
== II. Les sources et la tradition textuelle ==
Notre connaissance de la pensée d'Empédocle repose sur une tradition textuelle d'une complexité remarquable, qui combine l'absence tragique de manuscrits directs continus, la richesse d'une tradition indirecte remontant à l'Antiquité, et l'excitation suscitée par des découvertes papyrologiques récentes. Cette situation impose une démarche philologique et herméneutique particulièrement rigoureuse, laquelle doit tenir compte à la fois de la fragmentation matérielle des sources et des déformations interprétatives qui se sont accumulées au fil des siècles<ref>Kingsley, Peter. ''Ancient Philosophy, Mystery, and Magic: Empedocles and Pythagorean Tradition''. Oxford University Press, 1995, p. 3-4</ref>.
=== L'absence de tradition directe et la dépendance à l'égard des citations ===
Contrairement aux œuvres de Platon, d'Aristote ou même d'Épicure, dont des manuscrits médiévaux ont assuré la transmission continue, aucun manuscrit complet des poèmes d'Empédocle ne nous est parvenu. La totalité de notre information textuelle provient de citations, de paraphrases et d'allusions préservées dans les écrits d'auteurs postérieurs, notamment chez les philosophes, les doxographes, les commentateurs néoplatoniciens et les Pères de l'Église<ref>Martin, Alain et Primavesi, Oliver. ''L'Empédocle de Strasbourg (P. Strasb. gr. Inv. 1665-1666). Introduction, édition et commentaire''. Walter de Gruyter, 1999, p. 3-5</ref>. Cette condition fragmentaire n'est nullement propre à Empédocle elle caractérise l'ensemble des présocratiques mais elle revêt une acuité particulière dans son cas, compte tenu de l'ampleur probable de son œuvre originale.
Les sources principales de la tradition indirecte sont dispersées sur près d'un millénaire. Parmi les auteurs les plus anciens, Aristote (384-322 av. J.-C.) et son disciple Théophraste (vers 371-vers 287 av. J.-C.) occupent une place prépondérante. Aristote cite et discute Empédocle à de nombreuses reprises dans ses traités, notamment dans la ''Métaphysique'', le ''De Caelo'', le ''De Generatione et Corruptione'', et les ''Meteorologica''<ref>Aristote, ''Métaphysique'', I, 3, 984a ''De Generatione et Corruptione'', I, 1, 314a-315a</ref>. Théophraste, qui composa des monographies sur les physiciens antérieurs, aujourd'hui perdues mais abondamment utilisées par la tradition doxographique ultérieure, constitue une source d'information cruciale, bien que médiatisée<ref>Diels, Hermann. ''Doxographi Graeci''. Berlin, 1879</ref>. Cependant, comme l'a magistralement démontré Harold Cherniss dans son ouvrage fondateur ''Aristotle's Criticism of Presocratic Philosophy'' (1935), Aristote et Théophraste n'étaient nullement des témoins neutres ils interprétaient et réinterprétaient Empédocle à travers leurs propres cadres conceptuels, imposant souvent des schémas téléologiques qui faisaient de l'histoire philosophique une marche nécessaire vers le système aristotélicien<ref>Cherniss, Harold F. ''Aristotle's Criticism of Presocratic Philosophy''. Baltimore, 1935</ref>.
La tradition doxographique, inaugurée par Théophraste et systématisée par des compilateurs ultérieurs tels qu'Aetius (I{{er}}-II{{e}} siècles apr. J.-C.), a transmis des résumés schématiques et souvent simplificateurs des doctrines empédocléennes. Le pseudo-Plutarque, dont les ''Placita Philosophorum'' dérivent d'Aetius, Stobée (V{{e}} siècle apr. J.-C.) et Hippolyte de Rome (vers 170-235 apr. J.-C.) dans sa ''Réfutation de toutes les hérésies'' constituent des relais essentiels, bien que leur fidélité aux formulations originales demeure sujette à caution<ref>Mansfeld, Jaap et Runia, David T. ''Aëtiana: The Method and Intellectual Context of a Doxographer''. Leiden, 1997</ref>. Les commentateurs néoplatoniciens, notamment Simplicius (VI{{e}} siècle apr. J.-C.) dans ses vastes commentaires sur Aristote, ont préservé de précieuses citations littérales d'Empédocle, souvent absentes des autres sources<ref>Simplicius, ''Commentaire sur la Physique d'Aristote'', notamment 157.25-158.1, 160.1-26 éd. Diels</ref>. Simplicius, mû par un souci de conservation des textes anciens face à la fermeture des écoles philosophiques païennes par Justinien en 529, a eu le mérite d'insérer dans ses commentaires de longues citations textuelles, qui constituent aujourd'hui nos sources les plus étendues pour plusieurs fragments majeurs. Plutarque (vers 46-vers 125 apr. J.-C.), dans ses ''Œuvres morales'', Sextus Empiricus (fin II{{e}}-début III{{e}} siècle apr. J.-C.), et Clément d'Alexandrie (vers 150-vers 215 apr. J.-C.) fournissent également des citations importantes, bien que souvent décontextualisées et adaptées à leurs propres finalités polémiques ou apologétiques<ref>Bollack, Jean. ''Empédocle. Les Origines''. Paris, Minuit, 1965-1969, vol. I, p. 15-28</ref>.
Cette médiation par des autorités postérieures, aux agendas philosophiques, théologiques ou polémiques distincts, impose une vigilance herméneutique constante. Comme Peter Kingsley l'a souligné, le véritable obstacle à une intelligence correcte d'Empédocle ne réside pas tant dans la fragmentation matérielle que dans les distorsions interprétatives que la tradition a accumulées<ref>Kingsley, Peter. ''Ancient Philosophy, Mystery, and Magic'', p. 4-5</ref>. L'historien de la philosophie doit, autant que possible, dépouiller les citations de leurs gangues doxographiques pour tenter d'accéder au sens originel.
=== Les éditions modernes et l'établissement du corpus ===
L'entreprise moderne d'édition critique des fragments d'Empédocle commence véritablement au XIX{{e}} siècle, époque où la philologie classique atteint sa maturité scientifique. L'édition pionnière de Friedrich Wilhelm Sturz, ''Empedocles Agrigentinus'' (Leipzig, 1805), rassemble pour la première fois de manière systématique les fragments épars dans la tradition antique et médiévale, accompagnés d'une étude sur la vie et la philosophie du penseur d'Agrigente<ref>Sturz, Friedrich Wilhelm. ''Empedocles Agrigentinus''. Leipzig, 1805</ref>. Simon Karsten, dans ses ''Philosophorum Graecorum Veterum... Operum Reliquiae'' (Amsterdam, 1838), propose une édition plus ambitieuse, qui distingue déjà avec une certaine netteté les fragments attribuables aux ''Katharmoi'' des fragments du poème physique<ref>Karsten, Simon. ''Philosophorum Graecorum Veterum... Operum Reliquiae'', vol. II. Amsterdam, 1838</ref>.
L'édition véritablement fondatrice demeure celle de Hermann Stein, ''Empedoclis Agrigentini Fragmenta'' (Bonn, 1852), qui établit des critères rigoureux de sélection et d'authentification des fragments, et dont la numérotation a longtemps fait autorité<ref>Stein, Hermann. ''Empedoclis Agrigentini Fragmenta''. Bonn, 1852</ref>. Cependant, c'est l'édition monumentale de Hermann Diels, d'abord publiée dans les ''Poetarum Philosophorum Fragmenta'' (Berlin, 1901), puis intégrée et considérablement développée dans ''Die Fragmente der Vorsokratiker'' (première édition 1903), qui est devenue la référence incontournable et qui a imposé le système de numérotation standard, universellement utilisé par les chercheurs<ref>Diels, Hermann. ''Die Fragmente der Vorsokratiker''. Berlin, 1903</ref>. La cinquième édition, remaniée par Walther Kranz (Berlin, 1934-1937), puis la sixième édition (1952), désormais connue sous le sigle « Diels-Kranz » ou « DK », constituent encore aujourd'hui la base de référence pour tout travail sur les présocratiques, bien que leurs limites et leurs présupposés interprétatifs soient désormais largement reconnus<ref>Diels, Hermann et Kranz, Walther. ''Die Fragmente der Vorsokratiker''. 6{{e}} éd. Berlin, 1952</ref>.
Dans le système Diels-Kranz, chaque philosophe présocratique se voit attribuer un numéro Empédocle porte le numéro 31. Les témoignages indirects sur sa vie et sa doctrine sont classés sous la lettre A, suivie d'un numéro (31 A 1, 31 A 2, etc.). Les fragments littéraux, c'est-à-dire les citations textuelles considérées comme authentiques, sont classés sous la lettre B (31 B 1, 31 B 2, etc.). Une troisième catégorie, la lettre C, rassemble les imitations et les textes qui prennent Empédocle pour modèle<ref>Numérotation Diels-Kranz, dans ''Die Fragmente der Vorsokratiker''</ref>. Ce système, bien qu'imparfait et parfois arbitraire dans ses distinctions, a permis d'unifier les références et demeure l'instrument de travail indispensable.
Les éditions ultérieures du XX{{e}} siècle ont apporté des améliorations significatives, tant sur le plan de l'établissement du texte que sur celui de l'interprétation. L'édition monumentale de Jean Bollack, ''Empédocle. Les Origines'' (Paris, Minuit, 1965-1969, 3 volumes), propose une reconstruction audacieuse et systématique du poème physique, en intégrant non seulement les fragments littéraux mais aussi les résumés doxographiques, dans une tentative de reconstituer l'architecture d'ensemble de l'œuvre<ref>Bollack, Jean. ''Empédocle. Les Origines. Introduction, édition et commentaire''. Paris, Minuit, 1965-1969, 3 vol.</ref>. Bollack numérote les unités textuelles de 1 à 699, dans un cadre ouvert qui accueille fragments, paraphrases et contextes citants. Cette entreprise, aussi admirable soit-elle par son ampleur et sa rigueur philologique, n'a pas supplanté le système Diels-Kranz, trop solidement ancré dans les habitudes scientifiques. L'édition de Brad Inwood, ''The Poem of Empedocles'' (Toronto, 1992, édition révisée 2001), offre un texte grec accompagné d'une traduction anglaise et d'un riche apparat de témoignages indirects<ref>Inwood, Brad. ''The Poem of Empedocles''. Toronto, University of Toronto Press, 1992 éd. rév. 2001</ref>. L'édition de M. R. Wright, ''Empedocles: The Extant Fragments'' (New Haven, Yale University Press, 1981), remarquable par son commentaire détaillé et ses notes philologiques, demeure un outil précieux<ref>Wright, M. R. ''Empedocles: The Extant Fragments''. New Haven, Yale University Press, 1981</ref>.
Plus récemment, André Laks et Glenn W. Most ont proposé une refonte complète du corpus présocratique dans leur vaste entreprise éditoriale ''Early Greek Philosophy'' (Cambridge, Mass., Harvard University Press, 2016, Loeb Classical Library vol. 528), où Empédocle occupe le chapitre 22 du volume V, partie II<ref>Laks, André et Most, Glenn W. ''Early Greek Philosophy'', vol. V, part II. Cambridge (Mass.), Harvard University Press, 2016 (Loeb 528) traduction française ''Les Débuts de la philosophie''. Paris, Fayard, 2016, p. 659-819</ref>. Rompant avec la division traditionnelle en A et B, Laks et Most classent les textes en trois catégories P (informations concernant la Personne, la vie, le caractère et les dits du philosophe), D (Doctrine, fragments littéraux et témoignages sur le contenu de l'œuvre), R (histoire de la Réception de la doctrine dans l'Antiquité). Ce nouveau système, bien que novateur et fondé sur des critères méthodologiques explicites, n'a pas encore détrôné la numérotation Diels-Kranz, qui conserve sa primauté dans la pratique scientifique courante.
=== La découverte du papyrus de Strasbourg et son importance ===
L'événement le plus marquant dans l'histoire récente des études empédocléennes fut incontestablement l'identification et la publication, en 1999, du papyrus de Strasbourg, qui bouleversa notre compréhension de la tradition textuelle et apporta des vers jusqu'alors inconnus<ref>Martin, Alain et Primavesi, Oliver. ''L'Empédocle de Strasbourg (P. Strasb. gr. Inv. 1665-1666). Introduction, édition et commentaire''. Berlin, Walter de Gruyter, 1999</ref>. L'histoire de cette découverte mérite d'être contée, car elle illustre les aléas de la transmission des textes antiques et les hasards heureux de la recherche papyrologique.
En novembre 1904, l'archéologue allemand Otto Rubensohn fouillait le site d'Akhmîm, l'antique Panopolis, en Haute-Égypte, lieu réputé pour avoir été un centre intellectuel et littéraire aux premiers siècles de notre ère. Il découvrit un objet funéraire singulier une bande ornementale, vraisemblablement destinée à orner une momie, constituée de feuilles de cuivre doré collées sur des morceaux de papyrus pliés<ref>Martin et Primavesi, 1999, p. 1-3</ref>. Rubensohn extrait les bribes de papyrus et les emporta en Europe. En 1905, la Bibliothèque nationale et universitaire de Strasbourg fit l'acquisition de ce manuscrit fragmentaire. Pendant près d'un siècle, le papyrus demeura inexploité, enfoui dans les collections strasbourgeoises, attendant qu'un regard expert s'y intéressât<ref>Martin et Primavesi, 1999, p. 3-4</ref>.
C'est en 1994 qu'Alain Martin, papyrologue de l'Université libre de Bruxelles, identifia le papyrus comme contenant des vers d'Empédocle. Collaborant avec Oliver Primavesi, philologue de l'Université de Munich, spécialiste d'Empédocle et de Parménide, Martin entreprit une reconstitution minutieuse des fragments. Le travail, d'une complexité extrême, exigeait de déplier virtuellement les morceaux, de reconstituer l'ordre des colonnes, d'identifier les correspondances entre les divers ensembles désignés par les lettres a à k, et de déterminer leur place dans l'œuvre empédocléenne<ref>Martin et Primavesi, 1999, p. 5-15</ref>. En 1999, les deux chercheurs publièrent ''L'Empédocle de Strasbourg'', ouvrage qui fit date dans le domaine de la papyrologie et de l'histoire de la philosophie antique.
Le papyrus, daté paléographiquement de la fin du I{{er}} siècle apr. J.-C., constitue le seul témoignage de transmission directe d'un texte d'Empédocle, par opposition aux citations indirectes chez les auteurs postérieurs<ref>Martin et Primavesi, 1999, p. 15-20</ref>. Il s'agit d'un manuscrit de qualité, copié professionnellement, comme en témoigne la présence d'une indication stichométrique en marge de la colonne a la lettre Γ (gamma), qui signale que le copiste a déjà transcrit 300 lignes<ref>Martin et Primavesi, 1999, p. 18</ref>. Cette indication suggère que le papyrus provient d'un centre de copie professionnel, et non d'une copie privée ou scolaire. Le fait que le manuscrit ait été trouvé dans un contexte funéraire soulève des questions fascinantes sur les usages rituels ou symboliques auxquels les textes philosophiques pouvaient être soumis dans l'Égypte gréco-romaine<ref>Carlig, Nathan. « Des papyri grecs en contexte funéraire le cas de l'Empédocle de Strasbourg ». ''Philosophie antique'', 10, 2010, p. 93-111</ref>.
Le papyrus apporte des vers inconnus et, surtout, atteste la coexistence, au sein d'un même rouleau, de développements cosmologiques et de récits daïmonologiques à la première personne. Il fournit ainsi un argument très puissant en faveur d'une articulation étroite entre ces deux registres, sans pour autant lever définitivement le débat sur l'unité ou la dualité des poèmes empédocléens.<ref>Alain Martin et Oliver Primavesi, ''L'Empédocle de Strasbourg. (P. Strasb. gr. inv. 1665–1666)'', Berlin / New York, de Gruyter, 1999.</ref> En particulier, le papyrus montre que le célèbre fragment sur le « démon » exilé des dieux (B 115 Diels-Kranz) et le récit des expériences de réincarnation (B 117 Diels-Kranz) s'inséraient dans un contexte qui contenait également des développements cosmologiques sur la séparation et la recombinaison des éléments. Cette découverte a largement conforté l'hypothèse, avancée dès 1987 par Catherine Rowett (alors Osborne), selon laquelle une partie au moins de ces fragments provenait d'un seul et même poème, désigné sous divers titres par les sources antiques.<ref>Catherine Osborne, « Empedocles Recycled », ''Classical Quarterly'', 37, 1987, p. 24-50.</ref>
=== La découverte récente du papyrus du Caire ===
L'histoire ne s'arrête pas là. En 2023, Nathan Carlig, chercheur en papyrologie à l'Université de Liège, découvrit dans les collections de l'Institut français d'archéologie orientale (IFAO) du Caire un fragment de papyrus contenant les restes de trente vers inédits du philosophe présocratique<ref>Carlig, Nathan. Annonce de la découverte, présentée lors de la journée d'études « De Strasbourg au Caire la redécouverte d'Empédocle », Université de Liège, 13 février 2023</ref>. Ce fragment, désormais connu sous le nom d'« Empédocle du Caire », complète l'« Empédocle de Strasbourg ». Daté également de la fin du I{{er}} siècle apr. J.-C., il provient vraisemblablement de la même région d'Égypte, sinon du même manuscrit ou d'une copie apparentée. La publication complète de cette nouvelle découverte, attendue avec impatience par la communauté scientifique, promet d'éclairer davantage la doctrine empédocléenne et de relancer les débats interprétatifs sur des questions encore irrésolues.
=== Les problèmes herméneutiques posés par la tradition fragmentaire ===
La fragmentation matérielle et la médiation doxographique imposent des défis herméneutiques considérables. Premièrement, l'ordre originel des fragments demeure largement inconnu. Les éditeurs modernes, de Diels à Bollack, ont proposé des reconstructions hypothétiques de la structure des poèmes, mais ces reconstructions demeurent conjecturales, fondées sur des critères thématiques, stylistiques ou logiques qui ne garantissent nullement la fidélité à l'ordre de composition originel<ref>Bollack, 1965-1969, vol. I, p. 97-124</ref>. Deuxièmement, la décontextualisation des fragments rend souvent difficile la compréhension de leur sens précis. Un vers cité isolément peut prendre des significations divergentes selon le contexte argumentatif dans lequel il s'insérait. Troisièmement, les citations elles-mêmes ne sont pas toujours textuellement fiables les copistes médiévaux ont introduit des corruptions, et les auteurs anciens citaient parfois de mémoire ou adaptaient les vers à leurs propres besoins rhétoriques<ref>Wright, M. R. ''Empedocles: The Extant Fragments'', p. 1-5</ref>.
À ces difficultés matérielles s'ajoutent les biais interprétatifs de la tradition. Aristote, source majeure de notre information, lit Empédocle à travers le prisme de sa propre téléologie et de sa théorie des quatre causes. Les doxographes schématisent et simplifient, réduisant souvent la richesse de la pensée empédocléenne à des formules commodes mais réductrices. Les néoplatoniciens, tels Simplicius ou Proclus, projettent sur Empédocle leurs propres catégories métaphysiques, voyant dans le Sphairos une préfiguration de l'Un plotinien ou dans les daimones des âmes platoniciennes déchues<ref>Kingsley, 1995, p. 3-7</ref>. Les Pères de l'Église, en quête de précurseurs de la doctrine chrétienne ou, au contraire, d'hérésiarques à réfuter, instrumentalisent Empédocle à des fins apologétiques.
Face à ces obstacles, l'historien de la philosophie doit adopter une méthode critique rigoureuse. Il convient, autant que possible, de croiser les témoignages, de comparer les versions divergentes d'un même fragment, de tenir compte du contexte citant, et de demeurer conscient des agendas philosophiques ou théologiques des sources. La découverte des papyrus égyptiens, en fournissant un accès direct, quoique fragmentaire, au texte empédocléen, offre un contrepoids salutaire aux déformations de la tradition indirecte. Néanmoins, même ces papyrus ne nous livrent pas Empédocle dans sa pureté originelle ils nous donnent des copies tardives, réalisées plusieurs siècles après la composition, dans un milieu culturel éloigné de la Sicile du V{{e}} siècle av. J.-C.
En définitive, notre connaissance d'Empédocle demeure irrémédiablement médiatisée, fragmentaire et problématique. Mais cette condition ne condamne nullement l'entreprise herméneutique à l'échec au contraire, elle l'oblige à une vigilance accrue, à une rigueur philologique maximale, et à une humilité épistémologique qui reconnaît les limites de notre savoir. Les progrès accomplis au cours du dernier siècle, grâce aux découvertes papyrologiques et aux réévaluations critiques de la tradition doxographique, ont considérablement enrichi notre compréhension d'Empédocle. Les décennies à venir, avec la publication de l'« Empédocle du Caire » et la poursuite des recherches papyrologiques, promettent d'apporter de nouvelles lumières sur l'une des figures les plus fascinantes et les plus énigmatiques de la pensée antique.
== III. Les quatre racines et la composition du monde ==
La théorie des quatre racines constitue la contribution la plus célèbre et la plus durable d'Empédocle à l'histoire de la pensée occidentale. En postulant l'existence de quatre principes matériels fondamentaux — le feu, l'air, l'eau et la terre — dont les combinaisons variables engendrent toutes les substances du monde sensible, l'Acragentin élabora un système à la fois simple et puissant qui marqua la physique et la médecine pendant plus de deux millénaires<ref>Aristote, ''Métaphysique'', I, 3, 984a8-11 ; Diogène Laërce, ''Vies et doctrines des philosophes illustres'', VIII, 76</ref>. Cette doctrine représente une tentative ingénieuse de réconcilier les positions apparemment inconciliables de Parménide d'Élée et d'Héraclite d'Éphèse : elle sauvegarde à la fois l'immuabilité de l'être proclamée par le premier et la réalité du devenir observée par le second.
=== Le problème philosophique hérité de Parménide ===
Pour saisir pleinement l'originalité de la solution empédocléenne, il convient de rappeler l'aporie dans laquelle la philosophie éléate avait plongé la réflexion sur la nature. Parménide avait démontré, dans son poème fondateur ''Sur la nature'', que l'être est nécessairement un, éternel, immuable et homogène. Tout devenir, toute génération, toute corruption, toute pluralité ne peuvent être, selon lui, que des illusions et erreurs des sens<ref>Parménide, fragment 8 DK ; Simplicius, ''Commentaire sur la Physique d'Aristote'', 145.1-146.25</ref>. La rigueur de l'argumentation parménidéenne s'impose à l'esprit : rien ne peut naître de ce qui n'est pas, car le non-être est impensable et indicible ; rien ne peut périr en se résolvant dans le non-être, pour la même raison. Dès lors, affirmer que quelque chose commence d'exister ou cesse d'exister équivaut à dire que l'être provient du non-être ou retourne au non-être — deux propositions contradictoires et absurdes<ref>Parménide, fragment 8, versets 6-9 DK</ref>.
Cependant, cette conclusion métaphysique se heurte violemment au témoignage immédiat et constant des sens. Les choses naissent, croissent, se transforment, dépérissent et meurent sous nos yeux. Le monde sensible est le théâtre d'un perpétuel devenir. Comment concilier l'évidence rationnelle de l'immuabilité de l'être avec l'évidence empirique du changement universel ? Telle était la question pressante à laquelle les penseurs postérieurs à Parménide durent se confronter. Empédocle, comme Anaxagore son contemporain, s'efforça de résoudre ce dilemme en dissociant le niveau des principes élémentaires, éternels et immuables, du niveau des composés, transitoires et changeants<ref>Aristote, ''De la génération et de la corruption'', I, 1, 314a6-15</ref>.
=== La doctrine des quatre racines ===
Empédocle n'emploie pas le terme d'éléments (''stoikheia'') — terme technique qui ne fut introduit qu'ultérieurement dans le vocabulaire philosophique. Il désigne les quatre principes matériels sous le nom pittoresque de ''rhizômata'', c'est-à-dire « racines » de toutes choses, empruntant une image botanique qui suggère à la fois la permanence, la fécondité et le rôle fondateur<ref>Empédocle, fragment 6 DK</ref>. Ce choix terminologique n'est nullement fortuit : il s'inscrit dans la tradition pythagoricienne, où le terme ''rhiza'' désignait les principes premiers dont dérivent toutes choses, de même que les nombres dérivent de l'unité et de la dyade<ref>Jean Bollack, ''Empédocle. Les Origines'', Paris, Éditions de Minuit, 1965, vol. I, p. 155-158</ref>.
Empédocle identifie ces quatre racines en recourant à une nomenclature théologique : Zeus pour le feu, Héra pour l'air, Aidôneus (c'est-à-dire Hadès) pour la terre, et Nestis pour l'eau<ref>Empédocle, fragment 6 DK ; Aétius, I, 3, 20</ref>. L'emploi de noms divins pour désigner les éléments n'est pas une simple ornementation poétique : il exprime la conviction que les racines possèdent une dignité ontologique supérieure, qu'elles sont douées d'une forme de vie et de pensée, qu'elles sont, en un sens, divines<ref>Peter Kingsley, ''Ancient Philosophy, Mystery, and Magic'', Oxford University Press, 1995, p. 48-52</ref>.
L'identification précise de chaque divinité à chaque élément a donné lieu à des divergences entre les traditions doxographiques. La version la plus anciennement attestée, conservée par Diogène Laërce et Aétius, attribue le feu à Zeus le lumineux, l'air à Héra vivifiante, la terre à Aidôneus, et l'eau à Nestis, divinité aquatique sicilienne dont les larmes engendrent la source des mortels<ref>Diogène Laërce, VIII, 76 ; Aétius, I, 3, 20</ref>. D'autres traditions doxographiques, notamment celle conservée par Stobée, proposent des correspondances différentes, attribuant à Héra la terre et à Aidôneus l'air<ref>Stobée, ''Éclogues'', I, 10, 11b</ref>. Ces divergences secondaires reflètent les difficultés d'interprétation du texte original d'Empédocle. L'essentiel du système demeure : les quatre racines sont coéternelles, équivalentes en dignité ontologique, irréductibles les unes aux autres, et elles constituent les briques élémentaires dont tous les corps composés sont formés.
Aristote, dans sa ''Métaphysique'', reconnaît à Empédocle le mérite d'avoir été le premier à distinguer clairement quatre éléments de nature matérielle, là où ses prédécesseurs ioniens n'en avaient retenu qu'un seul : l'eau pour Thalès, l'air pour Anaximène, le feu pour Héraclite, ou une substance indéterminée (''apeiron'') pour Anaximandre<ref>Aristote, ''Métaphysique'', I, 3, 984a8-11</ref>. Cependant, le Stagirite ajoute une critique importante : Empédocle, bien qu'il pose quatre éléments, ne les utilise pas vraiment comme s'ils étaient quatre, mais plutôt comme s'ils étaient deux — le feu d'une part, et ses contraires (terre, eau, air) d'autre part<ref>Aristote, ''Métaphysique'', I, 4, 985a31-33</ref>. Cette observation suggère que, dans certains passages du poème, Empédocle privilégie une opposition binaire entre le chaud (feu) et le froid (les trois autres éléments), opposition qui joue un rôle déterminant dans la cosmogonie et la formation des êtres vivants. Néanmoins, la structure quaternaire demeure fondamentale et constitue l'architecture conceptuelle du système.
=== L'immuabilité des racines et l'explication du changement ===
Les quatre racines possèdent, selon Empédocle, les attributs que Parménide avait réservés à l'être unique : elles sont inengendrées et impérissables, elles ne croissent ni ne décroissent en quantité, elles demeurent qualitativement identiques à elles-mêmes à travers tous les changements du cosmos<ref>Empédocle, fragments 8, 11, 12, 17 DK</ref>. Ainsi, Empédocle sauvegarde le principe éléate de l'immuabilité de l'être, mais en le distribuant sur quatre substances distinctes au lieu de le concentrer sur un être unique et monolithique. Cette pluralisation de l'être parménidien constitue la clé de voûte de la solution empédocléenne au problème du devenir.
Comment, dès lors, expliquer le changement, la naissance et la mort des êtres particuliers ? Empédocle répond par une théorie du mélange (''mixis'', ''krasis'') et de la séparation (''dialysis'', ''diakrisis'') des éléments. Ce que le langage ordinaire nomme « naissance » n'est qu'un assemblage, une union, une combinaison de parcelles des quatre racines ; ce que l'on nomme « mort » n'est que la dissolution, la désagrégation de cet assemblage, le retour des parcelles élémentaires à leur état dispersé<ref>Empédocle, fragment 8 DK</ref>. Rien ne naît véritablement au sens strict, rien ne périt véritablement : il y a seulement mélange et séparation de choses qui existent toujours. Les mots « naissance » et « mort » sont donc, à strictement parler, impropres et mensongers — ils relèvent de la convention humaine plutôt que de la vérité philosophique<ref>Empédocle, fragment 9 DK</ref>. Empédocle lui-même déclare qu'il se conforme à l'usage linguistique établi, tout en sachant que celui-ci ne correspond pas à la réalité ontologique profonde.
Cette théorie du mélange et de la séparation permet de rendre compte de l'infinie diversité des êtres du monde sensible. Selon les proportions dans lesquelles les quatre racines se combinent, selon la configuration géométrique de leurs assemblages, naissent des substances aux propriétés extrêmement variées. Empédocle compare ce processus à l'art du peintre, qui, à partir de quatre couleurs fondamentales — le blanc, le noir, le jaune et le rouge — produit une infinité de nuances et représente tous les êtres visibles<ref>Empédocle, fragment 23 DK</ref>. De même, les quatre racines, par leurs combinaisons innombrables, engendrent les arbres, les hommes, les femmes, les bêtes sauvages, les oiseaux, les poissons, et même les dieux qui vivent longtemps<ref>Empédocle, fragment 21 DK</ref>.
=== Les propriétés des quatre racines ===
Chaque racine possède des propriétés spécifiques qui la distinguent des trois autres. Le feu se caractérise par la chaleur, la légèreté, la luminosité et le mouvement ascendant. L'air, quoique moins bien défini dans les fragments conservés, semble associé au souffle vital, à la respiration, et à l'intermédiaire entre le feu et l'eau. L'eau se signale par la froideur, l'humidité, la fluidité et la tendance à descendre. La terre se définit par la sécheresse, la densité, la stabilité et la pesanteur<ref>Aétius, I, 3, 20 ; Aristote, ''De la génération et de la corruption'', II, 3, 330b19</ref>. Ces propriétés ne sont pas adventices : elles appartiennent essentiellement à chaque élément et expliquent son comportement dans les processus cosmiques et biologiques.
Aristote, dans son traité ''De la génération et de la corruption'', critique Empédocle pour n'avoir pas expliqué de manière satisfaisante comment les propriétés sensibles des corps composés dérivent des propriétés des éléments simples<ref>Aristote, ''De la génération et de la corruption'', I, 1, 314b7-26</ref>. Selon le Stagirite, Empédocle se contente d'affirmer que les os, par exemple, sont composés de deux parts d'eau, de deux parts de terre et de quatre parts de feu, sans préciser le mécanisme par lequel cette proportion numérique détermine la dureté, la blancheur et les autres propriétés de l'os<ref>Aristote, ''Des parties des animaux'', I, 1, 642a18-24</ref>. Cette critique aristotélicienne, pour fondée qu'elle soit sur le plan de la rigueur explicative, ne doit pas occulter l'audace et la fécondité de l'intuition empédocléenne : l'idée que les propriétés macroscopiques des corps résultent de la proportion et de l'arrangement de leurs constituants microscopiques anticipe, dans une certaine mesure, les conceptions modernes de la chimie et de la physique des matériaux.
=== Le mélange et ses degrés ===
Empédocle distingue plusieurs types ou degrés de mélange entre les éléments. Le mélange peut être plus ou moins intime, plus ou moins homogène. Dans certains cas, les parcelles élémentaires demeurent simplement juxtaposées, sans interpénétration véritable. Dans d'autres cas, le mélange atteint un degré de finesse tel que les parcelles de chaque élément se trouvent entremêlées de manière extrêmement serrée, donnant naissance à des substances d'apparence homogène<ref>Aristote, ''De la génération et de la corruption'', I, 10, 327b22-328a5</ref>.
Le sang constitue l'exemple paradigmatique d'un mélange équilibré et harmonieux des quatre racines en proportions à peu près égales<ref>Empédocle, fragment 98 DK ; Aristote, ''Des parties des animaux'', II, 2, 647b31-648a2</ref>. La perfection de ce mélange explique pourquoi le sang, et en particulier le sang qui entoure le cœur, est le siège de la pensée (''phronêsis'') chez l'homme<ref>Empédocle, fragment 105 DK</ref>. Cette doctrine sera reprise et développée par la médecine ultérieure. Inversement, les déséquilibres dans les proportions élémentaires expliquent les différences de tempérament, d'intelligence et de capacités entre les individus : ceux dont le mélange sanguin est harmonieux sont les plus intelligents, tandis que ceux dont le mélange est défectueux, où un élément domine excessivement les autres, sont obtus, paresseux ou impulsifs<ref>Théophraste, cité par Aétius, IV, 5, 12</ref>.
Cette doctrine des mélanges élémentaires fonde la physiologie, la médecine et la psychologie empédocléennes. Elle annonce, de loin, la théorie des quatre humeurs (sang, phlegme, bile jaune, bile noire) qui dominera la médecine antique et médiévale, bien que cette théorie humorale ne se soit pleinement constituée qu'avec Hippocrate et Galien<ref>Galien, ''De elementis ex Hippocratis sententia''</ref>. L'influence d'Empédocle sur l'école médicale de Sicile et d'Italie du Sud fut considérable : Galien le reconnaît comme une figure fondatrice de la pensée médicale occidentale, même s'il n'utilise pas l'expression « fondateur » dans le passage de Diogène Laërce<ref>Galien, cité par les historiens modernes de la médecine antique</ref>.
=== La critique aristotélicienne et la postérité de la doctrine ===
Aristote, tout en reconnaissant l'apport décisif d'Empédocle à la physique, formule plusieurs objections contre la théorie des quatre éléments. Premièrement, il reproche à Empédocle de ne pas avoir clairement distingué la cause matérielle (les quatre racines) de la cause efficiente (Amour et Haine), distinction qui est essentielle pour une explication scientifique rigoureuse<ref>Aristote, ''Métaphysique'', I, 4, 985a21-29</ref>. Deuxièmement, il critique l'apparente incohérence de la théorie : dans certaines phases du cycle cosmique, c'est l'Amour qui unit toutes choses dans l'unité du Sphairos, mais c'est la Haine qui sépare et isole chaque élément — le feu se rassemblant avec le feu, la terre avec la terre — ce qui produit également une forme d'union<ref>Aristote, ''Métaphysique'', I, 4, 985a23-29</ref>. Troisièmement, Aristote juge insuffisant le recours à deux principes moteurs seulement pour rendre compte de la variété des mouvements observés dans la nature<ref>Aristote, ''Physique'', VIII, 1, 252a7-14</ref>.
Malgré ces critiques, Aristote lui-même adopta, en la réinterprétant profondément, la doctrine des quatre éléments. Il leur attribua des lieux naturels et des mouvements naturels (vers le haut pour le feu et l'air, vers le bas pour l'eau et la terre), et surtout il les redéfinit non plus comme des substances ultimes mais comme des composés de matière première et de couples de qualités contraires (chaud-froid, sec-humide)<ref>Aristote, ''De la génération et de la corruption'', II, 1-4</ref>. Cette transformation conceptuelle permit d'intégrer la théorie empédocléenne dans le cadre de l'hylémorphisme aristotélicien, assurant ainsi sa survie et sa diffusion pendant des siècles.
La postérité de la doctrine empédocléenne des quatre éléments fut immense. Elle s'imposa comme le cadre conceptuel fondamental de la physique, de la cosmologie, de la médecine, de l'alchimie et de l'astrologie jusqu'à la révolution scientifique du XVII{{e}} siècle. Galien, Avicenne, Averroès, Albert le Grand, Thomas d'Aquin acceptèrent tous, avec des nuances diverses, la théorie des quatre éléments comme une vérité établie<ref>David C. Lindberg, ''The Beginnings of Western Science'', University of Chicago Press, 1992, p. 50-65</ref>. Ce n'est qu'avec Boyle, Lavoisier et la chimie moderne que cette théorie fut définitivement abandonnée, remplacée par la conception des éléments chimiques définis par leurs propriétés atomiques. Mais l'idée empédocléenne fondamentale — selon laquelle la diversité du monde sensible résulte de combinaisons variables d'un petit nombre de constituants élémentaires — survit, transfigurée, dans la chimie et la physique contemporaines. Elle demeure une intuition profonde sur la structure de la matière.
== IV. L'Amour et la Haine : forces cosmiques primordiales ==
Au cœur de la cosmologie d'Empédocle se trouve un antagonisme fondamental, plus vaste encore que celui des quatre racines : le combat éternel entre deux forces universelles, l'Amour (''philia'', ''erôs'') et la Haine (''neikos'').<ref>Empédocle, fragments 16, 17, 30 DK ; Aristote, ''Métaphysique'', I, 4, 985a21-29</ref> Empédocle affirme avec force que l'Amour et la Haine existent depuis l'éternité : « Car elles ont été auparavant, elles seront plus tard, et je ne crois pas qu'aucune des deux manque jamais dans le temps infini ».<ref>Empédocle, fragment 16 DK</ref> Si les quatre racines constituent l'infrastructure matérielle du cosmos, c'est l'Amour et la Haine qui en animent le devenir, qui organisent leurs rapports, qui produisent l'alternance infinie des phases d'union et de séparation. Ces deux forces ne sont nullement des principes abstraits ou immatériels ; elles sont, au contraire, du même statut ontologique que les quatre éléments, de véritables composantes de l'être, quoique de nature qualitativement distincte.<ref>Théophraste, rapporté par Diogène Laërce, ''Vies et doctrines des philosophes illustres'', VIII, 55-56</ref>
Empédocle qualifie l'Amour par plusieurs noms divins qui en soulignent l'essence : ''philia'' (amitié), ''erôs'' (amour), ''Aphrodite'' (Vénus), ''Harmonia'' (harmonie).<ref>Empédocle, fragments 17, 19, 20, 96 DK</ref> La Haine, elle, est désignée sous les noms de ''neikos'', ''Eris'' (discorde), et figurée comme une force de séparation centrifuge.<ref>Empédocle, fragments 16, 30, 35 DK</ref> Ces noms divins n'ont rien d'ornemental poétique ; ils expriment la conviction empédocléenne que les forces cosmiques fondamentales possèdent une nature divine, une puissance créatrice incomparable.<ref>Jean Bollack, ''Empédocle. Les Origines'', Minuit, Paris, 1965-1969, t. I, p. 98-110</ref>
=== La nature dialectique du cosmique ===
L'Amour et la Haine ne se déploient pas simultanément et avec la même intensité en tous lieux et en tous temps. Au contraire, elles entrent dans une alternance cyclique réglée par une ''ananké'' (nécessité) suprême, scellée par un « vaste serment » (''horkos'').<ref>Empédocle, fragment 30 DK ; voir aussi Diogène Laërce, ''Vies et doctrines des philosophes illustres'', VIII, 76-77</ref> Cette Nécessité, cette loi inviolable garantit le déroulement éternel du cycle cosmique et, par conséquent, l'éternité du devenir lui-même. C'est une caractéristique remarquable du système empédocléen que le devenir ne soit jamais sujet à l'annihilation : il est au contraire assuré par un décret cosmique que l'alternance entre union et séparation ne connaîtra jamais de terme.<ref>Empédocle, fragment 16 DK ; Aristote, ''Physique'', VIII, 1, 250b15-22</ref>
L'Amour se caractérise principalement par sa fonction unificatrice. Chaque fois qu'il prédomine, il attire vers lui l'ensemble des racines élémentaires, cherchant à les fusionner en une totalité homogène. Empédocle le célèbre en des termes sublimes : « Contemple-le par l'esprit et non avec des yeux hébétés. C'est lui qu'on regarde comme incorporé dans les membres des mortels, c'est grâce à lui qu'ils aiment et accomplissent les œuvres de l'union, lui donnant alors le nom de Joie et celui d'Aphrodite ; mais il circule aussi dans tout l'univers ».<ref>Empédocle, fragment 17 DK</ref> L'Amour « est égal en longueur et en largeur »,<ref>Empédocle, fragment 17 DK, vers 20</ref> manifestant sa présence intime en chaque lieu du cosmos. Lorsqu'il se retire, c'est-à-dire lorsque l'Amour recule devant l'assaut de la Haine, le chaos menace l'ordre établi.<ref>Empédocle, fragment 35 DK</ref>
La Haine, inversement, opère par séparation et désagrégation. Elle est qualifiée comme la force sinistre, distincte de toute autre réalité, « de poids égal partout ».<ref>Empédocle, fragment 17 DK, vers 18</ref> Là où l'Amour cherche à unir les dissemblables — ce qui constitue sa fonction cruciale, puisqu'elle agit précisément en favorisant les unions entre éléments naturellement séparés —, la Haine « sépare et isole », attirant chaque racine vers ce qui lui ressemble. Empédocle souligne cette ségrégation : « Dans la Haine, ils sont tous isolés et défigurés, mais l'Amour les réunit par un désir réciproque ».<ref>Empédocle, fragment 21 DK</ref> C'est une ségrégation progressive qui culmine, à l'extrême, en une complète stratification cosmique où les quatre racines forment quatre sphères concentriques immuables.
=== Le Sphairos : le moment d'harmonie absolue ===
Le plus haut accomplissement de l'Amour se manifeste dans le Sphairos (Sphère), moment cosmique où l'union est si totale, si intégrale, que le cosmos devient une unité sphérique indivisible, parfaite dans toutes ses dimensions.<ref>Empédocle, fragments 27, 28, 29 DK</ref> En cet instant propice, Empédocle dépeint un univers transfiguré : « Alors ne se discernent pas les membres rapides du Soleil, ni la puissance velue de la terre, ni la mer — mais au sein de la stable harmonie, reposait le Sphairos, immobile ».<ref>Empédocle, fragment 27 DK</ref> Les trois mondes distincts du cosmos actuel s'abolissent dans une fusion si complète que les réalités élémentaires qui les composent perdent leurs individualités.
Ce moment cosmique possède une qualité divine insigne. Empédocle le décrit comme un état de béatitude absolue, sans souffrance, sans conflit, sans le poids du devenir.<ref>Empédocle, fragment 27 DK</ref> Aucune distinction n'existe au sein du Sphairos : Empédocle le précise ainsi : « Pour tous les côtés il était égal, infiniment vaste, se forma le Sphairos. Il était arrondi ».<ref>Empédocle, fragment 28 DK</ref> Le Sphairos ne possède pas de différenciation interne. Cette caractérisation s'inspire du Parménide du poète éléate, dont Empédocle emprunte le modèle d'un être unique, indivisé et complet ; cependant, Empédocle le pluralise en reconnaissant que l'univers en bloc possède ces attributs.<ref>Peter Kingsley, ''Ancient Philosophy, Mystery, and Magic. Empedocles and Pythagorean Tradition'', Clarendon Press, Oxford, 1995, p. 50-60</ref>
=== Le cycle cosmique et ses phases ===
Selon le témoignage d'Aristote et les fragments conservés, le cosmos traverse quatre phases discernables :
'''La première phase''' est celle du Sphairos intact, où l'Amour domine sans partage et la Haine reste reléguée aux extrêmes limites.<ref>Empédocle, fragment 35 DK</ref> Cette phase ne peut produire aucune réalité composite distincte puisque la complète uniformité interdit la génération.<ref>Empédocle, fragment 26 DK</ref>
'''La deuxième phase''' s'inaugure quand la Haine commence à pénétrer le Sphairos, l'imprègne peu à peu, déclenchant le devenir. C'est dans cette phase que naît notre monde, celui des êtres multiples, des créatures composées, du devenir incessant. Empédocle en décrit le commencement : « Quand la Haine se fut retirée à l'extrémité du tourbillon, et qu'au centre fut venue résider l'Amitié, dès lors toutes choses se réunirent pour former un seul ensemble, mais ce n'est pas d'un seul coup ».<ref>Empédocle, fragment 35 DK</ref> L'Amour réagit immédiatement à l'assaut de la Haine, tentant de maintenir certaines unions et de créer de nouveaux équilibres.<ref>Empédocle, fragments 20, 21, 26 DK</ref> C'est le cosmos du devenir perpétuel, caractérisé par une lutte entre les deux forces antagonistes.<ref>Empédocle, fragment 26 DK</ref>
'''La troisième phase''' intervient quand la Haine atteint sa plénitude de puissance. Elle a achevé la séparation complète des quatre racines, repoussant l'Amour aux extrêmes limites du cosmos. À ce stade extrême, les quatre éléments forment quatre sphères concentriques isolées les unes des autres, incapables de toute interaction.<ref>Aristote, ''De la génération et de la corruption'', II, 3, 330a25-30</ref> C'est un moment de parfaite séparation, aussi extrême dans son opposition que le Sphairos l'était dans son union.
'''La quatrième phase''' voit l'Amour reprendre son offensive. Graduellement, avec lenteur et constance, il commence à réunir les quatre racines éparses, à former d'abord des composés simples, puis de plus en plus complexes, jusqu'à éventuellement reconstituer le Sphairos. Empédocle souligne que ce retour s'accomplit avec mesure : « De ce qui s'unit ainsi naissent les innombrables races des êtres mortels ; mais en face de ce qui était associé, beaucoup reste isolé ».<ref>Empédocle, fragment 35 DK</ref> Et le cycle recommence, sans fin.
=== L'héritage philosophique et théorique ===
Aristote reconnaît, non sans une certaine perplexité, que l'introduction de deux forces motrices distinctes constitue un progrès considérable par rapport à la physique ionienne.<ref>Aristote, ''Métaphysique'', I, 4, 985a21-29</ref> Cependant, il adresse à Empédocle plusieurs critiques majeures. Premièrement, l'Amour et la Haine sont présentés à la fois comme des causes efficientes (elles produisent du mouvement) et comme des causes matérielles (elles composent l'être), distinction que le Stagirite juge intolérable.<ref>Aristote, ''Métaphysique'', I, 4, 985a25-29</ref> Deuxièmement, Aristote note une asymétrie troublante : la Haine est parfaitement destructrice, tandis que l'Amour ne cesse d'opérer même dans la séparation, puisque la Haine elle-même unit ce qui est semblable. Dès lors, comment affirmer qu'elle soit réellement démiurgique au sens plein ?<ref>Aristote, ''Physique'', II, 8, 198b34-199a2</ref>
Ces critiques aristotéliciens, bien que sévères, méconnaissent la subtilité du système empédocléen. Chez Empédocle, en effet, la distinction entre cause matérielle et cause efficiente n'existe pas encore au sens aristotélicien. Les deux forces sont matérielles et motrices en même temps parce que, dans la conception empédocléenne, la matière elle-même est vivante, douée d'une forme d'intentionnalité. L'Amour et la Haine ne sont pas des principes transcendants qui agiraient du dehors sur une matière passive ; ils sont immanents au cosmos, en constituent les fibres mêmes.<ref>Jean Bollack, ''Empédocle. Les Origines'', Minuit, Paris, 1965-1969, t. I, p. 110-115</ref>
L'influence de cette conception des forces cosmiques s'étendra bien au-delà de l'Antiquité. Schopenhauer reconnaîtra en Empédocle un précurseur majeur de sa propre métaphysique du Vouloir, où une impulsion universelle, tantôt attractive, tantôt répulsive, anime le cosmos entier.<ref>Arthur Schopenhauer, ''Le Monde comme volonté et représentation'', Livre II, Supplément (trad. Auguste Burdeau), Félix Alcan, Paris, 1890</ref> Freud mentionnera explicitement Empédocle comme source d'inspiration pour sa théorie des pulsions érotiques (Éros) et des pulsions de mort (Thanatos), montrant comment ces deux forces antagonistes et complémentaires gouvernent tous les phénomènes de la vie.<ref>Sigmund Freud, ''Au-delà du principe du plaisir'' (trad. française), Payot, Paris, 1920, p. 36-40</ref> C'est ainsi que le penseur d'Agrigente, philosophe présocratique dont l'œuvre ne nous est connue que par fragments, a jeté les bases conceptuelles pour toute une tradition occidentale de pensée organique et dynamique, résolument contraire à tout réductionnisme mécaniste.
== V. La perception et la théorie de la connaissance ==
La théorie de la connaissance d'Empédocle repose sur un principe simple mais d'une profondeur remarquable : '''le semblable connaît le semblable''' (''homoion gignôskei homoion'')<ref>Empédocle, fragment 109 DK Théophraste chez Aetius IV, 9, 15</ref>. Ce principe, fondamental à toute sa physique, établit une consubstantialité entre l'organe percevant et l'objet perçu, une intrinsèque affinité qui rend possible la connaissance en supprimant temporairement la distance qui sépare le sujet de l'objet. Contrairement aux penseurs qui l'ont précédé, notamment Parménide et Héraclite, Empédocle construit une théorie unifiée de la perception qui englobe l'ensemble des modalités sensorielles et qui s'articule à la cosmologie des quatre racines et à l'action de l'Amour et de la Haine<ref>Théophraste, ''De la sensation'', I sq., cité dans Diogène Laërce, VIII, 55-56</ref>.
=== Les organes des sens et la théorie des pores ===
Empédocle imagine que tous les corps, aussi bien externes qu'internes, possèdent des pores (''póroi'') de dimensions variables, et que ces pores se correspondent en vertu d'affinités élémentaires. La sensation est produite par l'entrée de particules minuscules, appelées ''effleuves'' ou ''aporrhóiai'', qui se détachent de tous les corps et pénètrent dans ces pores<ref>Empédocle, fragments 89, 92 DK Aetius IV, 13, 4-5</ref>. Cette théorie des effleuves explique pourquoi certaines sensations sont possibles tandis que d'autres ne le sont pas : les pores de l'œil ne peuvent admettre que les effleuves de la lumière, tandis que les pores de l'oreille ne reçoivent que les effleuves du bruit. Chaque sens dispose ainsi d'une spécificité structurelle qui le limite à la perception des objets pour lesquels ses pores présentent la bonne configuration<ref>Empédocle, fragment 86 DK Théophraste chez Plutarque, ''De la vertu morale'', 446e</ref>.
Cette doctrine des pores révèle une compréhension remarquablement sophistiquée de la sélectivité sensorielle. Empédocle l'explicite en affirmant que ''il n'est pas possible qu'un sens juge des objets d'un autre, car les pores de quelques-uns d'entre eux sont trop larges, et ceux des autres trop étroits pour l'objet sensible''<ref>Empédocle, fragment 86 DK</ref>. La vue, l'ouïe, l'odorat, le goût et le toucher ne se concurrencent ni ne se remplacent les uns les autres ; ils forment plutôt un ensemble de canaux distincts, chacun spécialisé dans l'interception de certaines catégories d'effleuves. Empédocle recommande même à son disciple Pausanias d'accorder confiance à tous les sens de manière équitable : ''Va, examine de toutes façons comment chaque chose se manifeste / Mais n'accorde pas plus de confiance à la vue qu'à l'ouïe''<ref>Empédocle, fragment 3 DK</ref>.
=== La vision : la lumière émanée du feu intérieur ===
Pour la vision, Empédocle propose une théorie originale où l'acte de voir résulte de la rencontre entre le feu interne à l'œil et le feu externe provenant des objets. L'œil est composé de quatre éléments, mais le feu y prédomine. Il est entouré d'eau, de terre et d'air qui forment une enveloppe protectrice. Le feu intérieur s'écoule à travers cette enveloppe comme la lumière traverse une lanterne, rencontrant le feu externe du monde, et cette union produit la vision<ref>Théophraste chez Aetius IV, 14, 1-2 Empédocle, fragment 84 DK</ref>. La couleur des yeux détermine les conditions de visibilité : les yeux riches en feu voient mieux la nuit, car ils compensent le manque de lumière externe, tandis que les yeux riches en eau voient mieux le jour<ref>Empédocle, fragment 91 DK</ref>. Cette doctrine anticipe certains éléments de la théorie moderne de la vision, bien que ses fondements soient radicalement différents.
=== L'audition et l'analogie de la cloche ===
Pour l'ouïe, Empédocle la compare à une cloche. Le son est produit par le choc de l'air extérieur mû par la voix sur le cartilage suspendu à l'intérieur de l'oreille, cartilage qui tinte comme le battant d'une cloche<ref>Empédocle, fragment 93 DK Aetius IV, 16, 1</ref>. L'audition est donc essentiellement un phénomène de résonance : l'air intérieur de l'oreille entre en vibration sympathique avec l'air extérieur qui porte le son. C'est une parfaite illustration du principe du semblable connaissant le semblable : l'air intérieur reconnaît l'air extérieur en entrant en harmonie vibrante avec lui<ref>Théophraste chez Diogène Laërce, VIII, 55</ref>.
=== L'olfaction et la respiration ===
L'odorat s'accomplit par la respiration, ce qui explique pourquoi ceux qui sentent le mieux possèdent les mouvements respiratoires les plus violents<ref>Empédocle, fragment 102 DK</ref>. Le chien de chasse qui suit une trace cherche les particules que l'animal a laissées en se déplaçant, des parcelles de matière qui pénètrent les narines du chasseur au rythme de sa respiration<ref>Empédocle, fragment 101 DK</ref>. Ainsi, l'odeur porte en elle les éléments constituants de la chose odorante et entre en contact avec les éléments semblables présents dans l'organe olfactif du percevant.
=== La théorie unifiée de la sensation ===
Ces modalités sensorielles distinctes convergent en une théorie générale selon laquelle ''la sensation naît de l'adaptation aux pores''<ref>Théophraste, ''De la sensation'', 1 sq.</ref>. Plutôt que de considérer chaque sens comme un mécanisme entièrement distinct, Empédocle les intègre tous dans un schéma unifié : en chaque lieu du corps, existent des pores ; dans chaque corps du monde environnant, se dégagent des effleuves ; quand les dimensions des pores correspondent aux dimensions des effleuves, la sensation a lieu. Cette correspondance n'est jamais fortuite : elle repose sur une affinité élémentaire profonde. La sensation est ainsi une forme d'union, une communion temporaire entre ce qui perçoit et ce qui est perçu<ref>Empédocle, fragment 90 DK : « Ainsi le doux se saisit du doux, l'amer se précipite vers l'amer, / L'acide va vers l'acide et le chaud s'unit au chaud »</ref>.
=== La respiration et la physiologie ===
L'explication empédocléenne de la respiration, illustrée par la célèbre analogie de la clepsydre, révèle la profondeur de sa pensée physiologique<ref>Empédocle, fragment 100 DK</ref>. La clepsydre, ce récipient antique destiné à verser des liquides, possède une imbouchure supérieure et un fond percé de nombreux petits trous formant un crible. Quand on la plonge vide dans l'eau en tenant l'imbouchure fermée, l'eau n'y pénètre pas, car l'air interne repousse le liquide. Dès qu'on retire la main de l'imbouchure, l'eau s'y précipite. De même, dans l'organisme vivant, le sang et l'air effectuent une danse alternative : quand le sang se retire des capillaires, l'air y pénètre ; quand le sang y retourne, l'air en sort. Ce mécanisme explique la respiration pulmonaire : l'air externe s'engouffre dans les poumons en empruntant les trachées et bronches pour occuper l'espace évacué par le sang qui reflue vers le cœur<ref>Empédocle, fragment 100 DK</ref>. Cette conception du poumon comme siège d'échanges régulés entre deux fluides incompressibles constitue une intuition physiologique remarquable, même si les détails anatomiques ne pouvaient être correctement établis à l'époque.
=== Le sang, siège de la pensée ===
La cognition elle-même, pour Empédocle, s'inscrit dans ce cadre physiologique. Le sang, particulièrement le sang circulant autour du cœur, constitue le siège de la pense (''nous''). Ceci découle de sa composition unique : le sang contient les quatre racines élémentaires en proportions à peu près égales, ce qui en fait le mélange le plus harmonieux et le plus intelligent<ref>Empédocle, fragment 105 DK : « Car le sang qui entoure le cœur est la Pensée chez l'espèce humaine »</ref>. La qualité de la pensée dépend directement de la qualité du mélange sanguin : ''Tous ceux chez lesquels le mélange est égal, ou peu pres, et chez qui les éléments ne sont ni de trop grands intervalles, ni trop petits, ni trop grands, sont les plus intelligents''<ref>Empédocle, fragment 107 DK Théophraste chez Aetius IV, 5, 12</ref>. À l'inverse, ceux dont le mélange sanguin est déséquilibré, où un élément prédomine excessivement, sont obtus, paresseux ou impulsifs<ref>Théophraste chez Aetius IV, 5, 12</ref>.
Cette doctrine établit une continuité remarquable entre la sensation et la pensée. Comme le rapporte Théophraste, ''la pense naît de ce qui est semblable, l'ignorance de ce qui est dissemblable, si bien que la pense est la même chose, ou peu s'en faut, que la sensation''<ref>Théophraste, ''De la sensation'', 1 sq., cité par Aetius IV, 9, 11</ref>. La cognition n'est donc pas une faculté transcendantale détachée de la sensation elle en constitue l'achèvement et l'approfondissement. Penser, c'est continuer à percevoir, mais de manière plus stable et plus intègre.
=== Le principe gnoséologique et ses implications ===
Le principe ''le semblable connaît le semblable'' possède des implications gnoséologiques profondes. Il signifie que le sujet percevant ne peut connaître que ce dont il partage la nature. L'homme, composé des quatre racines élémentaires, ne peut connaître le monde extérieur que parce que ce monde est fait des mêmes racines : ''Nous voyons la terre par la terre, l'eau par l'eau, / L'air divin par l'air et le feu destructeur par le feu''<ref>Empédocle, fragment 87 DK</ref>. Cette doctrine implique une consubstantialité fondamentale entre le connaissant et le connu, une osmose perpétuelle entre l'intérieur et l'extérieur. L'Amour, en unissant les semblables, crée le condition même de la connaissance. C'est pourquoi la sensation est toujours accompagnée d'une forme de plaisir : ''Le plaisir est procuré au semblable par le semblable dans l'addition de ce qui lui fait défaut''<ref>Empédocle, fragment 95 DK</ref>.
Empédocle reconnaît aussi que la connaissance comporte un élément irréductiblement limité. Les pouvoirs répandus dans les membres des hommes sont circonscrits ; nous ne voyons pendant notre existence qu'une brève part de la vie<ref>Empédocle, fragment 2 DK</ref>. Néanmoins, celui qui s'applique avec rigueur et qui cultive son intelligence peut accéder à une compréhension plus vaste. L'apprentissage consiste à se rapprocher progressivement de la totalité des choses, même si cette totalité demeure définitivement inaccessible à un mortel individuel. C'est peut-être pourquoi Empédocle valorise tellement la transmigration des âmes : en vivant successivement sous différentes formes, en parcourant les règnes animal, végétal et humain, l'âme accumule une connaissance pancosmique, une intelligence qui embrasse les vicissitudes de tous les êtres<ref>Empédocle, fragment 117 DK</ref>.
=== La critique aristotélicienne et l'héritage ultérieur ===
Aristote, malgré son admiration pour l'ingéniosité d'Empédocle, formule plusieurs critiques contre sa théorie de la perception. Il reproche notamment à l'Acragentin l'absence de clarté quant aux mécanismes précis par lesquels les effleuves pénètrent les pores, ainsi que l'incohérence apparente de maintenir que la sensation résulte à la fois d'une ressemblance (le semblable connaît le semblable) et de contacts physiques (les effleuves pénétrant les pores)<ref>Aristote, ''De la sensation'', II, 437b10-438a5</ref>. Néanmoins, la théorie empédocléenne de la perception exerça une influence considérable sur la philosophie ultérieure. Platon s'inspira de certains éléments de cette théorie lorsqu'il élabora sa propre doctrine de la vision dans le ''Timée''<ref>Platon, ''Timée'', 45b-c Laks et Most, 2016, p. 703-704</ref>. Plus tardivement, les stoïciens intégreront la théorie empédocléenne des effleuves dans leur propre pneumatologie. La conception empédocléenne selon laquelle la matière elle-même possède une forme d'intention et que les contacts sensoriels unissent essentiellement le percevant et le perçu allait exercer une fascination durable sur les alchimistes médiévaux et la Naturphilosophie romantique.
== VI. La génération des êtres vivants et la physiologie ==
La théorie empédocléenne de la génération des êtres vivants représente l'une des contributions les plus audacieuses de la pensée présocratique à la biologie et à la physiologie. Fondée sur les principes du mélange et de la séparation des quatre racines élémentaires, auxquels s'ajoutent l'action de l'Amour et de la Haine, cette théorie s'efforce de rendre compte de l'infinie variété des vivants, de la simplicité des végétaux à la complexité des animaux et des humains<ref>Empédocle, fragments 20, 21, 26, 62, 63 DK Aetius, V, 19, 5 Aristote, ''De partibus animalium'', I, 1, 642a17</ref>.
=== Les phases de la zoogenèse ===
Selon le témoignage d'Aétius et de plusieurs auteurs anciens, Empédocle décrit la genèse des êtres vivants comme une succession de phases où se reconfigurent les combinaisons des quatre racines sous l'action de l'Amour et de la Haine.<ref>Aétius, V, 19, 4 = Empédocle, 31 B 57 DK.</ref> La recherche moderne a souvent rapproché ce schéma d'un modèle « évolutif », mais il ne s'agit pas d'une théorie de l'évolution au sens biologique contemporain : Empédocle ne parle ni d'ascendance commune, ni de transmission héréditaire de caractères, ni d'adaptation graduelle à un milieu. Il met en scène des configurations successives du vivant dans le cadre d'un cycle cosmique gouverné par des forces cosmiques.
La première phase est caractérisée par l'apparition de membres et d'organes isolés, entièrement désagrégés, errant solitairement sur la terre sans cohésion organique : « Sur la terre naquirent de nombreuses têtes privées de cou, / Et des bras erraient séparés du tronc, sans épaules, / Et des yeux allaient ici et là privés de front. »<ref>Empédocle, 31 B 57 DK.</ref> Ces membres épars constituent le résidu de la désagrégation progressive du Sphairos sous l'action croissante de la Haine.
La deuxième phase voit ces membres commencer à se rencontrer et à s'assembler de façon aléatoire et chaotique. C'est le moment où naissent les monstres terrifiants, créatures hybrides dépourvues de toute harmonie : « Des êtres aux pieds tournés, aux mains innombrables, / De nombreuses créatures naquirent avec un visage et une poitrine des deux côtés, / Des bovins à figure humaine naquirent et inversement, / Des enfants d'hommes avec des têtes bovines. »<ref>Empédocle, 31 B 61 DK.</ref> Empédocle ne précise pas systématiquement le destin de ces êtres, mais la tradition doxographique indique que ces unions chaotiques étaient le plus souvent stériles ou non viables.<ref>Aristote, ''Physique'', II, 8, 198b-199b.</ref>
Dans une troisième phase, l'entrée décisive de l'Amour dans le processus permet la constitution d'organismes plus complets, dotés de proportions plus harmonieuses : « Tirant des formes indistinctes de la terre, / Mais ayant également une part d'humidité et de feu. »<ref>Empédocle, 31 B 62 DK.</ref> Ces créatures « ne montraient pas encore un corps charmant doué de membres / Ni la voix, ni les organes propres aux hommes » : elles demeurent des ébauches, où la Haine continue de maintenir les formes dans une incomplétude essentielle, tandis que l'Amour commence déjà à créer des liaisons stables.
La quatrième phase correspond au régime de la génération « normale », sexuelle, où les individus nés par reproduction se transmettent la vie selon les lois de la procréation. C'est le monde que nous habitons, où la génération procède de l'accouplement du mâle et de la femelle et où la transmission héréditaire assure la continuité des lignées.<ref>Aétius, V, 19, 5.</ref>
=== Les monstres et la sélection naturelle ===
La vision empédocléenne du monde vivant primordial est l'un de ses aspects les plus étonnants et les plus débattus. Les êtres « convenablement constitués », possédant une harmonie suffisante entre leurs parties et une réelle aptitude à vivre, survivent et se multiplient, tandis que les monstres inaptes, les hybrides dysharmoniques, les créatures défectueuses disparaissent et ne se reproduisent pas.<ref>Aristote, ''Physique'', II, 8, 198b-199b.</ref> C'est ce motif, transmis notamment par Aristote, qui a conduit plusieurs historiens à rapprocher Empédocle d'une sorte de préhistoire de la sélection naturelle.
Depuis le XIX{{e}} siècle, certains commentateurs, à la suite de Zeller, n'ont pas hésité à présenter Empédocle comme « le plus ancien précurseur de Darwin ».<ref>Eduard Zeller, ''Die Philosophie der Griechen in ihrer geschichtlichen Entwicklung'', Leipzig, 1844-1852.</ref> Une telle assimilation, bien qu'instructive par certains côtés, demeure pourtant superficielle. Empédocle n'élabore ni une théorie mécaniste de la variation aléatoire, ni un modèle d'adaptation graduelle à un environnement changeant. Chez lui, la disparition des monstres reflète, au niveau biologique, le triomphe progressif de l'Amour sur la Haine plutôt qu'une optimisation statistique des formes de vie.
On peut dire, avec prudence, que la notion empédocléenne d'une succession de formes plus ou moins harmonieuses fournit un précédent antique que la pensée transformiste moderne a pu reconnaître rétrospectivement comme un « analogue » lointain, sans qu'il y ait pour autant continuité doctrinale avec les théories darwiniennes.
=== La physiologie humaine et le rôle du sang ===
Empédocle accorde une attention particulière à la composition et aux fonctions du corps humain. Selon le témoignage d'Aetius, le corps humain est formé « du mélange en parties à peu près égales des quatre éléments »<ref>Aetius, V, 22, 1 ap. Diogène Laërce, VIII, 76</ref>. Plus précisément, Empédocle fournit des proportions exactes pour différents tissus : « Les chairs naissent du mélange en parties égales des quatre éléments, les nerfs de feu et de terre unis au double d'eau, les ongles viennent aux vivants des nerfs qui se refroidissent au contact de l'air, les os sont formés d'un mélange de deux parties d'eau et de terre et de quatre de feu »<ref>Empédocle, fragment 96 DK Aetius, V, 22, 1</ref>. Cette présentation numérique témoigne de l'effort empédocléen pour donner une explication rationnelle et quantifiable de la structure des corps organisés.
Le rôle du sang revêt, dans cette physiologie, une importance exceptionnelle. Le sang, particulièrement celui qui circule autour du cœur, constitue le siège de la pensée, du sentiment et de la vie intellectuelle : « Tous ceux chez lesquels le mélange est égal, ou à peu près, et chez qui les éléments ne sont ni de trop grands intervalles, ni trop petits, ni trop grands, sont les plus intelligents »<ref>Empédocle, fragment 107 DK Théophraste chez Aetius, IV, 5, 12</ref>. Car « le sang qui entoure le cœur est la Pensée chez l'espèce humaine »<ref>Empédocle, fragment 105 DK</ref>. Cette doctrine établit une continuité remarquable entre le physique et le mental, entre le matériel et le cognitif, en affirmant que l'intelligence et la pensée sont le produit direct de la qualité et de la proportion du mélange sanguin<ref>Théophraste chez Aetius, IV, 5, 12</ref>.
Inversement, ceux dont le mélange sanguin est déséquilibré, où un ou plusieurs éléments prédominent excessivement, possèdent une capacité intellectuelle diminuée. Les différences individuelles de talent, de capacité, de tempérament résultent directement des variations dans la composition élémentaire du sang et des autres humeurs du corps<ref>Théophraste chez Aetius, IV, 5, 12</ref>. Cette théorie préfigure la physiognomonie et la théorie des tempéraments qui dominèrent la médecine ancienne et médiévale.
=== La respiration et la clepsydre ===
L'explication empédocléenne de la respiration, illustrée par la célèbre analogie de la clepsydre, constitue un chef-d'œuvre de pédagogie scientifique et une préfiguration géniale des mécanismes ventilatoires modernes<ref>Empédocle, fragment 100 DK</ref>. Une clepsydre est un récipient destiné à verser des liquides, possédant une embouchure supérieure et un fond percé de nombreux petits trous. Quand on la plonge vide dans l'eau en tenant l'embouchure fermée, l'eau n'y pénètre pas, car l'air intérieur repousse le liquide. Dès qu'on retire la main de l'embouchure, l'eau s'y précipite. De même, dans le corps vivant, le sang et l'air effectuent une danse alternative : quand le sang se retire des capillaires cutanés, l'air y pénètre ; quand le sang y retourne, l'air en sort<ref>Empédocle, fragment 100 DK</ref>.
Ce mécanisme explique la respiration pulmonaire et cutanée. L'air externe s'engouffre dans les poumons en empruntant les trachées et bronches pour occuper l'espace évacué par le sang qui reflue vers le cœur. À l'inverse, quand le sang se retire du cœur pour irriguer la périphérie, l'air sortant des poumons est expulsé par les narines<ref>Théophraste chez Aetius, IV, 22, 1</ref>. Ce cycle d'inspiration et d'expiration se reproduit à chaque battement cardiaque. Empédocle conçoit donc la respiration non comme un simple phénomène d'échange gazeux, mais comme une oscillation volumétrique et une compénétration harmonieuse du blood et de l'air<ref>Empédocle, fragment 100 DK</ref>.
=== La génération, le sexe et l'hérédité ===
Empédocle s'intéresse également aux questions de la détermination du sexe à la conception. Selon Aristote, qui rapporte sa doctrine, Empédocle pensait que « les germes qui entrent dans un utérus chaud deviennent mâles, ceux qui pénètrent dans un utérus froid deviennent femelles, ce froid et cette chaleur proviendraient du flux menstruel, suivant qu'il est plus froid ou plus chaud »<ref>Aristote, ''De generatione animalium'', IV, 1, 764a1 ; Aetius, V, 7, 1</ref>. Cette théorie thermique du sexe, quoique erronée dans ses mécanismes, témoigne d'une certaine reconnaissance du rôle des conditions intrautérines dans la différenciation sexuelle<ref>Aristote, ''De generatione animalium'', II, 8, 747a24</ref>.
Sur la question de l'hérédité et de la ressemblance entre parents et enfants, Empédocle propose une théorie sophistiquée combinant des facteurs physiologiques et même psychologiques. Si « la chaleur est la même dans les semences des parents, il naît un mâle qui ressemble à son père ; si le froid est identique, il naît une femme qui ressemble à sa mère »<ref>Aetius, V, 7, 1 ; Aristote, ''De generatione animalium'', II, 8, 747a24</ref>. De plus, Empédocle affirme, de manière remarquable, que « la conformation du fœtus est soumise pendant la gestation à l'imagination de la mère : souvent, en effet, les femmes se prennent d'amour pour des statues ou des tableaux et ont ensuite des enfants qui ressemblent à ces objets »<ref>Aetius, V, 7, 1 ; Censorinus, 6, 6</ref>. Cette docrine, quoique basée sur des principes physiologiquement inacceptables pour nous, révèle une préoccupation pour le rôle de la vie émotionnelle et imaginative dans la transmission des caractères héréditaires.
=== La naissance, le cœur et la mort ===
Empédocle affirme, contrairement à d'autres penseurs, que « le cœur se forme avant toutes choses, parce qu'il contient la part essentielle de la vie de l'homme »<ref>Aetius, V, 24, 2 ; Censorinus, 7, 5</ref>. Cette affirmation manifeste une intuition remarquable du rôle central du cœur dans la vie physiologique. Au moment de la naissance, l'animal inspire pour la première fois quand le liquide amniotique est évacué et que l'air extérieur entre dans le vide créé par ce départ : « La chaleur interne, tendant à partir au-dehors, chasse l'air et il y a expiration ; lorsqu'elle cède à la pression de l'air et permet à celui-ci de rentrer, il y a une nouvelle inspiration »<ref>Théophraste chez Aetius, IV, 22, 1</ref>.
Quant à la mort, Empédocle la conçoit non comme une anéantissement, mais comme une séparation des éléments : « La mort provient de la séparation de l'élément igné, de l'élément aérien, de l'élément humide et de l'élément terrestre, dont le mélange constitue l'homme »<ref>Aetius, V, 25, 4 ; Empédocle, fragment 98 DK</ref>. Le sommeil, état moins extrême que la mort, « provient d'un léger refroidissement de la chaleur du sang »<ref>Aetius, V, 24, 2</ref>, tandis que la mort résulte d'un « refroidissement complet »<ref>Aetius, V, 25, 4</ref>. Cette physiologie du repos et de la mort envisage ces états comme des variations quantitatives de la calorification plutôt que comme des changements qualitatifs radicaux.
=== La critique aristotélicienne ===
Aristote, tout en reconnaissant l'ingéniosité de certaines explications empédocléennes, les soumet à une critique serrée. Il reproche notamment à Empédocle de n'avoir pas clairement distingué entre les causes matérielles (les éléments) et les causes formelles ou organisant le tout<ref>Aristote, ''De partibus animalium'', I, 1, 642a17-31</ref>. Selon le Stagirite, Empédocle confond l'explication matérielle avec l'explication par la cause efficiente et par la cause finale. Les os ne sont pas des os simplement parce qu'ils contiennent deux parties d'eau, deux parties de terre et quatre parties de feu ; cette proportion matérielle ne suffit pas à expliquer la forme osseuse, sa densité caractéristique, sa résistance à la fracture, son rôle dans le squelette<ref>Aristote, ''Des parties des animaux'', I, 1, 642a17-31</ref>.
Néanmoins, la physiologie empédocléenne, malgré ses lacunes et ses erreurs, constitue un apport durable à la pensée biologique occidentale. Son influence sur l'école médicale de Sicile et d'Italie du Sud fut considérable. Galien reconnaît explicitement Empédocle comme le fondateur de cette école médicale<ref>Galien cité dans Diogène Laërce, VIII, 75</ref>. Les théories des quatre humeurs, des tempéraments corporels, et de la prédominance du cœur dans la vie mentale et physique trouveront leurs racines dans le système empédocléen, qui sera progressivement raffiné et systématisé par les générations ultérieures de médecins et de philosophes.
== Notes et références ==
{{references|colonnes=2}}
== Bibliographie ==
=== Éditions critiques des fragments ===
==== Éditions de référence ====
Hermann '''Diels''' et Walther '''Kranz''', ''Die Fragmente der Vorsokratiker'', Berlin, Weidmann, 1re éd. 1903, 6e éd. 1951-1952, 3 vol. Nombreuses rééditions. Cette édition, abrégée DK ou D.-K., constitue la référence classique pour la numérotation des fragments présocratiques. Empédocle y figure sous le numéro 31.
Friedrich Wilhelm '''Sturz''', ''Empedocles Agrigentinus. De vita et philosophia ejus exposuit carminum reliquias ex antiquis scriptoribus collegit, recensuit, illustravit, praefationem et indices adjecit'', Leipzig, 1805. Première édition moderne des fragments.
Simon '''Karsten''', ''Empedoclis Agrigentini carminum reliquiae'', Amsterdam, 1838. Édition avec commentaire philologique détaillé.
==== Éditions récentes avec les découvertes papyrologiques ====
Alain '''Martin''' et Oliver '''Primavesi''', ''L'Empédocle de Strasbourg P. Strasb. gr. Inv. 1665-1666. Introduction, édition et commentaire'', Strasbourg-Berlin-New York, Bibliothèque nationale et universitaire de Strasbourg - De Gruyter, 1999, xi-396 p. Édition princeps du papyrus de Strasbourg contenant environ 74 vers nouveaux ou partiellement nouveaux d'Empédocle, découvert dans les collections de la Bibliothèque nationale et universitaire de Strasbourg. Cette publication a profondément renouvelé les études empédocléennes.
Oliver '''Primavesi''', ''Empedokles Physika I. Eine Rekonstruktion des zentralen Gedankengangs'', Berlin-New York, De Gruyter, Archiv für Papyrusforschung und verwandte Gebiete, Beiheft 22, 2008, 84 p. Reconstruction de la structure du poème ''Sur la Nature'' à partir du papyrus de Strasbourg.
Nathan '''Carlig''', découverte récente d'un nouveau fragment de papyrus au Caire P. Fouad inv. 218 contenant une trentaine de vers inédits d'Empédocle, encore en cours d'édition. Publication annoncée.
==== Éditions avec traduction ====
André '''Laks''' et Glenn W. '''Most''' dir., ''Early Greek Philosophy'', 9 vol., Cambridge Mass.-Londres, Harvard University Press, Loeb Classical Library 524-532, 2016. Édition et traduction anglaise de l'ensemble des philosophes présocratiques, avec bibliographie mise à jour. Empédocle figure dans le volume V.
Brad '''Inwood''', ''The Poem of Empedocles. A Text and Translation with an Introduction'', Toronto, University of Toronto Press, Phoenix Supplementary Volumes, 1re éd. 1992, éd. révisée 2001. Édition du texte grec avec traduction anglaise en vers et introduction substantielle. Inwood défend la thèse d'un poème unique contre la division traditionnelle en deux œuvres.
M. R. '''Wright''', ''Empedocles the Extant Fragments'', New Haven-Londres, Yale University Press, 1re éd. 1981, 2e éd. avec bibliographie mise à jour, Bristol, Bristol Classical Press, 1995, 368 p. Édition du texte grec avec traduction anglaise, introduction et commentaire détaillé.
Daniel W. '''Graham''', ''The Texts of Early Greek Philosophy. The Complete Fragments and Selected Testimonies of the Major Presocratics'', Cambridge, Cambridge University Press, 2010, 2 vol. Édition et traduction anglaise accessible des principaux présocratiques.
=== Éditions et études en français ===
==== Éditions de Jean Bollack ====
Jean '''Bollack''', ''Empédocle'', Paris, Les Éditions de Minuit, collection « Le sens commun », 1965-1969, 3 vol. puis Paris, Gallimard, collection « Tel » n° 201-203, 1992, 3 vol. Réédition de l'ouvrage fondamental de Bollack :
* Tome I : ''Introduction à l'ancienne physique'', 420 p.
* Tome II : ''Les Origines. Édition et traduction des fragments et des témoignages''
* Tome III : ''Les Origines. Commentaires 1 et 2''
Jean '''Bollack''', ''Les Purifications. Un projet de paix universelle'', Paris, Éditions du Seuil, collection « L'ordre philosophique », 2003, 176 p. Réédition Paris, Points, collection « Points Essais », 2003. Édition, traduction et commentaire des fragments des ''Catharmes'' Purifications, intégrant les découvertes du papyrus de Strasbourg.
==== Autres traductions françaises ====
Jean '''Zafiropulo''', ''Empédocle d'Agrigente'', Paris, Les Belles Lettres, 1953. Traduction avec introduction et notes.
Jean '''Voilquin''', ''Les Penseurs grecs avant Socrate. De Thalès de Milet à Prodicos'', Paris, Garnier-Flammarion, 1941, 2e éd. 1964. Traduction des principaux fragments présocratiques.
Yves '''Battistini''', ''Trois contemporains Héraclite, Parménide, Empédocle'', traduction nouvelle et intégrale avec notices, Paris, Gallimard, 1955.
Jean '''Brun''', ''Empédocle ou le Philosophe de l'Amour et de la Haine'', Paris, Éditions Seghers, collection « Philosophes de tous les temps », 1966. Présentation, choix de textes, traduction et bibliographie.
==== Études françaises récentes ====
Marwan '''Rashed''', ''La Jeune Fille et la Sphère. Études sur Empédocle'', Paris, Presses de l'Université Paris-Sorbonne, collection « Philosophies », 2017, 300 p. Réédition Sorbonne Université Presses, 2023. Étude conjuguant philologie et philosophie, proposant une nouvelle interprétation du cycle cosmique et mettant en lumière la présence cachée de Perséphone dans le poème. L'ouvrage exploite des sources manuscrites byzantines découvertes par l'auteur.<ref>web:f>
Jean '''Bollack''', « Voir la Haine. Sur les nouveaux fragments d'Empédocle », ''Methodos'', 1, 2001, p. 173-185.
André '''Laks''', « À propos de l'édition du nouvel Empédocle de Strasbourg par A. Martin et O. Primavesi », ''Methexis'', 14, 2001, p. 117-125. Compte rendu critique de l'édition du papyrus de Strasbourg.
Xavier '''Gheerbrant''', « Traduire Empédocle, entre poésie et philosophie comparaison de dix traductions en cinq langues 1838-2016 », dans ''La traduction épistémique entre poésie et prose'', Arras, Artois Presses Université, 2020, p. 87-142.
=== Études en italien ===
Ettore '''Bignone''', ''Empedocle. Studio critico, traduzione e commento delle testimonianze e dei frammenti'', Turin, 1916. Réédition Rome, 1963. Étude critique monumentale avec traduction italienne et commentaire détaillé.
=== Études en allemand ===
Walther '''Kranz''', ''Empedokles. Antike Gestalt und romantische Neuschöpfung'', Zurich, Artemis Verlag, 1949. Étude sur Empédocle et sa réception romantique.
Ulrich von '''Wilamowitz-Moellendorff''', « Die Katharmoi des Empedokles », ''Sitzungsberichte der Preussischen Akademie der Wissenschaften'', Philosophisch-historische Klasse, Berlin, 1929, p. 626-661. Réédition dans ''Kleine Schriften'', vol. I, Berlin, 1935, p. 473-521. Étude fondamentale sur les ''Purifications''.
=== Études en anglais ===
==== Monographies ====
Clara Elizabeth '''Millerd''', ''On the Interpretation of Empedocles'', Chicago, University of Chicago Press, 1908. Première grande étude américaine.
Peter '''Kingsley''', ''Ancient Philosophy, Mystery, and Magic Empedocles and Pythagorean Tradition'', Oxford, Clarendon Press, 1995. Traduction française par Grégoire Lacaze : ''Empédocle et la tradition pythagoricienne. Philosophie ancienne, mystère et magie'', Paris, Les Belles Lettres, collection « Vérité des mythes », 2010. Étude renouvelant l'approche d'Empédocle en le replaçant dans son contexte originel, où philosophie, mystères et magie sont étroitement liés.<ref>webef>
Catherine '''Osborne''', ''Rethinking Early Greek Philosophy Hippolytus of Rome and the Presocratics'', Ithaca New York, Cornell University Press, 1987. Analyse de la réception d'Empédocle chez Hippolyte de Rome.
==== Articles et contributions ====
Denis '''O'Brien''', « Empedocles Revisited », ''Ancient Philosophy'', 15, 1995, p. 403-470. Réexamen critique de l'interprétation du cycle cosmique.
Denis '''O'Brien''', « Hermann Diels on the Presocratics Empedocles' Double Destruction of the Cosmos Aetius II, 4, 8 », ''Phronesis'', 45, 2000, p. 1-18.
Catherine '''Osborne''', « Empedocles Recycled », ''The Classical Quarterly'', 37, 1987, p. 24-50. Sur l'unité ou la dualité des poèmes d'Empédocle.
Catherine '''Osborne''', « Rummaging in the Recycling Bins of Upper Egypt A Discussion of A. Martin and O. Primavesi, ''L'Empédocle de Strasbourg'' », ''Oxford Studies in Ancient Philosophy'', 18, 2000, p. 329-356. Compte rendu critique de l'édition du papyrus de Strasbourg.
Oliver '''Primavesi''', « Empedocles Cosmic Cycle and the Pythagorean Tetractys », ''Rhizomata'', 4/1, 2016, p. 5-29. Analyse du cycle cosmique en relation avec la tétractys pythagoricienne.
Oliver '''Primavesi''', « La Daimonologia della fisica empedoclea », ''Aevum Antiquum'', n. s. 1, 2001, sous presse. Sur la démonologie dans la physique d'Empédocle.
Simon '''Trépanier''', « Empedocles on the Origin of Plants P. Strasb. gr. Inv. 1665-1666, Sections d, b and f », dans M. R. '''Wright''' dir., ''Reason and Necessity. Essays on Plato's Timaeus'', Londres, 2000. Reconstruction d'une section du papyrus de Strasbourg.
Simon '''Trépanier''', « Empedocles on the Ultimate Symmetry of the World », ''Oxford Studies in Ancient Philosophy'', 24, 2003. Sur la structure symétrique du cosmos empédocléen.
=== Histoires de la philosophie et ouvrages généraux ===
==== Ouvrages classiques ====
Hermann '''Ritter''', ''Histoire de la philosophie'', 1re partie, t. I, trad. par C.-J. Tissot, Paris, Ladrange, 1835. L'une des premières histoires de la philosophie à consacrer une étude détaillée à Empédocle.
Eduard '''Zeller''', ''Die Philosophie der Griechen in ihrer geschichtlichen Entwicklung'', 1re partie, 2e section, 1re éd. 1855, 6e éd. complétée par Wilhelm Nestlé, Leipzig, 1920. Traduction française par E. Boutroux : ''La Philosophie des Grecs considérée dans son développement historique'', t. II, Paris, Hachette, 1882. Synthèse classique et toujours utile sur Empédocle.
Theodor '''Gomperz''', ''Griechische Denker. Eine Geschichte der antiken Philosophie'', vol. I, 1re éd. 1895, 3e éd. Leipzig, 1911. Traduction française par Auguste Reymond : ''Les Penseurs de la Grèce. Histoire de la philosophie antique'', t. I, Lausanne-Paris, Payot, 1904. Empédocle y est présenté comme un précurseur de la chimie moderne.
John '''Burnet''', ''Early Greek Philosophy'', 1re éd. 1892, 4e éd. Londres, A. & C. Black, 1930. Traduction française par Auguste Reymond : ''L'Aurore de la philosophie grecque'', Paris, Payot, 1919. Ouvrage fondamental sur la philosophie présocratique.<ref>webef>
==== Synthèses récentes ====
G. S. '''Kirk''' et J. E. '''Raven''', ''The Presocratic Philosophers. A Critical History with a Selection of Texts'', Cambridge, Cambridge University Press, 1957. Réédition révisée avec Malcolm '''Schofield''' : ''The Presocratic Philosophers'', 2e éd. 1983. Ouvrage de référence en langue anglaise sur les présocratiques.
W. K. C. '''Guthrie''', ''A History of Greek Philosophy'', vol. II : ''The Presocratic Tradition from Parmenides to Democritus'', Cambridge, Cambridge University Press, 1965. Étude approfondie d'Empédocle dans son contexte historique.
Patricia '''Curd''' et Daniel W. '''Graham''' dir., ''The Oxford Handbook of Presocratic Philosophy'', Oxford, Oxford University Press, 2008. Recueil d'articles par les meilleurs spécialistes, avec plusieurs contributions sur Empédocle.
=== Études thématiques ===
==== Cosmologie et physique ====
Denis '''O'Brien''', ''Empedocles' Cosmic Cycle. A Reconstruction from the Fragments and Secondary Sources'', Cambridge, Cambridge University Press, Cambridge Classical Studies, 1969, 470 p. Reconstruction du cycle cosmique à partir des fragments et des témoignages.
Friedrich '''Solmsen''', « Love and Strife in Empedocles' Cosmology », ''Phronesis'', 10, 1965, p. 109-148.
Oliver '''Primavesi''', « Empedocles On the Ultimate Symmetry of the World », dans Patricia '''Curd''' et Daniel W. '''Graham''' dir., ''The Oxford Handbook of Presocratic Philosophy'', Oxford, 2008, p. 250-277.
==== Biologie et zoogonie ====
M. R. '''Sulzberger''', « La Physique d'Empédocle », dans ''Mélanges Bidez'', Bruxelles, 1934.
W. K. C. '''Guthrie''', ''In the Beginning Some Greek Views on the Origins of Life and the Early State of Man'', Ithaca, Cornell University Press, 1957.
Walter '''Spoerri''', ''Späthellenistische Berichte über Welt, Kultur und Götter. Untersuchungen zu Diodor von Sizilien'', Bâle, F. Reinhardt, 1959. Sur la réception d'Empédocle dans les théories de l'origine de la vie.
==== Théorie de la connaissance ====
John I. '''Beare''', ''Greek Theories of Elementary Cognition from Alcmaeon to Aristotle'', Oxford, Clarendon Press, 1906.
G. M. '''Stratton''', ''Theophrastus and the Greek Physiological Psychology before Aristotle'', Londres-New York, George Allen & Unwin - The Macmillan Company, 1917.
==== Religion, pythagorisme et orphisme ====
Joseph '''Bidez''', ''La Biographie d'Empédocle'', Gand, Université de Gand, 1894. Étude fondamentale sur la vie d'Empédocle et les traditions biographiques.
Erwin '''Rohde''', ''Psyche. Seelencult und Unsterblichkeitsglaube der Griechen'', 1re éd. Fribourg-en-Brisgau, 1894, 2e éd. révisée en 2 vol. 1898. Traduction française par Auguste Reymond : ''Psyché. Le culte de l'âme chez les Grecs et leur croyance à l'immortalité'', Paris, Payot, 1928. Réimpressions 1952, 1999. Ouvrage classique sur la religion grecque, avec d'importants développements sur Empédocle.
Marcel '''Detienne''', ''La Notion de daïmôn dans le pythagorisme ancien. De la pensée religieuse à la pensée philosophique'', Paris, Les Belles Lettres, 1963. Étude sur la démonologie pythagoricienne et empédocléenne.
Walter '''Burkert''', ''Weisheit und Wissenschaft. Studien zu Pythagoras, Philolaos und Platon'', Nuremberg, Hans Carl, 1962. Traduction anglaise révisée par Edwin L. Minar Jr. : ''Lore and Science in Ancient Pythagoreanism'', Cambridge Mass., Harvard University Press, 1972. Étude fondamentale sur le pythagorisme et ses rapports avec Empédocle.
Christoph '''Riedweg''', « Orphisches bei Empedokles », ''Antike und Abendland'', 41, 1995, p. 34-59. Sur les éléments orphiques chez Empédocle.
André '''Laks''' et Glenn W. '''Most''' dir., ''Studies on the Derveni Papyrus'', Oxford, Clarendon Press, 1997. Recueil d'études sur le papyrus de Derveni, avec des implications pour la compréhension d'Empédocle.
==== Sacrifice et végétarisme ====
Johannes '''Haussleiter''', ''Der Vegetarismus in der Antike'', Religionsgeschichtliche Versuche und Vorarbeiten 24, Berlin, Töpelmann, 1935.
Marcel '''Detienne''', « La cuisine de Pythagore », ''Archives de Sociologie des Religions'', 29, 1970, p. 141-162.
Dirk '''Obbink''', « The Origin of Greek Sacrifice Theophrastus on Religion and Cultural History », dans William W. '''Fortenbaugh''' et Robert W. '''Sharples''' dir., ''Theophrastean Studies'', New Brunswick, Transaction Publishers, Rutgers Studies in Classical Humanities 3, 1988, p. 272-295.
Jean-François '''Balaud''', « Parenté du vivant et végétarisme radical », dans Barbara '''Cassin''' et Jean-Louis '''Labarrière''' dir., ''L'Animal dans l'Antiquité'', Paris, Vrin, 1997, p. 31-53.
John '''Rundin''', « The Vegetarianism of Empedocles in Its Historical Context », ''The Ancient World'', 29, 1998, p. 19-36.
==== Métempsychose ====
E. R. '''Dodds''', ''The Greeks and the Irrational'', Berkeley, University of California Press, 1951. Traduction française par Michel Gibson : ''Les Grecs et l'irrationnel'', Paris, Aubier, 1965. Avec un chapitre important sur Empédocle et la métempsychose.
R. S. '''Bluck''', « Transmigration and Recollection before Plato », dans ''Plato's Meno'', Cambridge, Cambridge University Press, 1961.
==== Poétique et rhétorique ====
B. A. van '''Groningen''', « Empédocle, poète », ''Mnemosyne'', 4e série, 24, 1971, p. 169-188.
Antonio '''Traglia''', ''Studi sulla lingua di Empedocle'', Bari, Adriatica, 1952. Étude linguistique et stylistique.
=== Réception et influence ===
==== Antiquité ====
A. O. '''Lovejoy''' et George '''Boas''', ''Primitivism and Related Ideas in Antiquity'', Baltimore, Johns Hopkins Press, 1935. Réédition New York, Octagon Books, 1965. Sur l'idée de l'âge d'or et sa réception.
Thomas '''Cole''', ''Democritus and the Sources of Greek Anthropology'', Cleveland, Western Reserve University, 1967. Sur l'influence d'Empédocle dans l'anthropologie grecque.
J. P. '''Hershbell''', « Plutarch as a Source for Empedocles Re-examined », ''American Journal of Philology'', 92, 1971, p. 156-184.
J. P. '''Hershbell''', « Hippolytus' ''Elenchos'' as a Source for Empedocles Re-examined », ''Phronesis'', 18, 1973, p. 97-114 et 187-203.
Victor '''Goldschmidt''', ''La Doctrine d'Épicure et le droit'', Paris, Vrin, 1977. Avec une discussion de l'influence d'Empédocle sur Épicure.
Jaap '''Mansfeld''', « Bad World and Demiurge A Gnostic Motif from Parmenides and Empedocles to Lucretius and Philo », 1981, réédition dans ''Studies in Later Greek Philosophy and Gnosticism'', Londres, Variorum Reprints, 1989, p. 261-314.
==== Réception moderne ====
Walther '''Kranz''', « Lucrez und Empedokles », ''Philologus'', 96, 1943, p. 68-107.
Friedrich '''Nietzsche''', ''La Naissance de la philosophie à l'époque de la tragédie grecque'', traduction Geneviève Bianquis, Paris, Gallimard, 1949. Traduction du texte rédigé en 1870-1873 où Nietzsche consacre d'importantes pages à Empédocle.
Clémence '''Ramnoux''', « Les Fragments d'un Empédocle de Nietzsche », ''Revue de Métaphysique et de Morale'', 70, 1965, n° 2.
Friedrich '''Hölderlin''', ''La Mort d'Empédocle'', traduction par André Babelon, Paris, Grasset, 1929 traduction par Robert Rovini, ''Les Cahiers du Sud'', n° 378-379. Trois versions d'un drame inachevé 1797-1799 consacré au philosophe.
=== Instruments de travail ===
==== Doxographie ====
Hermann '''Diels''', ''Doxographi Graeci'', Berlin, G. Reimer, 1879. Reproduction photomécanique Berlin, De Gruyter, 1958. Édition fondamentale des doxographes grecs, sources essentielles pour la connaissance d'Empédocle.
==== Sources anciennes en traduction ====
Diogène '''Laërce''', ''Vies et doctrines des philosophes illustres'', traduction, introduction et notes par Jean-François Balaudé et alii sous la direction de Marie-Odile Goulet-Cazé, Paris, Le Livre de Poche, collection « La Pochothèque », 1999. Livre VIII, 51-77 vie d'Empédocle.
Théon de '''Smyrne''', ''Exposition des connaissances mathématiques utiles pour la lecture de Platon'', traduction J. Dupuis, Paris, Hachette, 1892. Nombreuses références à Empédocle et au pythagorisme.
==== Bibliographies ====
Friedrich '''Ueberweg''', ''Grundriss der Geschichte der Philosophie'', vol. I, nouvelle édition, Bâle-Stuttgart, Schwabe, 1954. Avec bibliographie détaillée sur Empédocle.
Les éditions successives de Diels-Kranz comprennent des bibliographies mises à jour.
Les ouvrages récents d'Inwood 2001, de Wright 1995, de Bollack 2003, de Rashed 2018 et l'édition Laks-Most 2016 fournissent des bibliographies étendues et actualisées.
=== Contexte sicilien et biographie ===
Thucydide, ''Histoire de la guerre du Péloponnèse'', livres VI-VII guerre de Sicile.
Diodore de Sicile, ''Bibliothèque historique'', livres XI-XIII histoire de la Sicile au Ve siècle.
{{AutoCat}}
[[Catégorie:Philosophe]]
{{DEFAULTSORT:Empédocle}}
qiv1odyutfg1hse172aazyybhm3jsoh
Dictionnaire de philosophie/Émergence
0
83145
768394
767906
2026-06-23T03:59:15Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768394
wikitext
text/x-wiki
{{DicoPhilo|Émergence|lecture=oui}}
La notion d'émergence désigne une relation entre un tout et ses parties selon laquelle le tout manifeste des propriétés nouvelles qui, tout en dépendant ontologiquement des propriétés de ses parties et de leurs relations, ne peuvent néanmoins être réduites à celles-ci. Cette notion occupe une place centrale dans les débats contemporains en philosophie de l'esprit, en philosophie de la biologie et en métaphysique générale, où elle offre une voie médiane entre le réductionnisme strict et le dualisme.
== Origines et formulation classique ==
=== John Stuart Mill et la distinction fondatrice ===
Bien que le terme « émergence » lui-même n'apparaisse qu'ultérieurement, on attribue généralement à John Stuart Mill la première articulation philosophique claire de l'idée qui la sous-tend. Dans son ''Système de logique déductive et inductive'' (1843), Mill établit une distinction décisive entre deux types de lois causales : les lois homopathiques et les lois hétéropathiques<ref>Mill, John Stuart (1843). ''A System of Logic, Ratiocinative and Inductive'', livre III, chapitre 6, Londres, John W. Parker</ref>. Les premières obéissent au principe de « composition des causes », selon lequel les effets s'additionnent de manière prévisible et proportionnelle (comme l'addition vectorielle des forces en mécanique classique). Les secondes, en revanche, produisent des effets qui ne peuvent être déduits par simple addition ou composition des causes séparées, même lorsqu'on dispose d'une connaissance exhaustive de ces dernières.
Mill observe que les propriétés de l'eau — sa transparence, sa liquidité, son pouvoir solvant — ne peuvent être déduites des propriétés de l'hydrogène et de l'oxygène considérés isolément. Bien qu'on connaisse parfaitement les propriétés chimiques et physiques des atomes constituants, rien dans ces propriétés n'aurait permis de prédire ou de comprendre les propriétés macroscopiques de l'eau. Cette observation pose les fondations conceptuelles de ce qui deviendra l'émergentisme : l'idée que certains phénomènes naturels, bien qu'issus de constituants élémentaires, possèdent une autonomie explicative et peut-être ontologique qui les rend irréductibles aux lois gouvernant ces constituants<ref>McLaughlin, Brian P. (1992). "The Rise and Fall of British Emergentism", dans Beckermann, Ansgar; Flohr, Hans; Kim, Jaegwon (dir.), ''Emergence or Reduction?'', Berlin, De Gruyter, p. 49-93</ref>.
=== L'émergentisme britannique classique et ses figures majeures ===
C'est George Henry Lewes qui, dans ses ''Problems of Life and Mind'' (1875), introduit véritablement le terme « émergent » pour qualifier précisément ces effets qui ne sont pas de simples résultantes additives<ref>Lewes, George Henry (1875). ''Problems of Life and Mind'', 2 volumes, Londres, Trübner, vol. 2, p. 412</ref>. Selon Lewes, une entité peut résulter de l'action d'entités plus fondamentales tout en étant radicalement nouvelle et irréductible par rapport à ces dernières. L'émergence n'est pas une illusion épistémique, mais une caractéristique réelle de la nature.
L'émergentisme atteint sa maturité philosophique systématique avec trois grandes figures du début du vingtième siècle : Samuel Alexander, Conwy Lloyd Morgan et Charlie Dunbar Broad. Chacun élabore une métaphysique d'envergure fondée sur le concept d'émergence, bien qu'avec des emphases et des développements distincts.
==== Samuel Alexander : la cosmologie émergentiste ====
Dans son œuvre monumentale ''Space, Time, and Deity'' (1920), Samuel Alexander construit une cosmologie émergentiste selon laquelle l'univers se déploie selon une hiérarchie strictement stratifiée de niveaux d'organisation<ref>Alexander, Samuel (1920). ''Space, Time, and Deity'', 2 volumes, Londres, Macmillan</ref>. À la base se trouve l'Espace-Temps (''Space-Time''), substance primordiale ou ''matrix'' à partir de laquelle émergent successivement la matière brute, la vie, l'esprit ou conscience (''mind'') et, ultimement, la déité (''Deity''). Chaque niveau supérieur conserve les propriétés du niveau inférieur tout en manifestant des « qualités émergentes » entièrement nouvelles et inexplicables à partir du niveau inférieur seul.
La déité, pour Alexander, ne représente pas une réalité actuelle mais plutôt une qualité émergente vers laquelle tend l'évolution cosmique — c'est une qualité en devenir, une puissance orientant l'univers sans y être pleinement réalisée. Cette conception théologique insolite place l'émergence au cœur même de la métaphysique du divin<ref>Alexander, Samuel (1920). ''Space, Time, and Deity'', vol. 2, livre IV, chapitres 44-46, p. 345-361</ref>.
Alexander conçoit l'émergence comme un processus cosmique gouverné par ce qu'il nomme le ''nisus'' — une tendance intrinsèque de la matière vers la complexification, l'organisation et l'apparition de qualités radicalement nouvelles. Cette conception lie étroitement émergence et évolution, faisant de la première non pas un phénomène statique ou mécanique mais un processus dynamique inscrit dans le devenir temporel du cosmos. L'univers n'est pas une machine statique mais un processus créatif continuel.
==== Conwy Lloyd Morgan : l'évolution émergente ====
Biologiste et psychologue de formation, Conwy Lloyd Morgan publie en 1923 ''Emergent Evolution'', ouvrage fondateur dans lequel il élabore l'idée d'une évolution procédant non par gradations continues mais par « sauts » qualitatifs véritables<ref>Morgan, C. Lloyd (1923). ''Emergent Evolution'', Londres, Williams & Norgate</ref>. Cette thèse s'oppose directement au gradualism darwinien strict, affirmant que l'histoire naturelle connaît des moments de discontinuité qualitative où surgissent de véritables nouveautés irréductibles.
Morgan distingue précisément les propriétés « résultantes » — qui sont simplement additives, prévisibles et réductibles — des propriétés « émergentes » — qui apparaissent lorsqu'un certain seuil critique de complexité organisationnelle est franchi et qui ne peuvent être ni prédites ni expliquées à partir de la seule connaissance des niveaux inférieurs. Il propose une image pyramidale de la réalité, structurée en niveaux hiérarchiques où chaque niveau supérieur possède des propriétés émergentes véritablement irréductibles aux propriétés des niveaux inférieurs.
Remarquablement, Morgan maintient que cette émergence véritable s'inscrit entièrement dans le cadre d'un naturalisme scientifique, sans invoquer de forces vitales, d'énergies occultes ou de principes surnaturels. Il rejette explicitement le vitalisme cartésien autant que le mécanisme réductionniste, offrant une troisième voie<ref>Morgan, C. Lloyd (1923). ''Emergent Evolution'', p. 1-36</ref>.
Morgan introduit en particulier le concept de « relationnalité » (''relatedness'') pour caractériser l'essence de l'émergence : ce qui émerge à un niveau donné constitue « un nouveau genre de relationnalité dont il n'existe aucune instance aux niveaux inférieurs »<ref>Morgan, C. Lloyd (1923). ''Emergent Evolution'', p. 15</ref>. L'émergence consiste précisément en l'apparition de nouveaux modes d'organisation relationnelle entre les composants d'un système — modes qui n'existaient pas avant, même potentiellement. C'est la transformation des relations, plus que l'apparition de nouveaux éléments, qui constitue l'émergence.
==== C. D. Broad : analyse rigoureuse et lois trans-ordinales ====
Charlie Dunbar Broad offre dans ''The Mind and its Place in Nature'' (1925) l'analyse philosophique la plus rigoureuse et méthodique de la notion d'émergence<ref>Broad, C. D. (1925). ''The Mind and its Place in Nature'', Londres, Kegan Paul, réédition 1960</ref>. Broad formule un critère épistémologique d'une grande clarté : une propriété P d'un système S est émergente si et seulement si, même un « archange mathématique » possédant une connaissance logiquement complète des propriétés des parties de S, des lois gouvernant le comportement de ces parties prises isolément, et des lois gouvernant leur composition, ne pourrait malgré tout prédire ou déduire P avant son apparition effective dans le système composé.
Cette impossibilité de prédiction, insiste Broad, ne reflète pas simplement des limitations épistémiques humaines contingentes. Elle témoigne plutôt d'une structure ontologique réelle du monde : certaines propriétés et certaines lois sont fondamentales dans l'architecture de la réalité et ne peuvent être dérivées d'autres propriétés ou lois plus basiques. Broad parle de « lois trans-ordinales » (''trans-ordinal laws'') ou « lois sui generis » qui gouvernent l'apparition de propriétés émergentes lorsque des composants s'organisent selon certaines configurations complexes<ref>Broad, C. D. (1925). ''The Mind and its Place in Nature'', p. 55-79</ref>. Ces lois doivent être « simplement avalées entières », selon sa formule évocatrice, avec cette « piété naturelle » dont parle Alexander — c'est-à-dire acceptées comme des faits ultimes de la nature auxquels toute explication scientifique doit finalement aboutir.
Broad applique cette analyse systématique au problème central de la philosophie de l'esprit : les qualités phénoménales de l'expérience consciente (les ''qualia'' — la rougeur de la perception du rouge, la douleur vécue de la douleur) constituent selon lui des propriétés émergeantes qui ne peuvent être logiquement déduites de la connaissance complète des processus neurophysiologiques, aussi exhaustive soit-elle. C'est là un argument majeur en faveur de l'irréductibilité phénoménale du mental.
=== Le déclin de l'émergentisme britannique : causes historiques ===
L'émergentisme britannique connaît un déclin considérable à partir des années 1930, déclin qui s'accélère après la Seconde Guerre mondiale. Ce déclin ne résulte pas d'une réfutation philosophique décisive mais plutôt de convergences entre développements scientifiques et difficultés conceptuelles apparentes.
Sur le plan scientifique, les progrès spectaculaires de la chimie quantique — culminant dans l'explication réductive de la liaison chimique par Linus Pauling et d'autres — ont semblé aux physiciens et chimistes démontrer que ce que les émergentistes considéraient comme des propriétés chimiques irréductibles pouvait en fait être déduit des lois de la mécanique quantique appliquées aux atomes constituants<ref>McLaughlin, Brian P. (1992). "The Rise and Fall of British Emergentism", p. 85-90</ref>. Cette réussite réductionniste spectaculaire dans un domaine que les émergentistes présentaient comme paradigmatique — la chimie inorganique — a considérablement ébranlé la crédibilité de leur programme.
Sur le plan philosophique, l'émergentisme se heurtait à des difficultés conceptuelles majeures et apparemment insurmontables concernant la causalité. Si les propriétés émergentes possèdent de véritables pouvoirs causaux autonomes (la « causalité descendante » ou ''downward causation''), comment ces pouvoirs s'articulent-ils consistemment avec les pouvoirs causaux des propriétés de base ? Comment éviter la surdétermination causale ou la violation de la clôture causale du physique ? Ces questions, déjà problématiques pour les émergentistes classiques, trouveront leur formulation la plus aiguë dans l'« argument d'exclusion causale » de Jaegwon Kim au tournant des vingt-et-unième siècles.
== Reformulations contemporaines ==
=== Émergence faible et émergence forte : une distinction cruciale ===
Dans les débats contemporains, il est devenu usuel et utile de distinguer deux conceptions radicalement différentes de l'émergence : l'émergence « faible » (''weak emergence'') et l'émergence « forte » (''strong emergence'')<ref>Chalmers, David J. (2006). "Strong and Weak Emergence", dans Clayton, Philip; Davies, Paul (dir.), ''The Re-Emergence of Emergence'', Oxford University Press, p. 244-256</ref><ref>Bedau, Mark A. (1997). "Weak Emergence", ''Philosophical Perspectives'', vol. 11, p. 375-399</ref>.
L'émergence faible caractérise les phénomènes de niveau macroscopique qui, bien que dérivant causalement et ontologiquement de processus de niveau microscopique selon des lois déterministes, ne peuvent néanmoins être prédits ou compris de manière effective et pratique qu'en suivant littéralement l'évolution dynamique du système dans le temps. L'émergence est ici principalement et fondamentalement de nature épistémique : elle reflète des limites pratiques et peut-être des limites de principe de notre capacité computationnelle et conceptuelle à déduire le comportement macroscopique à partir des lois microscopiques seules.
Les exemples paradigmatiques d'émergence faible proviennent de la théorie des systèmes complexes : les motifs et patterns qui émergent dans les automates cellulaires (comme le fameux « Jeu de la Vie » de Conway), les structures auto-organisées spontanément dans les systèmes physiques loin de l'équilibre thermodynamique, ou les comportements collectifs complexes dans les systèmes multi-agents (essaims, trafic routier, foules). Dans tous ces cas, les phénomènes macroscopiques sont « en principe » réductibles et déterminés par les lois microscopiques, mais « en pratique » ou « effectivement » irréductibles.
L'émergence forte, en revanche, désigne une relation métaphysique d'une tout autre nature : elle affirme que des propriétés de haut niveau ne sont pas déductibles, même ''en principe'' ou ''logiquement'', des propriétés et lois de bas niveau, indépendamment de considérations épistémiques concernant nos capacités de calcul. De plus, les propriétés fortement émergentes posséderaient des pouvoirs causaux autonomes véritables, irréductibles aux pouvoirs des propriétés de base. C'est précisément cette conception qu'incarnaient les émergentistes britanniques classiques. Les propriétés fortement émergentes seraient fondamentales dans l'architecture ontologique du réel, ne pourraient être réduites ontologiquement aux propriétés de leur base de survenance, et constitueraient de véritables innovations dans le tissu causal de l'univers.
Cette distinction éclaire considérablement les débats académiques : de nombreux phénomènes considérés aujourd'hui comme « émergents » dans les sciences (notamment en sciences de la complexité, en biologie des systèmes, en neurosciences cognitives, en sciences sociales) relèvent principalement, sinon exclusivement, de l'émergence faible. L'émergence forte, quant à elle, demeure hautement controversée et son existence même est contestée par une majorité de philosophes analytiques.
=== L'émergence dans la philosophie de l'esprit contemporaine ===
C'est en philosophie de l'esprit et de la conscience que la notion d'émergence forte a connu son regain d'intérêt le plus significatif depuis les années 1970. Face aux difficultés redoutables du dualisme cartésien (le problème d'interaction : comment des substances radicalement hétérogènes peuvent-elles interagir causalement ?) et du réductionnisme physiciste strict (qui semble éliminer ou nier la dimension phénoménale irréducible de l'expérience consciente), l'émergentisme offre une position intermédiaire séduisante : le « physicalisme non réductionniste » ou plus précisément le « dualisme des propriétés »<ref>Kim, Jaegwon (2000). "L'émergence, les modèles de réduction et le mental", ''Philosophiques'', vol. 27, n° 1, p. 11-26</ref>.
Selon cette approche émergentiste, les propriétés mentales (croyances, désirs, intentions, expériences conscientes) sont des propriétés émergentes qui superviennent sur des états physiques — particulièrement les états neurobiologiques du cerveau — sans pour autant s'y réduire ou en être logiquement dérivables. Les propriétés mentales dépendent ontologiquement de leur base physique (il n'y a aucun changement mental possible sans changement physique correspondant dans le cerveau), mais possèdent néanmoins une autonomie explicative et probablement causale propre.
==== L'argument d'exclusion causale de Jaegwon Kim : le défi central ====
Jaegwon Kim a formulé l'objection la plus redoutable et la plus influente contre cette forme de physicalisme émergentiste non réductionniste : l'« argument d'exclusion causale »<ref>Kim, Jaegwon (1998). ''Mind in a Physical World'', Cambridge, MIT Press</ref><ref>Kim, Jaegwon (2005). ''Physicalism, or Something Near Enough'', Princeton, Princeton University Press</ref>. Cet argument, présenté sous plusieurs formes au cours de la carrière de Kim, repose sur trois prémisses apparemment plausibles et difficilement contestables :
1. Clôture causale du domaine physique : tout événement physique qui possède une cause suffisante a une cause physique suffisante. Aucun événement physique n'est causé par quelque chose de non-physique.
2. Efficacité causale du mental : les propriétés mentales causent parfois des événements physiques. Nos croyances, désirs, intentions causent nos comportements corporels et ont ainsi un rôle causal réel.
3. Pas de surdétermination causale systématique : les événements physiques ne sont pas systématiquement « surdéterminés » — c'est-à-dire n'ont pas régulièrement plusieurs causes complètes et indépendantes suffisantes pour les produire.
De ces trois prémisses, qui semblent chacune très raisonnables, Kim conclut que si les propriétés mentales ne sont pas strictement identiques aux propriétés physiques (comme l'affirme le physicalisme non réductionniste en admettant leur irréductibilité), alors ces propriétés mentales ne peuvent avoir de réelle efficacité causale : elles deviennent des épiphénomènes purs — des accompagnements casuels, sans pouvoir causal véritable, des véritables processus physiques qui font le travail causal.
Pour Kim, cette conclusion inconfortable invite à abandonner purement et simplement le physicalisme non réductionniste. Il faut opter soit pour un réductionnisme plus franc et complet (identifiant les propriétés mentales à des propriétés physiques et acceptant ainsi leur réductibilité complète), soit pour une forme d'« émergentisme » qui reconnaît honnêtement l'impuissance explicative de la physique concernant les phénomènes mentaux — position que Kim lui-même juge très difficile à concilier avec le naturalisme scientifique standard<ref>Kim, Jaegwon (2006). "Being Realistic about Emergence", dans Clayton, Philip; Davies, Paul (dir.), ''The Re-Emergence of Emergence'', Oxford University Press, p. 189-202</ref>.
Cet argument de Kim demeure au centre de tous les débats contemporains sur l'émergence et le physicalisme, et il reste profondément divisif : certains le considèrent comme démolisseur de toute forme de physicalisme non réductionniste viable, tandis que d'autres proposent diverses contre-stratégies.
=== Émergence et sciences de la complexité ===
Parallèlement aux débats en philosophie de l'esprit, le concept d'émergence (principalement au sens faible et épistémique) a connu un développement vigoureux et fécond dans les sciences de la complexité depuis les années 1970-1980. Les systèmes complexes — qu'ils soient physiques (turbulence, transitions de phase loin de l'équilibre, phénomènes critiques), chimiques (réactions oscillantes de Belousov-Zhabotinsky, structures dissipatives), biologiques (morphogenèse, dynamiques écosystémiques, réseaux neuronaux), ou sociaux (dynamiques de foules, marchés financiers, systèmes politiques) — manifestent tous des comportements collectifs émergents remarquables qui ne peuvent être compris par l'analyse réductionniste isolée de leurs composants<ref>Ladyman, James; Lambert, James; Wiesner, Karoline (2013). "What is a Complex System?", ''European Journal for Philosophy of Science'', vol. 3, n° 1, p. 33-67</ref>.
Les caractéristiques typiques de ces systèmes complexes incluent : (1) des interactions hautement non-linéaires entre un nombre élevé de composants ; (2) des boucles de rétroaction multiples, positives et négatives ; (3) l'auto-organisation spontanée de structures ordonnées à partir de conditions initiales désordonnées ou chaotiques ; (4) la sensibilité accrue aux conditions initiales ; et (5) l'apparition de propriétés globales, de patterns et de régularités qui ne se manifestent qu'au niveau macroscopique collectif.
L'auto-organisation constitue le processus paradigmatique à travers lequel émergence et complexité s'interpénètrent : ce processus par lequel un système, soumis à des contraintes énergétiques et matérielles et maintenu loin de l'équilibre thermodynamique, développe spontanément une structure ordonnée, une organisation complexe, sans aucune direction ou programmation externe<ref>Nicolis, Grégoire; Prigogine, Ilya (1977). ''Self-Organization in Nonequilibrium Systems'', New York, Wiley</ref>. Les exemples classiques incluent les cellules de Bénard (structures hexagonales apparaissant spontanément dans un fluide chauffé), les motifs réguliers de Turing en morphogenèse biologique, les comportements collectifs d'insectes sociaux (construction élaborée de termitières par des termites individuellement simples, optimisation des chemins par les colonies de fourmis).
Remarquablement, cette conception scientifique de l'émergence met l'accent prioritaire sur la relationnalité et l'organisation plutôt que sur les propriétés intrinsèques individuelles des composants. Ce qui émerge au niveau macroscopique n'est pas tant une nouvelle substance ou une nouvelle force naturelle qu'un nouveau régime d'organisation dynamique, un nouveau mode de structuration des relations entre composants. Cette perspective rejoint l'intuition profonde de Lloyd Morgan concernant la « relationnalité » comme essence véritable de l'émergence.
== Enjeux épistémologiques et métaphysiques fondamentaux ==
=== Émergence et réductibilité scientifique ===
La notion d'émergence s'articule étroitement avec la question philosophique majeure de la réductibilité scientifique. Traditionnellement, en philosophie des sciences, on considère qu'une théorie scientifique T₁ est réduite à une théorie scientifique T₂ si et seulement si les lois et concepts de T₁ peuvent être logiquement dérivés de ceux de T₂, éventuellement enrichis par des « lois de correspondance » ou « lois-ponts » établissant des connexions systématiques entre les vocabulaires des deux théories<ref>Nagel, Ernest (1961). ''The Structure of Science'', New York, Harcourt, Brace & World, chapitre 11</ref>.
L'émergence forte implique l'échec de principe de cette réduction : certaines lois ou propriétés fondamentales de T₁ ne peuvent être logiquement dérivées de T₂, quelles que soient les richesses ou enrichissements apportés à cette dernière. C'est précisément ce que les émergentistes britanniques classiques défendaient : les lois biologiques et psychologiques ne sont pas en principe réductibles aux lois physico-chimiques, même si les systèmes biologiques et mentaux sont entièrement composés de matière physico-chimique.
L'émergence faible, en revanche, demeure compatible avec la réductibilité de principe tout en soulignant les limites pratiques insurmontables de la dérivation effective : même si les phénomènes macroscopiques « découlent » logiquement et causalement des lois microscopiques, leur compréhension et explication effectives requièrent des concepts, des modèles et des explications autonomes au niveau macroscopique. Il s'instaure ici une forme d'« irréductibilité épistémique » ou d'« autonomie explicative » sans irréductibilité ontologique stricte.
Cette distinction éclaire profondément les débats contemporains sur le statut des sciences spéciales (biologie, psychologie, sociologie, neurosciences) vis-à-vis de la physique fondamentale. Même si l'on admet le physicalisme ontologique strict (tout ce qui existe est, en dernière analyse, physique), cela n'implique pas logiquement le réductionnisme explicatif intégral : les sciences spéciales peuvent légitimement conserver une autonomie méthodologique et conceptuelle durable<ref>Fodor, Jerry (1974). "Special Sciences (Or: The Disunity of Science as a Working Hypothesis)", ''Synthese'', vol. 28, n° 2, p. 97-115</ref>.
=== Holisme méthodologique et émergence ===
L'émergence entretient des liens complexes et ambigus avec le holisme — la doctrine selon laquelle « le tout est plus que la somme de ses parties ». Il convient cependant de distinguer plusieurs formes distinctes de holisme pour éviter les confusions terminologiques.
Le holisme ontologique affirme que certains touts possèdent une réalité propre et autonome, irréductible à celle de leurs parties constituantes. Cette position se heurte à des difficultés conceptuelles : si le tout est vraiment distinct et séparable de ses parties, qu'est-ce qui garantit et explique la dépendance manifeste du tout vis-à-vis de ses parties ? L'émergence offre une voie médiane conceptuellement cohérente : le tout dépend ontologiquement strictement de ses parties et de leur organisation (aucun changement dans le tout sans changement correspondant dans les parties ou leurs relations), mais manifeste néanmoins des propriétés et des pouvoirs causaux véritablement nouveaux.
Le holisme épistémologique ou méthodologique soutient que la compréhension et l'explication de certains systèmes et phénomènes requièrent intrinsèquement une approche synthétique au niveau global qui ne peut être remplacée ou dérivée de l'analyse réductive des parties isolées. Cette position est largement compatible avec l'émergence faible : même si le système « n'est ontologiquement rien d'autre que » ses parties en interaction, sa compréhension effective et pratique nécessite des concepts, des modèles et des outils propres au niveau macroscopique collectif.
Le holisme sémantique (défendu notamment par Quine et Donald Davidson dans sa théorie de l'anomalisme du mental) concerne la signification et la référence des termes linguistiques et affirme que celle-ci dépend de la totalité du réseau conceptuel et théorique dans lequel s'insère le terme. Cette forme de holisme sémantique demeure relativement indépendante des questions d'émergence ontologique et causale<ref>Esfeld, Michael (2001). ''Holism in Philosophy of Mind and Philosophy of Physics'', Dordrecht, Kluwer Academic Publishers</ref>.
=== Niveaux de réalité et stratification ontologique ===
La notion d'émergence implique conceptuellement une vision stratifiée ou hiérarchisée de la réalité naturelle, organisée en niveaux distincts — niveau physique, chimique, biologique, psychologique, social. Chaque niveau supérieur « repose sur » ou « supervient sur » le niveau inférieur dans des relations de dépendance robustes, tout en manifestant potentiellement des propriétés et des lois émergentes propres.
Cette image hiérarchisée soulève cependant plusieurs questions philosophiques épineuses. Comment précisément individuer et délimiter les niveaux distincts ? Qu'est-ce qui définit réellement un « niveau » : la nature ontologique des entités considérées, les lois spécifiques qui les gouvernent, les échelles spatiales ou temporelles caractéristiques, ou simplement les domaines disciplinaires de compétence des sciences particulières ? La stratification en niveaux est-elle objective et découverte dans la nature elle-même, ou reflète-t-elle simplement notre organisation pragmatique et conventionnelle de la connaissance scientifique ?
De plus, la relation de « survenance » entre niveaux — formellement définie comme : le niveau supérieur supervient sur le niveau inférieur si et seulement si aucune différence au niveau supérieur n'est possible sans différence correspondante au niveau inférieur — n'implique pas automatiquement la réduction explicative ni l'émergence ontologique. La survenance établit simplement une dépendance ontologique forte, mais laisse ouverte la question de la réductibilité explicative et de l'autonomie causale<ref>Kim, Jaegwon (1993). ''Supervenience and Mind'', Cambridge, Cambridge University Press</ref>.
=== Causalité descendante : possibilité conceptuelle et défis ===
L'une des caractéristiques les plus controversées attribuées aux propriétés émergentes est la « causalité descendante » (''downward causation'') : la capacité supposée des propriétés de haut niveau à influencer et à causer des changements dans les processus de bas niveau qui les réalisent matériellement.
Les exemples invoqués par les défenseurs de la causalité descendante sont nombreux et intuitifs : la sélection naturelle opérant au niveau des organismes et des populations contraint effectivement l'évolution au niveau génomique et génétique ; les états mentaux volontaires — croyances, intentions, désirs — causent les comportements corporels en influençant causalement les processus neuronaux du cerveau ; la structure organisationnelle et les normes d'une institution sociale contraignent et canalisent les comportements individuels de ses membres.
Cependant, l'argument d'exclusion causale de Kim vise précisément à montrer que la causalité descendante devient problématique — et peut-être impossible — dans le cadre d'une ontologie physicaliste acceptant la clôture causale du domaine physique. Si tout événement physique possède déjà une cause physique suffisante au niveau microstructurel, quel rôle ou pouvoir causal genuine reste-t-il pour les propriétés de niveau macroscopique ?
Plusieurs philosophes contemporains ont tenté de défendre la viabilité conceptuelle de la causalité descendante en la redéfinissant ou en la réinterprétant. Selon une approche proposée notamment par Carl Gillett, les propriétés émergentes ne causent pas leurs effets de manière indépendante ou supplémentaire par rapport à leur base de réalisation physique. Au contraire, elles causent leurs effets précisément en vertu de, et par l'intermédiaire de, leur réalisation physique : c'est en étant réalisées par certains états physiques complexes que les propriétés mentales acquièrent réellement des pouvoirs causaux sur d'autres états physiques. Il s'agirait d'un mode de causalité réelle mais « médiatisée » par le physique — distinct de la causalité « productrice » classique supposée entre événements séparés<ref>Gillett, Carl (2016). ''Reduction and Emergence in Science and Philosophy'', Cambridge, Cambridge University Press</ref>.
D'autres philosophes (notamment Donald Campbell) ont proposé de concevoir la causalité descendante moins en termes de production causale que comme exercice de contraintes ou de sélection : les structures de haut niveau ne produisent pas directement ou efficacement les événements de bas niveau, mais elles contraignent de manière réelle l'espace des trajectoires possibles au niveau microstructurel, sélectionnant parmi les possibilités ce qui peut effectivement se réaliser<ref>Campbell, Donald T. (1974). "Downward Causation in Hierarchically Organised Biological Systems", dans Ayala, Francisco J.; Dobzhansky, Theodosius (dir.), ''Studies in the Philosophy of Biology'', Macmillan, p. 179-186</ref>.
== Perspectives et prolongements contemporains ==
=== Émergence et neurosciences contemporaines de la conscience ===
Les neurosciences contemporaines de la conscience constituent un domaine de recherche d'une fertilité exceptionnelle pour l'application empirique et la discussion philosophique du concept d'émergence. La question centrale reste : comment l'expérience consciente phénoménale — avec ses aspects qualitatifs irréductibles, sa subjectivité, sa dimensionnalité phénoménale — émerge-t-elle de l'activité matérielle et électrochimique du cerveau ?
Plusieurs théories neuroscientifiques d'envergure proposent des mécanismes explicatifs distincts. La théorie de l'espace de travail neuronal global (''Global Neuronal Workspace''), élaborée par Stanislas Dehaene, Jean-Pierre Changeux et Lionel Naccache, postule que la conscience correspond à l'accès de l'information sensorielle et cognitive dans un réseau anatomiquement distribué de neurones à longue distance permettant la diffusion globale et rapide de l'information à travers tout le cerveau<ref>Dehaene, Stanislas; Changeux, Jean-Pierre (2011). "Experimental and Theoretical Approaches to Conscious Processing", ''Neuron'', vol. 70, n° 2, p. 200-227</ref>. L'émergence de la conscience serait ainsi intrinsèquement liée à un certain régime d'activité collective neuronale caractérisé par une intégration et une diffusion d'information à grande échelle transhémisphérique.
La théorie de l'information intégrée (''Integrated Information Theory'' ou IIT), proposée par Giulio Tononi et collaborateurs, caractérise la conscience ou la « capacité phénoménale » d'un système par le degré d'intégration informationnelle que le système génère : un système possède une conscience phénoménale d'autant plus riche et intense que l'information qu'il génère intrinsèquement est à la fois hautement différenciée (capable d'un nombre immense d'états distincts) et fortement intégrée (chaque partie du système est informationnellement contrainte par toutes les autres)<ref>Tononi, Giulio (2008). "Consciousness as Integrated Information: a Provisional Manifesto", ''Biological Bulletin'', vol. 215, n° 3, p. 216-242</ref>. L'émergence de la conscience correspondrait au franchissement de seuils critiques d'intégration informationnelle.
Ces théories neuroscientifiques, bien que divergentes dans leurs détails mécanistiques, partagent une conception fondamentale de la conscience comme propriété émergente systémique collective — une propriété qui résulte de l'organisation complexe et de la dynamique collective d'ensembles neuronaux massifs, plutôt que des propriétés de neurones individuels isolés.
Reste ouverte la question philosophique cruciale et peut-être irrésolvable : ces théories rendent-elles véritablement compte de l'émergence de la conscience au sens fort (impliquant l'irréductibilité véritable des ''qualia'' phénoménaux) ou seulement au sens faible (expliquant causalement et neurobiologiquement les corrélats matériels de la conscience et les fonctions cognitives associées, tout en laissant complètement inexpliqué le « fossé explicatif » entre propriétés physico-chimiques et expérience phénoménale vécue) ?<ref>Chalmers, David J. (1995). "Facing Up to the Problem of Consciousness", ''Journal of Consciousness Studies'', vol. 2, n° 3, p. 200-219</ref>
=== Émergence en biologie : de la biochimie moléculaire à l'écologie ===
La biologie contemporaine offre de multiples exemples tangibles de phénomènes et de processus émergents à différentes échelles organisationnelles. Au niveau moléculaire, les propriétés fonctionnelles remarquables des protéines émergent du repliement tridimensionnel complexe des longues chaînes polypeptidiques. Au niveau cellulaire, le métabolisme énergétique et l'homéostasie physiologique émergent des réseaux intriqués d'interactions biochimiques catalytiques. Au niveau organismique, les comportements complexes coordonnés émergent de l'activité intégrée des systèmes nerveux distribués. Au niveau écologique, les dynamiques de populations et l'équilibre ou l'instabilité des écosystèmes émergent des interactions multiples entre organismes et avec leur environnement physique.
Le débat philosophique historique entre « mécanisme biologique » strict et « vitalisme » qui a structuré la biologie du dix-neuvième et du début du vingtième siècle peut être réconsidéré et rééclairé à travers le prisme de l'émergence. Les mécanistes soutenaient rigoureusement que tous les phénomènes biologiques s'expliquent entièrement par réduction aux lois physico-chimiques ; les vitalistes invoquaient des principes ou forces vitales irréductibles, surnaturelles. L'émergentisme, en particulier dans la version sophistiquée de Broad, offrait une troisième voie conceptuellement médiane : les organismes vivants sont entièrement constitués de matière physico-chimique ordinaire gouvernée par les lois de la physique et de la chimie, mais manifestent néanmoins des propriétés biologiques et obéissent à des lois biologiques qui, bien qu'en continuité naturelle avec les lois physiques, ne s'y réduisent pas entièrement<ref>Broad, C. D. (1925). ''The Mind and its Place in Nature'', p. 43-79</ref>.
La biologie contemporaine des systèmes dynamiques réactualise et valide cette perspective émergentiste en étudiant intensément les propriétés émergentes des réseaux biologiques complexes (réseaux métaboliques, réseaux de régulation génétique, réseaux de signalisation cellulaire, réseaux neuronaux) : ces propriétés réseau ne peuvent être comprises par l'analyse réductionniste isolée des composants (gènes, protéines, récepteurs) mais requièrent des approches systémiques intégratives modélisant la dynamique des interactions multiples<ref>Kitano, Hiroaki (2002). "Systems Biology: A Brief Overview", ''Science'', vol. 295, n° 5560, p. 1662-1664</ref>.
=== Émergence et philosophie des sciences sociales ===
Les sciences sociales posent de manière aiguë et centrale la question de l'émergence. Les phénomènes sociaux macroscopiques — institutions formelles, marchés économiques, langues naturelles, systèmes culturels — « émergent » causalement et temporellement des actions et interactions d'innombrables individus particuliers. Mais possèdent-ils réellement une réalité objective et une autonomie causale propres, ou ne constituent-ils que des façons commodes et pragmatiques de parler d'agrégats d'individus ?
L'« individualisme méthodologique » classique soutient rigoureusement que tous les phénomènes sociaux doivent s'expliquer ultimement par réduction aux propriétés, préférences et actions d'individus particuliers. Le « holisme méthodologique » affirme en revanche que certains faits sociaux cruciaux ne peuvent s'expliquer que par d'autres faits sociaux au niveau collectif, sans réduction aux individus. L'émergence offre une position médiane philosophiquement cohérente : les phénomènes sociaux dépendent ontologiquement strictement des individus et de leurs interactions (il n'y a pas de société sans individus, pas de marché sans acteurs économiques), mais possèdent néanmoins des propriétés structurelles et suivent des régularités causales qui ne se manifestent qu'au niveau collectif et exercent en retour une influence causale ou constitutive réelle sur les comportements individuels<ref>Sawyer, R. Keith (2005). ''Social Emergence: Societies as Complex Systems'', Cambridge, Cambridge University Press</ref>.
Émile Durkheim, dans son ouvrage fondateur ''Les Règles de la méthode sociologique'' (1895), défendait déjà une forme perspicace d'émergentisme social : il affirmait que les faits sociaux constituent « un ordre de faits spécifiques et irréductibles », émergeant de la combinaison et de l'interaction d'éléments individuels mais manifestant des propriétés « complètement étrangères » et inaccessibles à ces derniers pris isolément<ref>Durkheim, Émile (1895). ''Les Règles de la méthode sociologique'', 2nd édition, Paris, Félix Alcan, préface et introduction, p. xvi-xxv</ref>.
== Conclusion : bilan et perspectives d'avenir ==
La notion d'émergence occupe une position singulière et fertile dans le paysage philosophique et scientifique contemporain. Elle est à la fois profondément attirante conceptuellement et problématique philosophiquement, offrant une voie médiane intuitive entre réductionnisme strict et dualisme, tout en soulevant des difficultés conceptuelles sérieuses et peut-être insurmontables.
L'ambiguïté fondamentale entre émergence faible (principalement épistémique et computationnelle) et émergence forte (ontologiquement et causalement réelle) traverse l'ensemble des débats actuels et structure profondément les positions antagonistes.
L'émergence faible est largement acceptée et trouve de nombreuses applications fécondes et empiriquement validées dans les sciences de la complexité, la biologie des systèmes, les neurosciences cognitives, la physique des systèmes loin de l'équilibre. Elle correspond à une stratégie explicative scientifiquement légitime et importante, reconnaissant que certains phénomènes naturels, bien que dérivant causalement de processus de bas niveau réductibles en principe, requièrent pour leur compréhension effective et leur explication des concepts et des outils propres au niveau macroscopique.
L'émergence forte demeure hautement controversée. L'argument d'exclusion causale de Kim soulève des difficultés conceptuelles sérieuses et apparemment graves pour toute tentative de concilier physicalisme non réductionniste authentique et autonomie causale véritable des propriétés émergentes. Cependant, certains philosophes persévérants maintiennent que l'irréductibilité apparente de l'expérience consciente phénoménale — le « fossé explicatif » entre propriétés physico-chimiques et qualia — constitue un argument empirique et conceptuel puissant en faveur de l'émergence forte, même si cela implique de réviser certains présupposés du naturalisme physicaliste standard<ref>Chalmers, David J. (2006). "Strong and Weak Emergence", p. 244-256</ref>.
Au-delà des controverses métaphysiques persistantes, la notion d'émergence invite à une réflexion profonde sur la structure même de la réalité naturelle, l'organisation hiérarchique effectivement observable des sciences particulières, et les modes véritables d'explication et de compréhension scientifiques. Elle rappelle que la complexité remarquable du monde naturel ne se laisse peut-être pas entièrement capturer par le projet réductionniste classique de ramener toute réalité à un niveau fondamental unique et d'expliquer tous les phénomènes par ses seules lois microscopiques. Au contraire, la reconnaissance de niveaux d'organisation distincts avec leurs propriétés et leurs régularités propres, leur autonomie explicative et potentiellement causale, peut constituer non pas un échec de l'explication scientifique mais une caractéristique incontournable et peut-être inévitable de celle-ci.
== Notes et références ==
{{references|colonnes=2}}
== Bibliographie sélective ==
Textes classiques fondateurs :
* Alexander, Samuel (1920). ''Space, Time, and Deity'', 2 volumes, Londres, Macmillan.
* Broad, C. D. (1925). ''The Mind and its Place in Nature'', Londres, Kegan Paul; réédition 1960.
* Mill, John Stuart (1843). ''A System of Logic, Ratiocinative and Inductive'', Londres, John W. Parker.
* Morgan, C. Lloyd (1923). ''Emergent Evolution'', Londres, Williams & Norgate.
Études historiques et systématiques :
* McLaughlin, Brian P. (1992). "The Rise and Fall of British Emergentism", dans Beckermann, A.; Flohr, H.; Kim, J. (dir.), ''Emergence or Reduction? Essays on the Prospects of Nonreductive Physicalism'', Berlin, De Gruyter, p. 49-93.
* McLaughlin, Brian P. (1997). "Emergence and Supervenience", ''Intellectica'', vol. 25, p. 25-43.
* O'Connor, Timothy; Wong, Hong Yu (2020). "Emergent Properties", ''Stanford Encyclopedia of Philosophy'', édition d'été 2020.
Débats philosophiques contemporains :
* Bedau, Mark A.; Humphreys, Paul (dir.) (2008). ''Emergence: Contemporary Readings in Philosophy and Science'', Cambridge, MIT Press.
* Chalmers, David J. (2006). "Strong and Weak Emergence", dans Clayton, P.; Davies, P. (dir.), ''The Re-Emergence of Emergence'', Oxford, Oxford University Press, p. 244-256.
* Gibb, Sophie; Hendry, Robin; Lancaster, Tom (dir.) (2019). ''The Routledge Handbook of Emergence'', Londres, Routledge.
* Kim, Jaegwon (1998). ''Mind in a Physical World'', Cambridge, MIT Press.
* Kim, Jaegwon (2005). ''Physicalism, or Something Near Enough'', Princeton, Princeton University Press.
* Kim, Jaegwon (2006). "Being Realistic about Emergence", dans Clayton, P.; Davies, P. (dir.), ''The Re-Emergence of Emergence'', Oxford, Oxford University Press, p. 189-202.
* Wilson, Jessica M. (2021). ''Metaphysical Emergence'', Oxford, Oxford University Press.
Applications scientifiques empiriques :
* Dehaene, Stanislas; Changeux, Jean-Pierre (2011). "Experimental and Theoretical Approaches to Conscious Processing", ''Neuron'', vol. 70, n° 2, p. 200-227.
* Gillett, Carl (2016). ''Reduction and Emergence in Science and Philosophy'', Cambridge, Cambridge University Press.
* Kitano, Hiroaki (2002). "Systems Biology: A Brief Overview", ''Science'', vol. 295, n° 5560, p. 1662-1664.
* Sawyer, R. Keith (2005). ''Social Emergence: Societies as Complex Systems'', Cambridge, Cambridge University Press.
{{AutoCat}}
pg4dbw1mu7qto2dyredgrmdb6ldx3dv
Dictionnaire de philosophie/Égalité
0
83175
768393
754222
2026-06-23T03:59:05Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768393
wikitext
text/x-wiki
{{DicoPhilo|Égalité|lecture=oui}}
L'égalité désigne une relation entre des êtres ou des choses qui possèdent une même quantité, qualité, valeur ou dignité. Dans le domaine philosophique, cette notion revêt une importance fondamentale dès lors qu'elle concerne les rapports entre les êtres humains et interroge les principes de justice qui doivent régler la vie en société. Loin d'être une donnée naturelle immédiatement observable, l'égalité se présente plutôt comme un idéal normatif qui demande à être pensé, justifié et mis en œuvre. La philosophie s'est efforcée de clarifier les différentes dimensions de cette notion en distinguant notamment l'égalité naturelle de l'égalité conventionnelle, l'égalité arithmétique de l'égalité géométrique ou proportionnelle, l'égalité formelle de l'égalité réelle, et en examinant les relations complexes que l'égalité entretient avec d'autres valeurs fondamentales comme la liberté, la justice ou le mérite.
== L'égalité dans l'Antiquité grecque ==
=== Aristote et la justice distributive ===
La réflexion philosophique sur l'égalité trouve l'une de ses premières formulations systématiques chez Aristote, qui consacre le livre V de l'''Éthique à Nicomaque'' à l'examen de la justice<ref>Aristote, ''Éthique à Nicomaque'', livre V, trad. J. Tricot, Paris, Vrin, 1990</ref>. Pour le Stagirite, la justice se définit essentiellement comme un respect de l'égalité : « Le juste, c'est l'égal ; l'injuste, c'est l'inégal »<ref>Aristote, ''Éthique à Nicomaque'', V, 3, 1131a10-15</ref>. Cette affirmation demande à être précisée, car l'égalité ne signifie pas nécessairement une distribution identique pour tous.
Aristote distingue deux formes principales de justice, auxquelles correspondent deux types d'égalité. La justice distributive, qui préside à la répartition des honneurs et des richesses dans la cité, obéit au principe de l'égalité géométrique ou proportionnelle. Cette égalité respecte le mérite de chacun : « Si les personnes ne sont pas égales, elles n'auront pas des parts égales »<ref>Aristote, ''Éthique à Nicomaque'', V, 3, 1131a20-25</ref>. Concrètement, cela signifie qu'il faut établir une proportion entre les personnes et les biens qui leur sont attribués. Si deux personnes A et B sont dans un rapport d'inégalité (par exemple, A possède deux fois plus de mérite que B), alors les biens A' et B' qui leur sont distribués doivent respecter le même rapport (A' sera le double de B'). Cette justice proportionnelle permet de concilier l'exigence d'égalité avec la reconnaissance des différences entre les individus.
La justice corrective ou commutative, qui intervient dans les transactions volontaires (échanges commerciaux) ou involontaires (délits, crimes), repose au contraire sur l'égalité arithmétique. Il s'agit de rétablir une stricte égalité entre les parties, indépendamment de leur mérite ou de leur statut social. Si quelqu'un a volé dix mines, la justice exige qu'il restitue exactement dix mines, sans tenir compte de ce que sont respectivement le voleur et la victime<ref>Aristote, ''Éthique à Nicomaque'', V, 4, 1132a1-10</ref>. Le juge doit ramener les deux parties à l'égalité en retirant au coupable ce qu'il a injustement gagné pour le rendre à celui qui a injustement perdu.
Cette distinction aristotélicienne entre égalité arithmétique et égalité géométrique marque profondément toute la réflexion ultérieure sur la justice distributive. Elle permet de comprendre pourquoi l'égalité ne saurait se réduire à une uniformité aveugle qui ignorerait les différences pertinentes entre les personnes. La conception aristotélicienne demeure prisonnière des préjugés de son époque concernant les inégalités naturelles. Aristote considère en effet que certaines inégalités entre les hommes sont fondées en nature : entre Grecs et barbares, entre hommes libres et esclaves, entre hommes et femmes. Ces hiérarchies naturelles justifient à ses yeux des traitements différenciés et l'exclusion de certaines catégories de personnes de la pleine citoyenneté.
=== Platon et l'égalité des gardiens ===
Platon, le maître d'Aristote, propose dans la ''République'' une réflexion audacieuse sur l'égalité, notamment dans la classe des gardiens de la cité idéale. Il soutient que les femmes possédant les mêmes aptitudes naturelles que les hommes doivent recevoir la même éducation et exercer les mêmes fonctions<ref>Platon, ''République'', livre V, 451c-457c, trad. G. Leroux, Paris, GF-Flammarion, 2002</ref>. Certes, Platon reconnaît que « en toutes choses, la femme est inférieure à l'homme »<ref>Platon, ''République'', V, 455d</ref>, mais cette infériorité ne concerne que la force physique moyenne et ne justifie pas une exclusion des femmes des fonctions politiques et militaires. L'argument central de Platon repose sur le principe de spécialisation : chaque individu doit occuper la fonction pour laquelle sa nature le rend le plus apte, indépendamment de son sexe. Si une femme possède les qualités requises pour être gardien ou philosophe-roi, il serait irrationnel de l'en écarter au seul motif qu'elle est femme.
Cette position, exceptionnellement progressiste pour l'époque, s'accompagne de mesures qui nous apparaissent aujourd'hui hautement problématiques. Platon préconise la communauté des femmes et des enfants parmi les gardiens, ainsi qu'une politique eugéniste visant à améliorer la qualité du « troupeau » humain<ref>Platon, ''République'', V, 459d-460b</ref>. Ces propositions montrent que l'égalité platonicienne demeure subordonnée à l'utilité de la cité et ne repose pas encore sur une conception universelle de la dignité humaine.
== L'égalité à l'époque moderne ==
=== L'égalité naturelle chez Hobbes et Locke ===
La philosophie politique moderne opère une rupture décisive en affirmant l'égalité naturelle fondamentale de tous les êtres humains. Thomas Hobbes, dans le ''Léviathan'' (1651), soutient que les hommes sont égaux par nature, tant sur le plan physique que mental : « La Nature a fait les hommes si égaux, quant aux facultés du corps et de l'esprit, que [...] même l'homme le plus faible a assez de force pour tuer le plus fort »<ref>Thomas Hobbes, ''Léviathan'', chapitre XIII, trad. F. Tricaud, Paris, Sirey, 1971, p. 123</ref>. Cette égalité naturelle se traduit par une égalité de droits : dans l'état de nature, chaque homme possède un droit illimité sur toutes choses, ce qui conduit à la guerre de tous contre tous. L'égalité naturelle, loin d'être un principe de concorde, devient ainsi la source du conflit.
Pour sortir de cet état de guerre, les hommes doivent reconnaître leur égalité fondamentale et passer un contrat par lequel ils renoncent à leur droit naturel au profit d'un souverain absolu. Hobbes énonce d'ailleurs comme neuvième loi de nature : « Que chacun reconnaisse autrui comme son égal par nature »<ref>Thomas Hobbes, ''Léviathan'', chapitre XV, p. 151</ref>. Le refus de cette reconnaissance mutuelle, que Hobbes nomme « orgueil », fait obstacle à la paix civile. L'égalité politique dans l'État civil découle ainsi directement de la reconnaissance de l'égalité naturelle.
John Locke reprend cette thèse de l'égalité naturelle dans le ''Second Traité du gouvernement civil'' (1690), mais lui donne une orientation différente. L'état de nature lockéen n'est pas un état de guerre généralisée mais un état où règne la loi naturelle, qui « enseigne à tous les hommes, s'ils veulent bien la consulter, qu'étant tous égaux et indépendants, nul ne doit nuire à un autre par rapport à sa vie, à sa santé, à sa liberté, à son bien »<ref>John Locke, ''Second Traité du gouvernement civil'', chapitre II, § 6, trad. B. Gilson, Paris, Vrin, 1985, p. 17</ref>. L'égalité naturelle fonde des droits naturels que la société civile a pour fonction de protéger, notamment le droit de propriété. Locke admet que des inégalités de richesse puissent légitimement se développer dès l'état de nature, par le travail et l'accumulation. L'égalité fondamentale des droits coexiste ainsi avec des inégalités économiques qui peuvent devenir considérables.
=== Rousseau : l'inégalité comme déviation historique ===
Jean-Jacques Rousseau pousse plus loin la critique des inégalités sociales dans le ''Discours sur l'origine et les fondements de l'inégalité parmi les hommes'' (1755). Il distingue deux sortes d'inégalité : l'inégalité naturelle ou physique, qui découle des différences de force, de santé ou d'intelligence, et l'inégalité morale ou politique, qui dépend des conventions humaines et se manifeste dans les privilèges dont jouissent certains au détriment des autres<ref>Jean-Jacques Rousseau, ''Discours sur l'origine de l'inégalité'', préface, in ''Œuvres complètes'', tome III, Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1964, p. 131</ref>.
La thèse centrale de Rousseau montre que les inégalités sociales ne découlent pas des inégalités naturelles, mais résultent d'un processus historique de dégénérescence. L'homme naturel, vivant isolé dans les forêts, ignore la propriété et la comparaison avec autrui. Les inégalités naturelles n'ont aucune conséquence sociale dans cet état. C'est l'invention de la métallurgie et de l'agriculture, puis l'institution de la propriété privée, qui introduisent les inégalités économiques et politiques : « Le premier qui, ayant enclos un terrain, s'avisa de dire : Ceci est à moi, et trouva des gens assez simples pour le croire, fut le vrai fondateur de la société civile »<ref>Jean-Jacques Rousseau, ''Discours sur l'origine de l'inégalité'', seconde partie, p. 164</ref>.
Dans le ''Contrat social'' (1762), Rousseau cherche les principes d'une association légitime qui permettrait de remédier à ces inégalités injustes. Le pacte social doit substituer à l'inégalité naturelle une égalité morale et légitime : « Au lieu de détruire l'égalité naturelle, le pacte fondamental substitue au contraire une égalité morale et légitime à ce que la nature avait pu mettre d'inégalité physique entre les hommes, et [...] ils deviennent tous égaux par convention et de droit »<ref>Jean-Jacques Rousseau, ''Du contrat social'', livre I, chapitre IX, in ''Œuvres complètes'', tome III, p. 367</ref>. Cette égalité civile ne supprime pas toute inégalité de richesse, mais exige que « nul citoyen ne soit assez opulent pour en pouvoir acheter un autre, et nul assez pauvre pour être contraint de se vendre »<ref>Jean-Jacques Rousseau, ''Du contrat social'', livre II, chapitre XI, note, p. 391</ref>. La modération des inégalités économiques apparaît ainsi comme une condition nécessaire de la liberté politique.
== L'égalité comme dignité morale : Kant ==
Emmanuel Kant opère un tournant décisif en fondant l'égalité sur la dignité inhérente à la personne humaine en tant qu'être raisonnable. Dans les ''Fondements de la métaphysique des mœurs'' (1785), Kant distingue ce qui a un prix de ce qui a une dignité. Tout ce qui peut servir de moyen à des fins particulières possède un prix, marchand ou affectif. Mais ce qui se présente comme une fin en soi, qui ne peut jamais être traité simplement comme moyen, possède une dignité<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', deuxième section, trad. V. Delbos révisée par A. Philonenko, Paris, Vrin, 1993, p. 113</ref>.
Or, l'être humain, en tant qu'être raisonnable et libre, existe comme fin en soi. Il ne peut donc jamais être traité uniquement comme un moyen au service des fins d'autrui. Cette dignité absolue fonde l'égalité morale de tous les hommes et s'exprime dans la seconde formulation de l'impératif catégorique : « Agis de façon telle que tu traites l'humanité, aussi bien dans ta personne que dans la personne de tout autre, toujours en même temps comme fin, jamais simplement comme moyen »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', p. 108</ref>. Chaque personne humaine possède la même valeur intrinsèque, indépendamment de ses talents, de sa richesse ou de sa position sociale.
Cette égalité en dignité a des implications juridiques et politiques. Dans la ''Métaphysique des mœurs'' (1797), Kant affirme que tout homme possède des droits innés en vertu de son humanité, au premier rang desquels figure la liberté. L'égalité devant la loi découle de cette égale dignité : tous les citoyens doivent être soumis aux mêmes lois et jouir des mêmes droits fondamentaux. Kant admet des inégalités sociales et économiques, pourvu qu'elles ne violent pas la liberté et la dignité des personnes. La société civile n'a pas pour but d'égaliser les conditions matérielles, mais de garantir à chacun la possibilité de poursuivre son bonheur selon sa propre conception, dans le respect des droits d'autrui.
== Égalité et démocratie moderne ==
=== Tocqueville : la passion de l'égalité ===
Alexis de Tocqueville, dans ''De la démocratie en Amérique'' (1835-1840), analyse l'égalité comme le fait social dominant des sociétés modernes. Il observe que l'histoire occidentale est marquée par un mouvement irrésistible d'égalisation des conditions, qui tend à effacer les distinctions héréditaires et les privilèges de naissance. Cette égalisation ne concerne pas seulement les institutions juridiques, mais transforme en profondeur les mœurs, les sentiments et les idées des hommes.
Tocqueville constate que les peuples démocratiques éprouvent pour l'égalité une « passion ardente, insatiable, éternelle, invincible »<ref>Alexis de Tocqueville, ''De la démocratie en Amérique'', tome II, deuxième partie, chapitre I, in ''Œuvres'', tome II, Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1992, p. 610</ref>. Cette passion l'emporte sur le goût de la liberté : les hommes démocratiques « veulent l'égalité dans la liberté, et, s'ils ne peuvent l'obtenir, ils la veulent encore dans l'esclavage »<ref>Alexis de Tocqueville, ''De la démocratie en Amérique'', tome II, deuxième partie, chapitre I, p. 611</ref>. L'explication de cette préférence tient au fait que l'égalité procure des jouissances quotidiennes et tangibles, accessibles à tous, tandis que les bienfaits de la liberté se manifestent de manière moins immédiate et demandent des sacrifices.
Tocqueville met en garde contre les dangers que cette passion égalitaire fait peser sur la liberté. L'égalisation des conditions peut conduire à un despotisme doux, où les citoyens, devenus semblables et impuissants, se remettent entièrement à un pouvoir tutélaire qui règle tous les aspects de leur existence. Pour préserver la liberté dans les sociétés démocratiques, il faut cultiver l'art de l'association, maintenir des corps intermédiaires et favoriser la participation active des citoyens à la vie publique. L'égalité n'est pas en elle-même incompatible avec la liberté, mais elle ne la garantit pas automatiquement.
=== Marx : critique de l'égalité bourgeoise ===
Karl Marx soumet les proclamations d'égalité des Déclarations des droits de l'homme à une critique implacable. Dans ''La Question juive'' (1843), il analyse la Déclaration des droits de l'homme et du citoyen de 1789 et montre que les droits de l'homme, présentés comme universels, sont en réalité les droits de l'individu égoïste de la société bourgeoise, séparé des autres hommes et de la communauté<ref>Karl Marx, ''La Question juive'', in ''Œuvres'', tome III, ''Philosophie'', Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1982, p. 372</ref>. Le droit à la propriété privée, notamment, consacre la séparation entre les hommes et légitime l'inégalité économique.
Pour Marx, l'égalité juridique formelle, garantie par l'État libéral, masque et perpétue les inégalités réelles engendrées par le système capitaliste. Les travailleurs sont formellement libres et égaux en droits, mais cette égalité abstraite ne les empêche pas d'être exploités par les propriétaires des moyens de production. L'égalité devant la loi coexiste avec l'inégalité dans les rapports de production, où le capitaliste s'approprie la plus-value créée par le travail de l'ouvrier<ref>Karl Marx, ''Le Capital'', livre I, in ''Œuvres'', tome I, ''Économie I'', Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1963</ref>.
La véritable égalité ne pourra être réalisée, selon Marx, que par la suppression de la propriété privée des moyens de production et l'instauration d'une société sans classes. Dans la phase supérieure de la société communiste, une fois dépassée la pénurie et transformés les rapports sociaux, pourra s'appliquer le principe : « De chacun selon ses capacités, à chacun selon ses besoins »<ref>Karl Marx, ''Critique du programme de Gotha'', in ''Œuvres'', tome I, ''Économie I'', p. 1420</ref>. Cette formule marque le dépassement de l'égalité stricte au profit d'une organisation sociale où la satisfaction des besoins de chacun ne dépend plus de sa contribution productive.
== Les théories contemporaines de la justice ==
=== Rawls et l'égalité des chances ===
John Rawls renouvelle la théorie de la justice en proposant dans ''A Theory of Justice'' (1971) une conception égalitaire qui articule deux principes fondamentaux. Le premier principe garantit à chacun un droit égal au système le plus étendu de libertés de base égales pour tous. Le second principe régit les inégalités sociales et économiques selon deux exigences : elles doivent être attachées à des fonctions et des positions ouvertes à tous dans des conditions de juste égalité des chances (principe d'égale opportunité), et elles doivent procurer le plus grand bénéfice aux membres les plus désavantagés de la société (principe de différence)<ref>John Rawls, ''Théorie de la justice'', trad. C. Audard, Paris, Seuil, 1987, p. 91</ref>.
Le principe de différence représente l'apport le plus original de Rawls. Il affirme qu'une inégalité n'est juste que si elle améliore la situation des plus défavorisés. Rawls justifie ce principe en faisant appel à la « position originelle », situation hypothétique où des personnes rationnelles, placées derrière un « voile d'ignorance » qui leur cache leur position future dans la société, choisissent les principes devant régler les institutions de base. Dans ces conditions d'impartialité, chacun adopterait une stratégie prudente (maximin) visant à maximiser la part du plus mal loti, car nul ne sait s'il ne sera pas lui-même parmi les défavorisés.
La théorie rawlsienne cherche à concilier l'égalité avec l'efficacité économique. Elle n'exige pas une égalité stricte des résultats, mais accepte les inégalités qui bénéficient à tous, et particulièrement aux plus démunis. Par exemple, des rémunérations plus élevées pour certaines fonctions peuvent être justes si elles incitent des personnes talentueuses à exercer des professions socialement utiles, augmentant ainsi la richesse globale dont profiteront aussi les moins favorisés. Ces inégalités demeurent encadrées par le principe de juste égalité des chances, qui exige de neutraliser autant que possible l'influence des circonstances sociales de naissance sur les perspectives de vie.
=== Les débats contemporains ===
Le débat contemporain sur l'égalité a été enrichi par de nombreuses contributions qui affinent, critiquent ou reformulent la position rawlsienne. Ronald Dworkin développe une conception de l'égalité des ressources qui distingue ce qui relève de la responsabilité individuelle (les choix) de ce qui relève des circonstances subies (les talents naturels, le milieu social de naissance)<ref>Ronald Dworkin, « What is Equality? », ''Philosophy and Public Affairs'', vol. 10, n° 3 et 4, 1981</ref>. Une société juste doit compenser les inégalités dues aux circonstances, tout en laissant les individus assumer les conséquences de leurs choix. Cette approche, souvent qualifiée d'« égalitarisme de la chance » (''luck egalitarianism''), soulève des difficultés : comment tracer la frontière entre choix et circonstances ? Peut-on légitimement abandonner ceux qui souffrent des conséquences de choix imprudents ?
Amartya Sen propose une alternative avec son approche des capabilités. Plutôt que d'égaliser les ressources ou les biens premiers, il faut égaliser les capabilités, c'est-à-dire les libertés réelles qu'ont les personnes de mener la vie qu'elles ont des raisons de valoriser<ref>Amartya Sen, ''Repenser l'inégalité'', trad. P. Chemla, Paris, Seuil, 2000</ref>. Deux personnes recevant les mêmes ressources peuvent avoir des capabilités très différentes en raison de leurs caractéristiques personnelles (handicap, maladie) ou de facteurs sociaux (discriminations). L'approche par les capabilités invite à évaluer les situations sociales en fonction de ce que les personnes peuvent effectivement faire et être, plutôt qu'en fonction des moyens abstraits dont elles disposent.
Du côté libertarien, Robert Nozick conteste toute justice distributive impliquant une redistribution des ressources au nom de l'égalité. Dans ''Anarchie, État et Utopie'' (1974), il défend une conception entièrement procédurale de la justice : une distribution est juste si elle résulte de transferts volontaires effectués à partir d'une situation juste<ref>Robert Nozick, ''Anarchie, État et Utopie'', trad. E. d'Auzac de Lamartine, Paris, PUF, 1988</ref>. Toute redistribution opérée par l'État viole le droit de propriété des individus et équivaut à du travail forcé. La position de Nozick illustre une conception de l'égalité réduite à l'égalité formelle devant la loi, qui refuse de considérer les inégalités de fait comme relevant de la justice sociale.
== Égalité et différence ==
La question de l'articulation entre égalité et différence traverse de nombreux débats contemporains, notamment dans le champ des études féministes et des politiques de reconnaissance. Le féminisme dit de la « première vague » a longtemps revendiqué l'égalité des droits entre hommes et femmes en minimisant les différences biologiques et sociales. Cette stratégie égalitariste visait à obtenir l'accès des femmes aux mêmes fonctions et aux mêmes droits que les hommes.
Certains courants féministes ont critiqué cette approche pour son assimilationnisme : exiger l'égalité en niant les différences reviendrait à imposer aux femmes un modèle masculin de la réussite et de la citoyenneté. Les féministes dites « différentialistes » ou « essentialistes » ont valorisé les qualités spécifiquement féminines et réclamé leur reconnaissance dans l'espace public. Mais cette stratégie comporte le risque de réifier les différences de genre et de justifier une nouvelle forme de ségrégation.
Des approches plus récentes tentent de dépasser cette opposition entre égalité et différence. Joan Scott, par exemple, affirme que l'égalité et la différence ne sont pas des termes opposés, mais que la différence est une condition de l'exigence d'égalité<ref>Joan W. Scott, « Genre : une catégorie utile d'analyse historique », in ''Les Cahiers du GRIF'', n° 37-38, 1988</ref>. Revendiquer l'égalité suppose de reconnaître que les femmes sont différentes des hommes, mais que cette différence ne justifie aucune hiérarchie ni aucune exclusion. L'égalité véritable n'est pas l'identité ou la similitude, mais l'égale dignité et l'égalité des droits malgré, ou plutôt à travers, les différences.
Ces débats trouvent des prolongements dans les politiques multiculturelles et les luttes des minorités. Faut-il promouvoir une égalité aveugle aux différences culturelles, ethniques ou religieuses (''color-blind equality''), ou au contraire reconnaître ces différences et accorder des droits spécifiques aux groupes minoritaires ? La première option risque de perpétuer des discriminations en ignorant les désavantages structurels dont souffrent certains groupes ; la seconde peut conduire à figer les identités et à créer des inégalités entre individus selon leur appartenance communautaire.
== Perspectives non occidentales ==
Si la notion d'égalité occupe une place centrale dans la philosophie occidentale depuis l'Antiquité, d'autres traditions philosophiques proposent des conceptions différentes des relations humaines et de la justice sociale. Le confucianisme, par exemple, ne fait pas de l'égalité un principe fondamental. Confucius insiste davantage sur l'harmonie sociale, qui repose sur le respect d'une hiérarchie de rôles et de relations (''wu lun'') : entre souverain et sujet, père et fils, mari et femme, aîné et cadet, ami et ami. Chacun doit cultiver les vertus appropriées à sa position et remplir les devoirs qui en découlent.
Cette conception hiérarchique ne signifie pas nécessairement une justification de l'oppression. Elle peut être comprise comme une reconnaissance de la diversité des fonctions sociales et une invitation à la réciprocité : le supérieur a des devoirs envers l'inférieur, et la relation hiérarchique doit être tempérée par la bienveillance et le respect mutuel. Le confucianisme traditionnel légitime des inégalités de statut qui heurtent les conceptions égalitaires modernes, notamment l'inégalité entre hommes et femmes ou entre classes sociales.
Des penseurs contemporains s'efforcent de repenser le confucianisme dans un cadre démocratique, en montrant que certains principes confucéens (la bienveillance, le souci du bien commun, la cultivation morale) peuvent s'articuler avec l'égalité politique moderne. Ces tentatives de synthèse soulèvent des questions philosophiques profondes sur l'universalité des valeurs et la possibilité de concilier des traditions intellectuelles issues de contextes historiques et culturels très différents.
== Conclusion ==
L'égalité représente l'une des valeurs fondamentales de la modernité politique et morale, mais sa signification et sa portée demeurent l'objet de débats philosophiques intenses. De l'égalité géométrique d'Aristote à l'égalité des capabilités de Sen, en passant par l'égalité naturelle de Locke, l'égalité morale de Kant et les principes de justice de Rawls, la philosophie a exploré de multiples dimensions de cette notion.
Plusieurs tensions traversent ces réflexions. Faut-il privilégier l'égalité formelle devant la loi ou chercher à réduire les inégalités réelles de conditions ? Comment concilier l'égalité avec la liberté, qui permet aux individus de faire des choix différents produisant des résultats inégaux ? Dans quelle mesure doit-on compenser les inégalités naturelles de talents ou les désavantages sociaux de naissance ? Comment articuler l'exigence d'égalité avec la reconnaissance des différences légitimes entre les personnes ?
Ces questions ne relèvent pas seulement de la spéculation théorique, mais engagent des choix politiques concrets concernant les systèmes fiscaux, les politiques éducatives, la protection sociale, les discriminations positives ou les droits des minorités. La philosophie de l'égalité ne peut donc se passer d'un dialogue constant avec les sciences sociales et avec les luttes politiques qui, depuis plusieurs siècles, s'efforcent de faire progresser l'égalité effective entre les êtres humains. Si l'idéal d'égalité demeure loin d'être pleinement réalisé dans nos sociétés, il continue d'orienter la critique des injustices et l'aspiration à un monde plus juste.
== Notes et références ==
{{references}}
== Bibliographie sélective ==
* Aristote, ''Éthique à Nicomaque'', livre V, trad. J. Tricot, Paris, Vrin, 1990
* Platon, ''République'', livres IV-V, trad. G. Leroux, Paris, GF-Flammarion, 2002
* Thomas Hobbes, ''Léviathan'', trad. F. Tricaud, Paris, Sirey, 1971
* John Locke, ''Second Traité du gouvernement civil'', trad. B. Gilson, Paris, Vrin, 1985
* Jean-Jacques Rousseau, ''Discours sur l'origine et les fondements de l'inégalité parmi les hommes'', in ''Œuvres complètes'', tome III, Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1964
* Jean-Jacques Rousseau, ''Du contrat social'', in ''Œuvres complètes'', tome III, Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1964
* Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos révisée par A. Philonenko, Paris, Vrin, 1993
* Alexis de Tocqueville, ''De la démocratie en Amérique'', in ''Œuvres'', tome II, Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1992
* Karl Marx, ''La Question juive'' et ''Critique du programme de Gotha'', in ''Œuvres'', Paris, Gallimard, coll. « Bibliothèque de la Pléiade »
* John Rawls, ''Théorie de la justice'', trad. C. Audard, Paris, Seuil, 1987
* Ronald Dworkin, « What is Equality? », ''Philosophy and Public Affairs'', vol. 10, n° 3 et 4, 1981
* Amartya Sen, ''Repenser l'inégalité'', trad. P. Chemla, Paris, Seuil, 2000
* Robert Nozick, ''Anarchie, État et Utopie'', trad. E. d'Auzac de Lamartine, Paris, PUF, 1988
{{autocat}}
61tuta3bads2xcentj2iyccxorq8fh4
Dictionnaire de philosophie/Droit
0
83176
768391
754253
2026-06-23T03:58:45Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768391
wikitext
text/x-wiki
{{DicoPhilo|Droit|lecture=oui}}
Le '''droit''' désigne à la fois un ensemble de règles et de normes qui organisent la vie en société (le droit objectif), ainsi que les prérogatives que peuvent revendiquer les individus (les droits subjectifs). Cette dualité sémantique traverse toute l'histoire de la philosophie du droit et structure les débats contemporains. La réflexion philosophique sur le droit interroge sa nature, son fondement, sa légitimité et ses rapports avec la morale, la justice et le pouvoir politique.
== Les sources et fondements du droit ==
=== Le droit naturel classique ===
La tradition du droit naturel remonte à l'Antiquité grecque et romaine. Pour les penseurs antiques, le droit trouve son fondement dans la nature même des choses et dans un ordre cosmique ou divin qui précède toute convention humaine. Aristote distingue, dans l'''Éthique à Nicomaque'', le droit naturel (''dikaion physikon'') du droit légal ou conventionnel (''dikaion nomikon''). Le droit naturel possède une validité universelle, identique en tous lieux, tandis que le droit positif varie selon les cités<ref>Aristote, ''Éthique à Nicomaque'', livre V, chapitre 7, 1134b18-1135a5</ref>.
Les jurisconsultes romains développent cette conception en affirmant l'existence d'un ''ius naturale'', distinct du ''ius gentium'' (droit des gens) et du ''ius civile'' (droit civil). Cicéron, dans le ''De republica'', présente la loi naturelle comme « la droite raison conforme à la nature, répandue chez tous les êtres, toujours d'accord avec elle-même, éternelle »<ref>Cicéron, ''De republica'', livre III, fragment 33</ref>. Cette conception stoïcienne influence durablement la pensée juridique occidentale.
La synthèse médiévale opérée par Thomas d'Aquin au XIIIe siècle demeure une référence majeure. Dans la ''Somme théologique'', Thomas distingue quatre niveaux de loi : la ''lex aeterna'' (loi éternelle), qui réside dans la raison divine et gouverne l'univers entier ; la ''lex naturalis'' (loi naturelle), qui représente la participation de la créature raisonnable à la loi éternelle ; la ''lex humana'' (loi humaine ou droit positif), qui applique les principes de la loi naturelle aux situations particulières ; et la ''lex divina'' (loi divine), révélée dans l'Écriture<ref>Thomas d'Aquin, ''Summa theologiae'', Ia-IIae, question 91</ref>.
Pour Thomas d'Aquin, « la loi naturelle n'est rien d'autre qu'une participation de la loi éternelle dans la créature raisonnable »<ref>Thomas d'Aquin, ''Summa theologiae'', Ia-IIae, q. 91, a. 2</ref>. La loi naturelle possède un caractère universel et immuable dans ses principes premiers, notamment le précepte fondamental : « il faut faire et rechercher le bien, et éviter le mal »<ref>Thomas d'Aquin, ''Summa theologiae'', Ia-IIae, q. 94, a. 2</ref>. De ce principe découlent les inclinations naturelles de l'être humain : conservation de sa vie, union du mâle et de la femelle, éducation des enfants, recherche de la vérité et vie en société. Le droit positif tire sa légitimité de sa conformité à cette loi naturelle : « toute loi portée par les hommes n'a raison de loi que dans la mesure où elle dérive de la loi naturelle »<ref>Thomas d'Aquin, ''Summa theologiae'', Ia-IIae, q. 95, a. 2</ref>.
=== Le tournant moderne du droit naturel ===
Au XVIIe siècle, la pensée juridique connaît une transformation décisive avec l'émergence du droit naturel moderne. Hugo Grotius (1583-1645) publie en 1625 le ''De jure belli ac pacis'' (''Du droit de la guerre et de la paix''), ouvrage fondateur du droit international et du droit naturel moderne. Grotius opère un double mouvement : d'une part, il cherche à fonder le droit sur la nature raisonnable et sociable de l'homme plutôt que sur un ordre cosmique ou une volonté divine ; d'autre part, il affirme la validité du droit naturel indépendamment de l'existence de Dieu, dans sa célèbre formule hypothétique (''etiamsi daremus'') : « Ce que nous avons dit aurait lieu en quelque manière, même si nous accordions, ce qui ne peut se faire sans un crime horrible, qu'il n'y a point de Dieu, ou que les affaires des hommes ne lui sont d'aucun soin »<ref>Hugo Grotius, ''De jure belli ac pacis'', Prolégomènes, § 11</ref>.
Pour Grotius, le droit naturel « consiste dans certains principes de la droite raison, qui nous font connaître qu'une action est moralement honnête ou déshonnête selon la convenance ou la disconvenance nécessaire qu'elle a avec une nature raisonnable et sociable »<ref>Hugo Grotius, ''De jure belli ac pacis'', livre I, chapitre 1, § 10</ref>. Cette définition marque le passage d'une conception objective du droit, fondée sur l'ordre des choses, à une conception plus subjective, centrée sur la raison humaine et ses exigences.
Thomas Hobbes (1588-1679) pousse plus loin cette évolution en définissant le droit naturel (''ius naturale'') non plus comme un ensemble de règles objectives, mais comme « la liberté que chacun a d'user de sa propre puissance, comme il veut lui-même, pour la conservation de sa propre nature, c'est-à-dire de sa propre vie »<ref>Thomas Hobbes, ''Léviathan'', chapitre 14</ref>. Cette définition rompt avec la tradition classique en assimilant le droit à un pouvoir subjectif, une faculté de l'individu, plutôt qu'à une part objective qui revient à chacun selon la justice. Hobbes distingue soigneusement le droit (''ius'') de la loi (''lex'') : « Le DROIT consiste dans la liberté de faire ou de s'abstenir, alors que la LOI détermine et astreint à l'un des deux »<ref>Thomas Hobbes, ''Léviathan'', chapitre 14</ref>.
John Locke (1632-1704) développe une théorie du droit naturel fondée sur la notion de propriété de soi. Dans le ''Second traité du gouvernement civil'' (1690), il affirme que dans l'état de nature, les hommes sont libres et égaux, soumis à la loi naturelle que la raison enseigne : celle-ci prescrit que « nul ne doit nuire à un autre dans sa vie, sa santé, sa liberté ou ses biens »<ref>John Locke, ''Second traité du gouvernement civil'', chapitre 2, § 6</ref>. Chaque individu possède une propriété naturelle sur sa propre personne et sur le fruit de son travail. Le droit de propriété, fondamental dans la pensée lockéenne, précède l'établissement de la société civile et constitue la principale raison de son institution.
Cette évolution du droit naturel classique au droit naturel moderne s'accompagne d'un changement conceptuel majeur : le passage d'une conception objective du droit, défini comme la « chose juste » (''ipsum iustum''), à une conception subjective, où le droit désigne d'abord une faculté, un pouvoir ou une prérogative de l'individu. Michel Villey (1914-1988) a consacré une grande partie de son œuvre à critiquer cette mutation, qu'il considère comme une déviation par rapport à la tradition aristotélicienne et thomiste. Pour Villey, « le droit subjectif moderne est une création artificielle qui substitue à la recherche objective du juste une revendication individualiste »<ref>Michel Villey, ''Le droit et les droits de l'homme'', Paris, Presses universitaires de France, 1983, p. 127</ref>.
== Le positivisme juridique ==
=== La séparation du droit et de la morale ===
Le positivisme juridique constitue le courant dominant de la philosophie du droit depuis le XIXe siècle. Il se caractère par la thèse de la séparation entre le droit et la morale : ce qui est juridiquement valide ne dépend pas de considérations morales, mais uniquement de critères formels relatifs à la production et à la reconnaissance des normes. Cette position s'oppose au jusnaturalisme, qui affirme l'existence de critères moraux nécessaires à la validité du droit.
Jeremy Bentham (1748-1832) et John Austin (1790-1859) fondent le positivisme juridique anglais. Austin définit le droit comme l'ensemble des commandements généraux posés par le souverain politique. Une loi est juridiquement valide si elle émane d'une autorité politique suprême habituellement obéie et non soumise elle-même à une autorité supérieure. Les lois divines et les lois morales n'ont qu'un statut métaphorique ; seules les lois positives, édictées par un souverain déterminé, constituent à proprement parler du droit<ref>John Austin, ''The Province of Jurisprudence Determined'' (1832), Cambridge, Cambridge University Press, 1995, lecture I</ref>. Cette conception impérativiste et volontariste du droit réduit celui-ci à un ensemble d'ordres assortis de sanctions.
=== Hans Kelsen et la théorie pure du droit ===
Hans Kelsen (1881-1973) élabore la forme la plus systématique du positivisme juridique avec sa « théorie pure du droit » (''Reine Rechtslehre''), dont la première édition paraît en 1934. L'ambition de Kelsen est de construire une science du droit rigoureuse, « pure » de toute considération politique, morale ou sociologique. Le droit doit être étudié comme un système normatif autonome, distinct de l'ordre des faits naturels ou sociaux.
Kelsen distingue radicalement l'« être » (''Sein'') et le « devoir-être » (''Sollen''). Le droit appartient au domaine du devoir-être : il prescrit ce qui doit être fait, indépendamment de ce qui est effectivement réalisé. Une norme juridique ne décrit pas un comportement factuel, mais impute une conséquence juridique (notamment une sanction) à une condition déterminée. La validité d'une norme ne dérive pas de son efficacité réelle ni de sa conformité à la morale, mais uniquement de sa conformité à une norme supérieure dans la hiérarchie de l'ordre juridique<ref>Hans Kelsen, ''Théorie pure du droit'', traduction de Charles Eisenmann, Paris, Dalloz, 1962, p. 13-15</ref>.
Le système juridique forme une pyramide hiérarchisée où chaque norme tire sa validité d'une norme supérieure, jusqu'à la « norme fondamentale » (''Grundnorm''), qui est présupposée et non posée, permettant de penser l'unité et la cohérence de l'ordre juridique. Cette norme fondamentale n'a pas de contenu matériel mais constitue une condition logique transcendantale : elle prescrit d'obéir à la constitution historiquement première et aux normes produites conformément à elle<ref>Hans Kelsen, ''Théorie pure du droit'', op. cit., p. 254-268</ref>.
Pour Kelsen, le droit naturel est une idéologie qui prétend fonder le droit positif sur des principes moraux supérieurs, reflétant en réalité des préférences subjectives présentées comme des vérités objectives. L'idée d'une justice absolue, accessible à la raison, relève selon lui de l'illusion métaphysique. Le droit positif, seul objet scientifiquement connaissable, peut avoir n'importe quel contenu : « Il n'y a aucun comportement humain qui, en raison de son contenu, serait absolument exclu de pouvoir constituer le contenu d'une norme juridique »<ref>Hans Kelsen, ''Théorie pure du droit'', op. cit., p. 197</ref>.
=== Herbert L. A. Hart et le positivisme juridique tempéré ===
Herbert L. A. Hart (1907-1992) renouvelle le positivisme juridique dans son ouvrage majeur ''The Concept of Law'' (1961). Tout en maintenant la thèse de la séparation entre droit et morale, Hart critique les insuffisances du modèle impérativiste d'Austin. Le droit ne se réduit pas à des ordres assortis de sanctions ; il comprend des types de normes variés qui confèrent des pouvoirs, organisent des procédures et structurent les institutions.
Hart distingue deux catégories de règles juridiques : les « règles primaires », qui imposent des obligations et prescrivent des conduites, et les « règles secondaires », qui portent sur les règles primaires elles-mêmes. Parmi les règles secondaires, la « règle de reconnaissance » est fondamentale : elle permet d'identifier quelles normes appartiennent au système juridique. Cette règle est une pratique sociale acceptée par les officiels du système (juges, fonctionnaires), et non une norme posée explicitement<ref>Herbert L. A. Hart, ''The Concept of Law'', 2e édition, Oxford, Oxford University Press, 1994, chapitre V, p. 94-99</ref>.
Hart introduit l'idée de « texture ouverte » du droit (''open texture'') : le langage juridique laisse inévitablement des zones d'indétermination dans des « cas difficiles » (''hard cases'') où l'application de la règle est incertaine. Dans ces situations, les juges exercent un pouvoir discrétionnaire pour trancher, créant ainsi de nouvelles normes<ref>Herbert L. A. Hart, ''The Concept of Law'', op. cit., chapitre VII, p. 124-136</ref>. Cette conception plus nuancée reconnaît l'existence d'une marge d'appréciation judiciaire tout en maintenant la distinction conceptuelle entre droit et morale.
Hart admet cependant l'existence d'un « contenu minimum du droit naturel » : étant donné certains traits universels de la nature humaine (vulnérabilité physique, égalité approximative, altruisme limité, ressources limitées), toute société viable doit établir certaines règles de base, comme l'interdiction de la violence ou la protection d'une forme de propriété<ref>Herbert L. A. Hart, ''The Concept of Law'', op. cit., chapitre IX, p. 193-200</ref>. Ce « noyau de bon sens » dans le droit naturel ne contredit pas le positivisme juridique, mais reconnaît des conditions empiriques nécessaires à la survie de toute société.
== Droit, morale et justice ==
=== Le dépassement du positivisme : Ronald Dworkin ===
Ronald Dworkin (1931-2013) développe une critique majeure du positivisme juridique. Dans ''Taking Rights Seriously'' (1977) et surtout dans ''Law's Empire'' (1986), il conteste l'idée que le droit puisse être identifié par une simple « règle de reconnaissance » reposant sur des faits sociaux. Pour Dworkin, le droit comprend non seulement des règles, mais aussi des principes moraux qui font partie intégrante du système juridique.
Les principes se distinguent des règles par leur mode d'application : tandis qu'une règle s'applique de manière binaire (elle s'applique ou ne s'applique pas), un principe possède une « dimension de poids » qui doit être mise en balance avec d'autres principes concurrents<ref>Ronald Dworkin, ''Taking Rights Seriously'', Cambridge (Mass.), Harvard University Press, 1977, chapitre 2, p. 24-28</ref>. Dans les cas difficiles, les juges ne créent pas de nouvelles normes par un pouvoir discrétionnaire fort (comme le soutient Hart), mais découvrent le droit applicable en interprétant l'ensemble cohérent des règles et principes qui sous-tendent la pratique juridique de leur communauté.
Dworkin propose une conception interprétative du droit fondée sur l'idée d'« intégrité » (''integrity''). Le droit doit être compris comme formant un tout cohérent exprimant une conception de la justice. Les juges doivent interpréter le droit de manière à le présenter « sous son meilleur jour », c'est-à-dire en le rendant le plus cohérent possible du point de vue moral et politique<ref>Ronald Dworkin, ''Law's Empire'', Cambridge (Mass.), Harvard University Press, 1986, chapitre 7, p. 225-275</ref>. Cette « interprétation constructive » suppose qu'il existe, pour chaque question juridique, une « seule bonne réponse » (''one right answer''), même si celle-ci peut être difficile à découvrir et faire l'objet de désaccords raisonnables.
Cette approche réfute la séparation stricte entre droit et morale défendue par le positivisme. Les considérations morales ne sont pas extérieures au droit, mais en constituent une dimension essentielle. Le droit n'est pas seulement un système de normes identifiables par leur pedigree formel, mais une pratique interprétative engageant des valeurs morales et politiques.
=== John Rawls et les principes de justice ===
La philosophie politique de John Rawls (1921-2002) exerce une influence considérable sur la réflexion contemporaine concernant les principes devant régir les institutions juridiques. Dans ''A Theory of Justice'' (1971), Rawls élabore une conception contractualiste de la justice fondée sur l'idée de « position originelle » : derrière un « voile d'ignorance » qui les empêche de connaître leur situation particulière (position sociale, talents, conception du bien), des personnes rationnelles choisiraient les principes devant gouverner la structure de base de la société.
Rawls défend deux principes de justice, ordonnés lexicalement. Le premier garantit à chacun un ensemble égal de libertés de base fondamentales (liberté de conscience, d'expression, de participation politique). Le second régule les inégalités sociales et économiques : celles-ci doivent être attachées à des fonctions ouvertes à tous dans des conditions d'égalité équitable des chances (principe d'égalité des chances), et profiter en priorité aux membres les plus désavantagés de la société (principe de différence)<ref>John Rawls, ''A Theory of Justice'', édition révisée, Cambridge (Mass.), Harvard University Press, 1999, p. 52-56, p. 266-267</ref>.
Ces principes fournissent un critère pour évaluer la justice des institutions juridiques et politiques. Une société juste est celle dont les institutions fondamentales satisfont aux deux principes de justice. Le droit positif d'une telle société tire sa légitimité de sa conformité à ces exigences de justice. Rawls ne défend pas un droit naturel au sens classique, mais affirme que les principes de justice possèdent une validité normative indépendante des conventions particulières, fondée sur un « équilibre réflexif » entre nos intuitions morales bien pesées et les principes théoriques qui les systématisent.
Dans ses travaux ultérieurs, notamment ''Political Liberalism'' (1993), Rawls insiste sur le caractère « politique » de sa conception de la justice : celle-ci ne présuppose pas une doctrine morale ou métaphysique « compréhensive », mais vise un « consensus par recoupement » entre différentes conceptions raisonnables du bien pouvant coexister dans une société démocratique pluraliste<ref>John Rawls, ''Political Liberalism'', édition augmentée, New York, Columbia University Press, 2005, introduction, p. xxiv-xxvii</ref>.
== Les droits fondamentaux et la dignité humaine ==
=== L'émergence des droits de l'homme ===
Les déclarations des droits de l'homme aux XVIIIe et XXe siècles marquent un tournant dans l'histoire du droit et de la pensée politique. La ''Déclaration des droits de l'homme et du citoyen'' française de 1789 proclame que « les hommes naissent et demeurent libres et égaux en droits » et que « le but de toute association politique est la conservation des droits naturels et imprescriptibles de l'homme », à savoir « la liberté, la propriété, la sûreté et la résistance à l'oppression » (articles 1 et 2). Ces droits sont considérés comme antérieurs à toute organisation sociale et comme fondement de la légitimité politique.
La ''Déclaration universelle des droits de l'homme'' adoptée par l'Assemblée générale des Nations Unies en 1948 étend et systématise ces droits à l'échelle internationale. Son article premier affirme : « Tous les êtres humains naissent libres et égaux en dignité et en droits. Ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité. » Cette déclaration, adoptée après les atrocités de la Seconde Guerre mondiale, inscrit la reconnaissance de la dignité humaine et des droits fondamentaux comme fondement d'un ordre juridique international.
=== La dignité humaine comme principe juridique ===
La notion de dignité humaine occupe une place centrale dans le droit constitutionnel contemporain. La Loi fondamentale allemande de 1949 dispose en son article 1, alinéa 1 : « La dignité de l'être humain est intangible. Tous les pouvoirs publics ont le devoir de la respecter et de la protéger. » Cette formulation fait de la dignité non seulement un droit fondamental, mais le principe suprême dont dérivent tous les autres droits.
La dignité humaine désigne la valeur intrinsèque et inconditionnelle de chaque personne humaine. Elle implique que l'être humain ne peut jamais être traité comme un simple moyen, mais doit toujours être considéré comme une fin en soi, selon la formulation kantienne de l'impératif catégorique : « Agis de telle sorte que tu traites l'humanité, aussi bien dans ta personne que dans la personne de tout autre, toujours en même temps comme fin, et jamais simplement comme moyen »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'' (1785), traduction de Victor Delbos révisée par Alain Renaut, Paris, Flammarion, 1994, deuxième section, Ak. IV, 429, p. 108</ref>.
La dignité fonde l'interdiction de la torture, de l'esclavage, des traitements dégradants ou inhumains. Elle justifie également des droits positifs garantissant les conditions matérielles d'une existence conforme à la dignité humaine. Le principe de dignité pose cependant des difficultés d'application dans certains domaines, notamment en bioéthique, où se confrontent différentes conceptions de ce qui constitue une atteinte à la dignité. La tension entre le respect de l'autonomie individuelle et la protection d'une conception substantielle de la dignité suscite des débats sur des questions comme l'euthanasie, le statut de l'embryon ou les technologies d'amélioration humaine.
=== Amartya Sen et l'approche par les capabilités ===
Amartya Sen (né en 1933), prix Nobel d'économie en 1998, propose une approche originale de la justice et du développement fondée sur les « capabilités » (''capabilities''). Sen critique les théories centrées uniquement sur la distribution de ressources ou de biens premiers (comme chez Rawls) pour leur insensibilité à la diversité des capacités individuelles à convertir ces ressources en accomplissements effectifs.
Une capabilité désigne la liberté réelle qu'a une personne d'accomplir certaines réalisations ou d'atteindre certains états (''functionings''). L'évaluation du bien-être et de la justice doit porter non sur ce que les gens possèdent, mais sur ce qu'ils sont effectivement capables de faire et d'être. Cette approche déplace l'attention des moyens vers les opportunités réelles, tenant compte des facteurs sociaux, politiques et personnels qui permettent ou empêchent les individus de mener la vie qu'ils ont des raisons de valoriser<ref>Amartya Sen, ''Development as Freedom'', New York, Knopf, 1999, chapitre 3, p. 74-76</ref>.
L'approche par les capabilités a des implications importantes pour la conception des droits fondamentaux et pour l'évaluation des politiques publiques. Elle suggère que garantir formellement des droits ne suffit pas ; il faut également créer les conditions effectives permettant aux personnes d'exercer ces droits. Cette perspective influence les travaux sur le développement humain et inspire l'Indice de développement humain (IDH) élaboré par le Programme des Nations Unies pour le développement.
== Droit objectif et droits subjectifs ==
=== La distinction conceptuelle ===
La langue française, comme plusieurs autres langues romanes, utilise le même terme « droit » pour désigner deux réalités distinctes. Le « droit objectif » (''ius'' en latin, ''law'' en anglais, ''Recht'' en allemand) désigne l'ensemble des règles et normes qui gouvernent la vie sociale. Les « droits subjectifs » (''iura'', ''rights'', ''Rechte'') désignent les prérogatives, facultés ou pouvoirs reconnus aux individus par le droit objectif.
Cette distinction structure la réflexion juridique moderne. Le droit objectif est impersonnel, général et constitue un ordre normatif s'imposant aux sujets de droit. Les droits subjectifs sont des positions juridiques individuelles, des titres à agir ou à exiger certaines prestations. Un droit subjectif confère à son titulaire la faculté d'accomplir certains actes (droit de propriété, liberté d'expression) ou d'exiger d'autrui certains comportements (droit de créance).
Historiquement, la conception objective du droit précède la conception subjective. Le ''ius'' romain désigne d'abord l'ordre juridique objectif, la « chose juste » qui revient à chacun selon la justice (''suum cuique tribuere''). La notion moderne de droits subjectifs se développe progressivement à partir du Moyen Âge tardif et s'impose avec le droit naturel moderne et les théories du contrat social. Cette évolution s'accompagne d'un déplacement du fondement de l'ordre juridique : celui-ci n'est plus conçu comme dérivant d'un ordre naturel ou divin préexistant, mais comme construit à partir des droits naturels des individus.
=== La critique de Michel Villey ===
Michel Villey consacre une grande partie de son œuvre à critiquer l'émergence de la conception subjective du droit, qu'il considère comme une rupture fâcheuse avec la tradition aristotélicienne et thomiste. Pour Villey, le droit classique se définit objectivement comme « la chose juste », déterminée par la raison en fonction de la nature des relations sociales et des situations concrètes. La justice consiste à attribuer à chacun ce qui lui revient (''suum cuique''), selon une proportion déterminée par la nature des choses.
Le passage à une conception subjective, amorcé selon Villey par Guillaume d'Occam au XIVe siècle et systématisé par les théoriciens du droit naturel moderne, substitue à cette recherche objective du juste une logique de revendication individualiste. Le droit devient une faculté, un pouvoir de l'individu sur les choses et les personnes. Cette transformation conduit à un appauvrissement de la réflexion juridique et à une inflation des revendications de droits, chacun invoquant ses « droits » sans considération pour les exigences objectives de la justice et du bien commun<ref>Michel Villey, ''Le droit et les droits de l'homme'', Paris, Presses universitaires de France, 1983, p. 124-152</ref>.
Villey critique particulièrement les « droits de l'homme » modernes, qu'il considère comme des abstractions individualistes déconnectées de la réalité sociale et inapplicables en pratique. Selon lui, ces droits prétendument universels et absolus entrent inévitablement en conflit les uns avec les autres (liberté contre égalité, propriété contre justice sociale), rendant impossible une détermination objective du juste. La philosophie classique du droit permettait au contraire d'arbitrer entre des prétentions concurrentes en se référant à un ordre naturel et à la finalité du bien commun<ref>Michel Villey, ''Critique de la pensée juridique moderne'', Paris, Dalloz, 1976, p. 141-162</ref>.
== Droit et philosophie politique ==
=== Emmanuel Kant et la doctrine du droit ===
Emmanuel Kant (1724-1804) élabore une philosophie du droit articulée à sa philosophie morale. Dans la ''Métaphysique des mœurs'' (1797), dont la première partie est consacrée à la « Doctrine du droit », Kant définit le droit comme « l'ensemble des conditions sous lesquelles l'arbitre de l'un peut s'accorder avec l'arbitre de l'autre suivant une loi universelle de la liberté »<ref>Emmanuel Kant, ''Métaphysique des mœurs'', première partie : « Doctrine du droit », introduction, § B, Ak. VI, 230</ref>.
Le droit kantien repose sur le principe universel du droit : « Est conforme au droit toute action qui permet, ou dont la maxime permet, à la liberté de l'arbitre de chacun de coexister avec la liberté de tout autre suivant une loi universelle »<ref>Emmanuel Kant, ''Métaphysique des mœurs'', « Doctrine du droit », introduction, § C, Ak. VI, 230</ref>. Ce principe exprime l'exigence de compatibilité des libertés : ma liberté trouve sa limite là où commence la liberté d'autrui, et réciproquement.
Kant distingue le droit de la morale selon le type de législation et de motivation. La morale concerne les devoirs envers soi-même et exige que l'action soit accomplie par devoir (motivation interne). Le droit concerne les devoirs envers autrui et autorise l'usage de la contrainte externe pour faire respecter les obligations juridiques. Le droit est ainsi « lié à la faculté de contraindre »<ref>Emmanuel Kant, ''Métaphysique des mœurs'', « Doctrine du droit », introduction, § E, Ak. VI, 231</ref>. Cette possibilité de la contrainte légitime distingue les obligations juridiques des simples obligations morales.
La philosophie juridique de Kant fonde également une théorie de l'État de droit et du contrat social. L'état civil, caractérisé par une constitution républicaine garantissant la liberté, l'égalité et l'indépendance des citoyens, constitue un devoir moral absolu. Le passage de l'état de nature à l'état civil n'est pas un fait historique, mais une exigence rationnelle permettant de garantir les droits de chacun par une législation publique et coercitive<ref>Emmanuel Kant, ''Métaphysique des mœurs'', « Doctrine du droit », première partie, § 41-44, Ak. VI, 306-313</ref>.
=== Hegel et l'esprit objectif ===
Georg Wilhelm Friedrich Hegel (1770-1831) propose une conception du droit radicalement différente dans les ''Principes de la philosophie du droit'' (1820). Pour Hegel, le droit n'est pas un ensemble de règles abstraites garantissant la coexistence des libertés individuelles, mais la réalisation progressive de la liberté dans l'histoire à travers des institutions concrètes. Le droit appartient à la sphère de l'« esprit objectif », c'est-à-dire aux formes d'organisation sociale et politique dans lesquelles l'esprit se manifeste et se reconnaît.
Hegel développe une philosophie du droit en trois moments dialectiques. Le « droit abstrait » traite de la personne abstraite et de la propriété : l'individu acquiert une existence juridique en s'appropriant des choses extérieures, réalisant ainsi sa liberté dans le monde. La « moralité » concerne le sujet moral capable de se déterminer selon des principes intérieurs et d'assumer la responsabilité de ses actes. Enfin, la « vie éthique » (''Sittlichkeit'') désigne les formes concrètes de vie collective où la liberté se réalise effectivement : la famille, la société civile et l'État<ref>G. W. F. Hegel, ''Principes de la philosophie du droit'' (1820), traduction de Jean-François Kervégan, Paris, Presses universitaires de France, 2013, introduction, § 33, p. 121-122</ref>.
L'État représente la forme la plus achevée de réalisation de la liberté. Il n'est pas un simple moyen au service des intérêts privés (comme dans les théories contractualistes), mais « la réalité effective de l'Idée éthique », l'institution dans laquelle la liberté subjective et l'ordre objectif se réconcilient<ref>G. W. F. Hegel, ''Principes de la philosophie du droit'', § 257, p. 407-408</ref>. Cette conception de l'État comme incarnation de la raison dans l'histoire a suscité des interprétations divergentes, certains y voyant une justification de l'absolutisme, d'autres une théorie sophistiquée de l'État de droit moderne.
La formule célèbre de la préface des ''Principes de la philosophie du droit'' : « Ce qui est rationnel est effectif, et ce qui est effectif est rationnel », exprime l'idée que la philosophie du droit ne doit pas prescrire ce qui devrait être, mais comprendre la rationalité immanente aux institutions existantes. Cette position ne signifie pas une justification conservatrice de l'ordre établi, mais l'affirmation que la raison se réalise historiquement à travers des formes institutionnelles déterminées.
== Droit et approches critiques contemporaines ==
=== Le réalisme juridique ===
Le réalisme juridique, développé aux États-Unis au début du XXe siècle, conteste l'idée d'un système juridique cohérent de normes déterminant de manière relativement prévisible les décisions judiciaires. Pour les réalistes comme Oliver Wendell Holmes Jr., Jerome Frank ou Karl Llewellyn, le droit n'est pas ce que disent les codes et les traités doctrinaux, mais ce que font effectivement les juges et les autres acteurs juridiques.
Holmes formule cette perspective dans sa célèbre définition : « Le droit est la prédiction de ce que les tribunaux feront en fait, et rien de plus prétentieux »<ref>Oliver Wendell Holmes Jr., « The Path of the Law », ''Harvard Law Review'', vol. 10, 1897, p. 461</ref>. Cette approche met l'accent sur la dimension pragmatique et contextuelle du droit, contre les prétentions à la systématicité du positivisme juridique. Les décisions judiciaires dépendent de multiples facteurs : personnalité des juges, contexte social et politique, considérations économiques, et pas seulement de l'application logique de règles préexistantes.
Le réalisme juridique scandinave, représenté par Alf Ross, développe une critique analogue en insistant sur la dimension psychologique du droit. Les règles juridiques n'ont de réalité que comme représentations mentales influençant le comportement des juges et des citoyens. Une conception scientifique du droit doit se concentrer sur ces faits psychosociaux observables, plutôt que sur des entités métaphysiques comme les « normes » ou les « droits ».
=== Les théories féministes du droit ===
Les approches féministes critiquent le caractère prétendument neutre et universel des catégories juridiques, montrant comment celles-ci reflètent et perpétuent des rapports de domination entre les sexes. Catharine MacKinnon et d'autres théoriciennes analysent la manière dont le droit construit et naturalise la différence des sexes, souvent au détriment des femmes. Le principe d'égalité formelle devant la loi peut masquer des inégalités matérielles systématiques et des violences spécifiques subies par les femmes.
Ces théories mettent en lumière les angles morts du droit traditionnel, notamment dans des domaines comme le viol conjugal, le harcèlement sexuel, ou la discrimination indirecte. Elles plaident pour une réforme du droit tenant compte des expériences vécues et des rapports de pouvoir structurels, plutôt qu'une application mécanique de principes abstraits.
=== Les Critical Legal Studies ===
Le mouvement des ''Critical Legal Studies'' (CLS), apparu aux États-Unis dans les années 1970, radicalise la critique du formalisme juridique. Influencés par le marxisme, la théorie critique et le déconstructionnisme, les théoriciens CLS (Roberto Unger, Duncan Kennedy, Mark Tushnet) soutiennent que le droit ne constitue pas un système cohérent de principes neutres, mais un ensemble de discours contradictoires reflétant des choix politiques et idéologiques.
Le droit est « indéterminé » : pour presque toute question juridique, des arguments également plausibles peuvent être formulés en faveur de solutions opposées. Cette indétermination est masquée par la rhétorique de l'objectivité et de la neutralité, qui légitime en réalité l'ordre social existant. Les CLS appellent à « démystifier » le droit en révélant ses présupposés idéologiques et ses fonctions de reproduction des hiérarchies sociales.
== Conclusion ==
La philosophie du droit aborde des questions fondamentales concernant la nature, le fondement et la légitimité des normes qui régissent la vie collective. Les débats entre jusnaturalisme et positivisme juridique, entre conceptions objectives et subjectives du droit, entre approches formalistes et réalistes, manifestent des désaccords profonds sur ce qu'est le droit et ce qu'il doit être.
Ces controverses philosophiques ne sont pas de pures spéculations théoriques, mais engagent des enjeux pratiques essentiels : la protection des droits fondamentaux, la résistance aux lois injustes, la conception de la justice sociale, l'organisation du pouvoir politique. La réflexion philosophique sur le droit reste indispensable pour éclairer les choix normatifs que les sociétés démocratiques doivent opérer concernant leur organisation juridique et politique.
Les développements contemporains du droit, notamment avec la mondialisation, l'émergence de nouveaux droits (droits environnementaux, droits numériques), et les défis posés par les biotechnologies, renouvellent les questions classiques de la philosophie du droit et appellent à repenser les catégories traditionnelles pour répondre aux enjeux du XXIe siècle.
== Notes et références ==
{{references}}
== Bibliographie ==
=== Sources classiques ===
* Aristote, ''Éthique à Nicomaque'', traduction de Richard Bodéüs, Paris, Flammarion, coll. « GF », 2004.
* Cicéron, ''De la République. Des Lois'', traduction de Charles Appuhn, Paris, Flammarion, coll. « GF », 1965.
* Thomas d'Aquin, ''Somme théologique'', traduction française sous la direction de A.-M. Roguet, Paris, Éditions du Cerf, 1984-1986, 4 volumes (pour les questions sur la loi : Ia-IIae, questions 90-97).
* Hugo Grotius, ''Le droit de la guerre et de la paix'' (1625), traduction de P. Pradier-Fodéré, Paris, Presses universitaires de France, 1999.
* Thomas Hobbes, ''Léviathan'' (1651), traduction de Gérard Mairet, Paris, Gallimard, coll. « Folio essais », 2000.
* John Locke, ''Second traité du gouvernement civil'' (1690), traduction de Jean-Fabien Spitz, Paris, Presses universitaires de France, coll. « Épiméthée », 1994.
* Emmanuel Kant, ''Métaphysique des mœurs'', première partie : « Doctrine du droit » (1797), traduction d'Alain Renaut, Paris, Flammarion, coll. « GF », 1994.
* G. W. F. Hegel, ''Principes de la philosophie du droit'' (1820), traduction de Jean-François Kervégan, Paris, Presses universitaires de France, coll. « Quadrige », 2013.
=== Philosophie du droit moderne et contemporaine ===
* Hans Kelsen, ''Théorie pure du droit'' (1934, 2e édition 1960), traduction de Charles Eisenmann, Paris, Dalloz, 1962 ; traduction de la 2e édition par Charles Eisenmann, Paris, Librairie générale de droit et de jurisprudence, 1999.
* Herbert L. A. Hart, ''Le concept de droit'' (''The Concept of Law'', 1961), traduction de Michel van de Kerchove, Bruxelles, Facultés universitaires Saint-Louis, 2005.
* Ronald Dworkin, ''Prendre les droits au sérieux'' (''Taking Rights Seriously'', 1977), traduction de Marie-Jeanne Rossignol et Frédéric Limare, Paris, Presses universitaires de France, coll. « Léviathan », 1995.
* Ronald Dworkin, ''L'empire du droit'' (''Law's Empire'', 1986), traduction d'Élisabeth Soubrenie, Paris, Presses universitaires de France, coll. « Recherches politiques », 1994.
* John Rawls, ''Théorie de la justice'' (''A Theory of Justice'', 1971, édition révisée 1999), traduction de Catherine Audard, Paris, Seuil, coll. « Points Essais », 2009.
* John Rawls, ''Libéralisme politique'' (''Political Liberalism'', 1993), traduction de Catherine Audard, Paris, Presses universitaires de France, coll. « Quadrige », 2006.
* Amartya Sen, ''Un nouveau modèle économique. Développement, justice, liberté'' (''Development as Freedom'', 1999), traduction de Michel Bessières, Paris, Odile Jacob, 2003.
=== Études sur l'histoire et les théories du droit ===
* Michel Villey, ''Leçons d'histoire de la philosophie du droit'', Paris, Dalloz, 1962 (réédition 2002).
* Michel Villey, ''Le droit et les droits de l'homme'', Paris, Presses universitaires de France, coll. « Quadrige », 1983.
* Michel Villey, ''Philosophie du droit. Définitions et fins du droit. Les moyens du droit'', Paris, Dalloz, 2001, 2 volumes.
* Jean-François Kervégan, ''L'effectif et le rationnel. Hegel et l'esprit objectif'', Paris, Vrin, coll. « Bibliothèque d'histoire de la philosophie », 2008.
* Grégory Bligh, ''Les bases philosophiques du positivisme juridique de H.L.A. Hart'', Institut universitaire Varenne, 2016.
* Stéphane Chauvier (dir.), ''Le droit naturel'', Paris, Vrin, coll. « Thema », 2018.
[[Catégorie:Philosophie politique]]
{{autocat}}
4hstcr3yur0zxzz1i7j8tqk7wzh69fr
Dictionnaire de philosophie/Dualisme
0
83179
768392
759886
2026-06-23T03:58:55Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768392
wikitext
text/x-wiki
{{DicoPhilo|Dualisme|lecture=oui}}
Le dualisme désigne toute conception philosophique qui affirme l'existence de deux principes irréductibles et indépendants. Opposé au monisme, qui ne reconnaît qu'un seul principe fondamental, le dualisme se décline selon plusieurs modalités : religieuse, métaphysique, épistémologique. La question de savoir si la réalité est, en son fond, une ou double traverse toute l'histoire de la philosophie occidentale et continue de structurer les débats contemporains, en particulier en philosophie de l'esprit.
== Dualisme religieux et cosmologique ==
Dans le domaine religieux, le dualisme caractérise les doctrines qui postulent l'existence de deux principes cosmiques opposés, généralement le Bien et le Mal, la Lumière et les Ténèbres. Cette forme de dualisme apparaît dès l'Antiquité dans plusieurs traditions religieuses.
Le zoroastrisme, fondé par Zarathoustra dans l'ancienne Perse (probablement entre le II{{e}} et le I{{er}} millénaire avant notre ère), constitue l'une des premières expressions systématiques du dualisme religieux. Cette religion oppose Ahura Mazda, principe du bien et de la lumière, à Angra Mainyu (ou Ahriman), principe du mal et des ténèbres. L'univers entier se conçoit comme le théâtre d'un combat cosmique entre ces deux forces, dont l'affrontement structure l'histoire du monde.
Le manichéisme, doctrine fondée par Mani au III{{e}} siècle, pousse plus loin ce dualisme en posant l'existence de deux royaumes absolument opposés : celui de la Lumière, domaine de l'esprit et du bien, et celui des Ténèbres, domaine de la matière et du mal. Pour les manichéens, l'âme humaine est une parcelle de lumière emprisonnée dans la matière corporelle et doit se libérer par la connaissance (gnose) et l'ascèse.
Le gnosticisme, mouvement religieux et philosophique des premiers siècles de notre ère, partage avec le manichéisme une vision dualiste marquée. Les gnostiques opposent le Dieu transcendant et bon, étranger à ce monde, au Démiurge, créateur maléfique ou ignorant de l'univers matériel. La matière est tenue pour intrinsèquement mauvaise, prison de l'âme divine qu'il importe de délivrer.
Ces dualismes religieux ont profondément influencé certains courants hérétiques du christianisme médiéval, notamment le catharisme, condamné par l'Église catholique précisément en raison de son incompatibilité avec le dogme d'une création divine fondamentalement bonne.
== Dualisme métaphysique antique ==
=== Platon et la distinction des mondes ===
Platon (428-348 av. J.-C.) inaugure, dans la philosophie occidentale, une forme de dualisme métaphysique qui exercera une influence décisive. Sa théorie des Idées ou Formes (''eidos'') distingue deux niveaux de réalité :
Le monde sensible (''kosmos aisthetos''), accessible par les sens, se caractérise par le devenir, le changement et l'imperfection. Les objets sensibles ne sont que des copies imparfaites et éphémères, soumises à la corruption.
Le monde intelligible (''kosmos noetos''), accessible par l'intellect seul, représente le domaine des Idées éternelles, immuables et parfaites. Les Idées constituent les véritables essences dont les choses sensibles ne sont que des participations (''methexis'') ou des imitations (''mimesis'').
Cette distinction ontologique fonde un dualisme épistémologique : à la connaissance sensible (''doxa''), simple opinion révisable, s'oppose la connaissance intellectuelle (''epistémè''), science véritable des réalités éternelles. L'allégorie de la caverne, exposée dans la ''République'' (livre VII), illustre ce passage de l'ignorance à la connaissance, du monde des ombres à celui de la vérité intelligible.
Le dualisme anthropologique platonicien prolonge ce dualisme métaphysique. Dans le ''Phédon'', Platon développe la thèse de l'immortalité de l'âme et de sa préexistence au corps. L'âme (''psychè''), de nature divine et intelligible, se trouve enfermée dans un corps (''sôma'') matériel. Le jeu de mots ''sôma-sèma'' (« le corps‑tombeau ») exprime cette conception : le corps est le tombeau de l'âme, qui s'y trouve enchaînée. La philosophie devient alors une préparation à la mort, c'est‑à‑dire une libération progressive de l'âme à l'égard des entraves corporelles.
Dans le ''Phèdre'', Platon propose une psychologie tripartite où l'âme comprend trois parties : le ''logistikon'' (partie rationnelle ou intellective), le ''thymos'' (partie irascible ou courageuse) et l{{'}}''epithymia'' (partie désirante ou appétitive). Seule la partie rationnelle est immortelle et capable de contempler les Idées. Le mythe de l'attelage ailé illustre cette conception : l'âme est comparée à un char tiré par deux chevaux (représentant le ''thymos'' et l{{'}}''epithymia'') et conduit par un cocher (le ''logistikon''). Cette image rend sensible la difficulté à maîtriser les parties inférieures de l'âme.
=== Aristote et le dépassement du dualisme platonicien ===
Aristote (384-322 av. J.-C.), disciple de Platon, critique le dualisme de son maître et propose une conception destinée à surmonter la séparation des deux mondes. Sa théorie hylémorphique (de ''hylè'', matière, et ''morphè'', forme) constitue une tentative de réconciliation.
Pour Aristote, toute substance (''ousia'') sensible est un composé indissociable de matière et de forme. La matière représente le principe d'indétermination, la pure potentialité, tandis que la forme constitue le principe de détermination, l'acte qui actualise la matière. Un être vivant n'est ni sa matière seule (les éléments physico‑chimiques qui le composent), ni sa forme seule (son âme ou principe vital), mais l'union substantielle des deux.
Cette doctrine s'applique tout particulièrement à la conception aristotélicienne de l'âme, exposée dans le traité ''De l'âme'' (''De anima''). L'âme n'est pas une substance séparée emprisonnée dans un corps, mais la forme substantielle du corps vivant, son principe d'organisation et de vie. Aristote la définit comme « l'entéléchie première d'un corps naturel ayant la vie en puissance » (''De anima'', II, 1, 412a27-28)<ref>Aristote, ''De l'âme'', texte établi par A. Jannone, traduction et notes par E. Barbotin, Paris, Les Belles Lettres, 1966, p. 44.</ref>. L'âme et le corps forment ainsi une unité substantielle, et non un assemblage accidentel de deux substances hétérogènes.
Aristote distingue trois types d'âmes correspondant à trois niveaux de vie : l'âme végétative (''threptikon''), présente chez tous les vivants et assurant les fonctions de nutrition et de reproduction ; l'âme sensitive (''aisthetikon''), propre aux animaux, qui ajoute la sensation et le mouvement local ; l'âme intellective (''noêtikon''), exclusive à l'être humain, qui permet la pensée abstraite et la connaissance des universels. Les deux premières sont indissociables du corps et périssent avec lui ; le statut de l'intellect (''nous'') soulève cependant des difficultés. Dans un passage célèbre et énigmatique du ''De anima'' (III, 5), Aristote évoque un « intellect agent » (''nous poiètikos'') qui « vient du dehors » et paraît séparable du corps, ce qui suggère une forme limitée de dualisme.
La tradition scolastique médiévale héritera de cette ambiguïté et développera des interprétations divergentes : certains penseurs (comme Alexandre d'Aphrodise) niaient toute immortalité de l'âme individuelle, d'autres (comme Averroès) soutenaient l'existence d'un intellect unique pour tous les hommes, d'autres enfin (comme Thomas d'Aquin) défendaient l'immortalité personnelle de l'âme intellective.
== Dualisme cartésien et ses apories ==
=== La « révolution » cartésienne ===
René Descartes (1596‑1650) institue un dualisme métaphysique d'un genre nouveau qui marquera durablement la philosophie moderne. Dans les ''Méditations métaphysiques'' (1641), il établit, par le doute méthodique, que la pensée constitue l'essence de l'esprit (''cogito, ergo sum'') et que l'extension constitue l'essence de la matière.
Cette distinction aboutit à la formulation d'un dualisme des substances : il existe deux types de substances créées, fondamentalement différentes, la ''res cogitans'' (substance pensante) et la ''res extensa'' (substance étendue). Une substance se définit comme « une chose qui existe de telle sorte qu'elle n'a besoin d'aucune autre chose pour exister » (''Principes de la philosophie'', I, § 51)<ref>Descartes, René, ''Œuvres de Descartes'', éd. Charles Adam et Paul Tannery, Paris, Vrin, 1964‑1974, vol. VIII‑A, p. 24.</ref>.
Les deux substances possèdent des attributs essentiels radicalement distincts :
La substance pensante se caractérise par la pensée (''cogitatio''), terme qui englobe tous les états mentaux conscients : perception, imagination, sentiment, volition, intellection. Elle est indivisible, immatérielle, non localisée dans l'espace. L'esprit se connaît mieux qu'il ne connaît le corps, par intuition immédiate de ses propres pensées.
La substance étendue se définit par l'extension (''extensio'') dans les trois dimensions spatiales. Elle est divisible, localisable, soumise aux lois mécaniques du mouvement. Descartes réduit toutes les qualités physiques à des modifications géométriques et cinématiques de la matière : il n'existe dans la nature que « figure et mouvement » (''Le Monde'', chapitre 7)<ref>Descartes, René, ''Le Monde ou Traité de la Lumière'', dans ''Œuvres de Descartes'', éd. Charles Adam et Paul Tannery, Paris, Vrin, 1964‑1974, vol. XI, p. 33.</ref>.
Cette distinction permet à Descartes de fonder la physique mécaniste moderne : les corps, y compris les corps vivants, fonctionnent comme des machines complexes dont tous les phénomènes s'expliquent par la seule extension et le mouvement. Les animaux, dépourvus d'âme pensante, ne sont pour lui que de purs automates (''Les Passions de l'âme'', I, art. 6)<ref>Descartes, René, ''Les Passions de l'âme'', éd. Geneviève Rodis‑Lewis, Paris, Vrin, 1994, p. 64.</ref>.
=== Le problème de l'union de l'âme et du corps ===
Le dualisme cartésien se heurte immédiatement à une difficulté majeure : si l'âme et le corps sont deux substances de nature absolument différente, comment peuvent‑ils interagir ? Comment un acte de volonté (immatériel) peut‑il causer un mouvement corporel (matériel) ? Comment une lésion cérébrale (matérielle) peut‑elle affecter la pensée (immatérielle) ?
Descartes lui‑même reconnaît le problème. Dans sa correspondance avec la princesse Élisabeth de Bohême (1643), il avoue qu'il existe « trois notions primitives » : l'âme seule, le corps seul, et leur union. Cette dernière notion doit se concevoir non par l'entendement pur, mais par l'expérience vécue : « C'est en usant seulement de la vie et des conversations ordinaires, et en s'abstenant de méditer aux choses qui exercent l'imagination, qu'on apprend à concevoir l'union de l'âme et du corps » (lettre à Élisabeth, 28 juin 1643)<ref>Descartes, René, ''Correspondance avec Élisabeth et autres lettres'', éd. Jean‑Marie et Michelle Beyssade, Paris, GF Flammarion, 1989, p. 68.</ref>.
Sur le plan physiologique, Descartes localise l'interaction entre l'âme et le corps dans la glande pinéale (ou épiphyse), petite glande située au centre du cerveau. Il choisit cet organe parce qu'il le croit unique (contrairement à la plupart des autres structures cérébrales, qui vont par paires) et occupant une position centrale. Les « esprits animaux » (fluides subtils circulant dans les nerfs) transmettent les informations sensorielles à la glande, où l'âme les perçoit ; réciproquement, l'âme agit sur la glande en modifiant le flux des esprits animaux pour produire des mouvements volontaires (''Les Passions de l'âme'', I, art. 31‑32)<ref>Descartes, René, ''Les Passions de l'âme'', éd. Geneviève Rodis‑Lewis, Paris, Vrin, 1994, p. 79‑81.</ref>.
Cette « solution » physiologique n'a jamais vraiment convaincu les critiques. Elle localise l'interaction sans en expliquer la possibilité métaphysique : comment une substance immatérielle peut‑elle mouvoir une glande matérielle ? Les découvertes ultérieures en neuroanatomie ont, de plus, montré que la glande pinéale ne possède ni la centralité fonctionnelle ni le rôle que Descartes lui attribuait ; elle intervient principalement dans la régulation des rythmes circadiens par la sécrétion de mélatonine.
=== Critiques et alternatives au dualisme cartésien ===
Le problème de l'interaction suscite rapidement plusieurs réponses philosophiques :
L'occasionnalisme, défendu notamment par Nicolas Malebranche (1638‑1715) dans la ''Recherche de la vérité'' (1674‑1675), nie toute causalité réelle entre l'âme et le corps. Lorsque je veux lever le bras, ma volonté ne constitue que l'« occasion » pour Dieu de causer le mouvement du bras. Malebranche affirme : « Il n'y a qu'un seul vrai moteur, qui est Dieu ». L'apparence d'interaction s'explique par une intervention divine constante qui coordonne les états mentaux et les états corporels selon des lois établies une fois pour toutes<ref>Malebranche, Nicolas, ''De la recherche de la vérité'', éd. Geneviève Rodis‑Lewis, Paris, Vrin, 1991, vol. 2, p. 312‑313.</ref>.
La théorie de l'harmonie préétablie, proposée par Gottfried Wilhelm Leibniz (1646‑1716) dans le ''Système nouveau de la nature'' (1695) et la ''Monadologie'' (1714), rejette également toute interaction causale entre l'âme et le corps. Dieu a créé l'univers de telle sorte que tous les états de toutes les substances (les « monades ») se correspondent parfaitement sans jamais s'influencer mutuellement. L'âme et le corps se comparent à « deux horloges qui s'accordent parfaitement » sans communiquer<ref>Leibniz, Gottfried Wilhelm, ''Système nouveau de la nature'', § 14, dans ''Œuvres'', Paris, Aubier‑Montaigne, 1972, p. 82.</ref>. Chaque monade « suit ses propres lois » tout en s'accordant avec les autres par l'harmonie préétablie instituée par Dieu lors de la création.
Baruch Spinoza (1632‑1677) rejette radicalement le dualisme cartésien en faveur d'un monisme strict. Dans l'''Éthique'' (publiée après sa mort en 1677), il affirme qu'il n'existe qu'une seule substance, Dieu ou la Nature (''Deus sive Natura''), possédant une infinité d'attributs dont nous ne connaissons que deux : la Pensée et l'Étendue. L'esprit et le corps ne sont pas deux substances distinctes, mais « une seule et même chose, qui est conçue tantôt sous l'attribut de la Pensée, tantôt sous celui de l'Étendue » (''Éthique'', II, proposition 7, scolie)<ref>Spinoza, Baruch, ''Éthique'', traduction Bernard Pautrat, Paris, Seuil, 1988, p. 95.</ref>. Ce parallélisme psychophysique évite le problème de l'interaction : il n'existe pas de causalité entre l'esprit et le corps, mais une correspondance structurelle. Comme Spinoza l'écrit : « l'ordre et la connexion des idées est le même que l'ordre et la connexion des choses » (''Éthique'', II, proposition 7)<ref>Spinoza, Baruch, ''Éthique'', traduction Bernard Pautrat, Paris, Seuil, 1988, p. 95.</ref>.
Les Platoniciens de Cambridge, comme Henry More (1614‑1687) et Ralph Cudworth (1617‑1688), tentent de préserver le dualisme cartésien en le remaniant. More, dans son ''Enchiridion Metaphysicum'' (1671), critique Descartes pour avoir défini la matière par l'extension seule. Il propose que l'esprit aussi possède une forme d'extension, mais d'une manière différente de la matière : l'esprit reste pénétrable, tandis que la matière est impénétrable. Cette « extension spirituelle » permettrait, selon lui, de mieux rendre compte de l'union et de l'interaction de l'âme et du corps.
== Dualisme moderne et contemporain ==
=== Empirisme britannique et agnosticisme ===
John Locke (1632‑1704), dans l{{'}}''Essai sur l'entendement humain'' (1690), adopte une attitude agnostique quant à la nature de l'esprit. Il insiste sur notre ignorance des substances : nous ne connaissons que les qualités des choses, jamais leur substrat ultime. Contre Descartes, Locke suggère que « nous ne pourrons peut‑être jamais savoir si un être purement matériel pense ou non », car Dieu aurait pu « donner à certains amas de matière [...] la faculté de percevoir et de penser » (''Essai'', IV, 3, § 6)<ref>Locke, John, ''Essai sur l'entendement humain'', traduction Jean‑Michel Vienne, Paris, Vrin, 2001, p. 541.</ref>. Cette position, parfois accusée de matérialisme latent, tend à relativiser la portée spéculative du dualisme métaphysique.
David Hume (1711‑1776) pousse plus loin le scepticisme. Dans le ''Traité de la nature humaine'' (1739‑1740), il nie l'existence d'un moi substantiel : « Quand je pénètre le plus intimement dans ce que j'appelle moi, je bute toujours sur quelque perception particulière de chaud ou de froid, de lumière ou d'ombre, d'amour ou de haine, de douleur ou de plaisir. Je ne puis jamais, à aucun moment, me saisir moi‑même sans une perception et ne puis jamais rien observer d'autre que la perception » (''Traité'', I, 4, 6)<ref>Hume, David, ''Traité de la nature humaine'', traduction Philippe Saltel, Paris, GF Flammarion, 1995, p. 343.</ref>. Le moi n'est qu'un « faisceau de perceptions » sans unité substantielle : le débat entre dualisme et matérialisme sur la substance de l'âme perd dès lors une grande part de sa portée.
=== Kant et le dualisme phénoménal ===
Emmanuel Kant (1724‑1804) transforme profondément la question du dualisme. Dans la ''Critique de la raison pure'' (1781, 1787), il distingue les phénomènes (ce qui apparaît à notre connaissance sensible, structuré par les formes a priori de l'intuition – espace et temps – et les catégories de l'entendement) et les noumènes ou choses en soi (la réalité telle qu'elle se présenterait indépendamment de notre mode de connaissance).
Cette distinction ne correspond pas à un dualisme métaphysique au sens cartésien : Kant ne pose pas deux mondes séparés, mais deux points de vue sur une même réalité. Nous ne connaissons que les phénomènes ; les noumènes restent inconnaissables, bien que leur existence soit pensable et même requise du point de vue pratique (moral). Le dualisme kantien est donc d'abord épistémologique plutôt que substantiel.
S'agissant de l'âme, Kant critique, dans les « Paralogismes de la raison pure », les preuves rationalistes de sa substantialité, de sa simplicité et de son immortalité. L'unité du « Je pense » n'implique nullement l'existence d'une substance spirituelle simple et immortelle. Cependant, dans la ''Critique de la raison pratique'' (1788), Kant réintroduit l'immortalité de l'âme comme postulat de la raison pratique, nécessaire pour assurer la possibilité du souverain bien (union de la vertu et du bonheur).
=== Hegel et le dépassement dialectique du dualisme ===
Georg Wilhelm Friedrich Hegel (1770‑1831) critique vigoureusement les dualismes hérités de la tradition philosophique. Dans la ''Phénoménologie de l'Esprit'' (1807) et la ''Science de la Logique'' (1812‑1816), il vise en particulier le dualisme kantien entre phénomène et noumène, qu'il juge contradictoire : poser une chose en soi inconnaissable, c'est déjà la déterminer comme telle.
Pour Hegel, toute opposition (âme et corps, sujet et objet, pensée et être, fini et infini) doit être pensée dialectiquement, c'est‑à‑dire appelée à se dépasser (''aufgehoben'') dans une synthèse supérieure qui la conserve tout en la surmontant. Le réel est rationnel et le rationnel est réel : aucune scission ultime ne sépare la pensée et l'être. L'Idée absolue, terme du processus dialectique, réalise l'unité spéculative de tous les contraires.
Le système hégélien se présente comme un monisme idéaliste : tout ce qui est apparaît comme expression de l'Esprit (''Geist''), qui se développe historiquement en se posant lui‑même, en s'aliénant dans la nature (l'autre de soi), puis en se réconciliant avec soi‑même dans l'Esprit absolu (art, religion, philosophie).
=== Matérialisme et réductionnisme ===
Le XIX{{e}} siècle voit s'épanouir diverses formes de matérialisme qui rejettent le dualisme au profit d'un monisme de type matériel. Les progrès des sciences naturelles, en particulier de la physiologie et de la théorie de l'évolution, semblent autoriser une explication purement matérielle de l'ensemble des phénomènes, y compris mentaux.
Ludwig Feuerbach (1804‑1872) affirme dans ''L'Essence du christianisme'' (1841) que « l'homme est ce qu'il mange » : la pensée dépend entièrement de l'organisation matérielle du corps. Karl Marx (1818‑1883) et Friedrich Engels (1820‑1895) développent un matérialisme dialectique et historique qui inverse l'idéalisme hégélien : ce n'est pas la conscience qui détermine la vie, mais la vie sociale et économique qui conditionne la conscience.
Julien Offray de La Mettrie (1709‑1751), dès le XVIII{{e}} siècle, soutient dans ''L'Homme‑machine'' (1748) un matérialisme mécaniste selon lequel l'homme n'est qu'une machine perfectionnée : « Le corps humain est une horloge, mais immense et construite avec tant d'artifice et d'habileté... »<ref>La Mettrie, Julien Offray de, ''L'Homme‑Machine'', éd. Paul‑Laurent Assoun, Paris, Denoël/Gonthier, 1981, p. 177.</ref>.
Au XX{{e}} siècle, le matérialisme éliminativiste, défendu par des philosophes comme Paul et Patricia Churchland, va jusqu'à nier l'existence des états mentaux tels que la psychologie du sens commun les conçoit (croyances, désirs, intentions, etc.). Ces concepts appartiendraient à une « théorie naïve » destinée à disparaître au profit des descriptions neurobiologiques d'une science de l'esprit pleinement développée.
=== Phénoménologie et philosophie de l'existence ===
Edmund Husserl (1859‑1938), fondateur de la phénoménologie, cherche à dépasser l'opposition entre matérialisme et idéalisme en revenant « aux choses mêmes ». La conscience n'est pas une substance, mais intentionnalité pure : toute conscience est conscience de quelque chose. Cette structure intentionnelle précède la distinction métaphysique entre sujet et objet et reconfigure les termes classiques du dualisme.
Maurice Merleau‑Ponty (1908‑1961), dans la ''Phénoménologie de la perception'' (1945), critique aussi bien le dualisme cartésien que le matérialisme réductionniste. Il décrit l'existence humaine comme celle d'un être‑au‑monde où le corps n'est ni pur objet matériel ni simple instrument de l'esprit, mais « corps propre » ou « corps vécu » (''Leib''), point d'ancrage de notre rapport au monde. L'exemple du « membre fantôme » illustre de manière frappante l'impossibilité de réduire l'expérience vécue du corps à des processus exclusivement physiologiques ou à de simples états psychiques<ref>Merleau‑Ponty, Maurice, ''Phénoménologie de la perception'', Paris, Gallimard, 1945, p. 90‑110.</ref>.
Jean‑Paul Sartre (1905‑1980) développe, dans ''L'Être et le Néant'' (1943), une ontologie qui distingue l'être‑en‑soi (massif, plein, sans conscience) et l'être‑pour‑soi (la conscience, néantisation perpétuelle, liberté). Bien que ces deux modes d'être soient radicalement distincts, Sartre refuse de les concevoir comme deux substances : la conscience n'est pas une chose, mais un mouvement de mise à distance et de dépassement de l'être.
== Dualisme en philosophie de l'esprit contemporaine ==
=== Dualisme des substances et dualisme des propriétés ===
La philosophie analytique de l'esprit contemporaine distingue soigneusement plusieurs formes de dualisme. Le dualisme des substances (ou dualisme cartésien) affirme l'existence de deux types de substances, matérielles et immatérielles. Cette position est aujourd'hui minoritaire parmi les philosophes, bien qu'elle conserve des défenseurs comme Richard Swinburne ou John Foster.
Le dualisme des propriétés bénéficie d'une audience plus large. Il admet qu'il n'existe qu'un seul type de substance (généralement matérielle), mais que certains êtres (les êtres conscients) possèdent deux types irréductibles de propriétés : des propriétés physiques et des propriétés mentales. Les propriétés mentales (comme avoir mal, voir du rouge, penser à Paris) ne se réduisent pas aux propriétés physiques (comme les états neuronaux qui les réalisent).
Cette position se décline en plusieurs variantes. L'émergentisme, défendu par des philosophes comme C. D. Broad dans ''The Mind and its Place in Nature'' (1925) et repris sous des formes renouvelées au XX{{e}} siècle, soutient que les propriétés mentales « émergent » de processus physiques complexes sans se réduire à eux. Ces propriétés émergentes possèdent des pouvoirs causaux propres (''downward causation'') qui ne se laissent pas déduire des lois physiques élémentaires.
L'épiphénoménisme, défendu notamment par Thomas Henry Huxley au XIX{{e}} siècle et par Frank Jackson au XX{{e}} siècle (dans « Epiphenomenal Qualia », 1982, avant qu'il ne révise sa position), admet l'existence de propriétés mentales distinctes des propriétés physiques, mais leur dénie tout pouvoir causal : les états mentaux ne sont que des effets (« épiphénomènes ») des processus cérébraux, sans influence en retour sur le monde physique. Cette position échappe au problème de l'interaction au prix de rendre obscure notre pratique ordinaire qui consiste à expliquer les actions par les croyances et les désirs.
=== Arguments en faveur du dualisme ===
Les défenseurs contemporains du dualisme avancent plusieurs types d'arguments :
L'argument de la modalité (ou argument de la concevabilité), reformulé par Saul Kripke dans ''La Logique des noms propres'' (1980), soutient qu'il est métaphysiquement possible que les états mentaux existent sans les états physiques correspondants (et inversement). Or, ce qui est réellement concevable comme possible révèle ce qui peut être métaphysiquement distinct : dès lors, les états mentaux et les états physiques ne sauraient être identiques<ref>Kripke, Saul, ''La Logique des noms propres'', traduction Pierre Jacob et François Recanati, Paris, Minuit, 1982, p. 143‑178.</ref>.
L'argument de la connaissance (ou « argument de Mary »), formulé par Frank Jackson dans « Epiphenomenal Qualia » (1982), imagine Mary, une scientifique qui connaît tous les faits physiques sur la vision des couleurs, mais a vécu toute sa vie dans une pièce en noir et blanc. Lorsqu'elle sort et voit du rouge pour la première fois, apprend‑elle quelque chose de nouveau ? Si tel est le cas, c'est que la connaissance de tous les faits physiques ne suffit pas pour connaître tous les faits mentaux ; donc le mental ne se réduit pas au physique<ref>Jackson, Frank, « Epiphenomenal Qualia », ''The Philosophical Quarterly'', vol. 32, n° 127, 1982, p. 127‑136.</ref>.
L'argument des qualia souligne que les expériences conscientes possèdent un aspect qualitatif subjectif (« l'effet que cela fait » de voir du rouge, de sentir le café, d'avoir mal) qui semble résister aux descriptions objectives des processus physiques. Thomas Nagel, dans « Quel effet cela fait‑il d'être une chauve‑souris ? » (1974), soutient qu'aucune description physique, si complète soit‑elle, du système sensoriel d'une chauve‑souris ne nous permettra de savoir « ce que cela fait » d'être une chauve‑souris. Il existerait ainsi un fossé irréductible entre la perspective objective (physique) et la perspective subjective (mentale)<ref>Nagel, Thomas, « Quel effet cela fait‑il d'être une chauve‑souris ? », dans ''Questions mortelles'', traduction Pascal Engel et Claudine Tiercelin, Paris, PUF, 1983, p. 393‑407.</ref>.
L'argument de l'intentionnalité, développé notamment par Franz Brentano dans ''Psychologie du point de vue empirique'' (1874), soutient que les phénomènes mentaux possèdent une caractéristique spécifique, l'intentionnalité (le fait de se rapporter à un objet), que les phénomènes physiques, pris comme tels, ne possèdent pas. Un état cérébral est un état localisé, tandis qu'une croyance porte toujours sur quelque chose, un désir vise un objet. Cette « relation vers un objet » semble difficile à décrire en termes purement physiques<ref>Brentano, Franz, ''Psychologie du point de vue empirique'', traduction Maurice de Gandillac, Paris, Aubier, 1944, p. 101‑113.</ref>.
=== Objections au dualisme ===
Les adversaires du dualisme formulent plusieurs objections majeures :
Le problème de la causalité mentale : comment expliquer que des états mentaux immatériels puissent causer des changements dans le monde physique (par exemple, que ma décision de lever le bras cause effectivement le mouvement de mon bras) ? Cette interaction semble violer le principe de clôture causale du physique, selon lequel tout événement physique possède une cause physique suffisante. Si le monde physique est causalement clos, les états mentaux paraissent superflus (épiphénoménisme), ce qui contredit notre expérience ordinaire. S'il ne l'est pas, l'hypothèse heurte l'édifice des sciences naturelles.
Le principe de parcimonie ontologique (« rasoir d'Ockham ») : pourquoi postuler deux types de substances ou de propriétés si une ontologie unifiée suffit à expliquer les phénomènes ? Le monisme matérialiste semble, de ce point de vue, plus économique.
L'argument évolutif : si l'esprit est une substance immatérielle distincte du cerveau, comment expliquer son apparition au cours de l'évolution biologique ? À quel moment de l'évolution des hominidés une âme immatérielle aurait‑elle été « ajoutée » au corps ? Cette question est difficile à traiter dans un cadre dualiste substantialiste.
Les neurosciences établissent des corrélations systématiques entre états cérébraux et états mentaux. Toute modification significative du cerveau (par lésion, drogue, stimulation) entraîne des modifications mentales corrélatives. Ces résultats suggèrent une forte dépendance du mental vis‑à‑vis du physique, difficilement conciliable avec un dualisme des substances.
=== Alternatives au dualisme ===
Face aux difficultés du dualisme, plusieurs alternatives se sont développées :
Le monisme neutre ou théorie du double aspect, défendu par Bertrand Russell dans ''L'Analyse de l'esprit'' (1921) ou encore par William James, postule l'existence d'une réalité fondamentale qui n'est en elle‑même ni mentale ni physique, mais dont le mental et le physique constituent deux aspects ou deux modes d'organisation. Cette position échappe au problème de l'interaction puisqu'il n'existe pas deux substances distinctes, mais soulève la question de la nature de cette réalité « neutre »<ref>Russell, Bertrand, ''L'Analyse de l'esprit'', traduction Michel Lefebvre, Paris, Payot, 1993, p. 139‑149.</ref>.
Le fonctionnalisme, développé par Hilary Putnam dans « The Nature of Mental States » (1967) et par Jerry Fodor, définit les états mentaux non par leur nature (matérielle ou immatérielle), mais par leur rôle fonctionnel dans le système cognitif : un état mental se caractérise par ses relations causales typiques aux entrées sensorielles, aux autres états mentaux et aux sorties comportementales. Cette approche est compatible avec un physicalisme (si les rôles fonctionnels sont réalisés par des états physiques) aussi bien qu'avec des formulations plus proches du dualisme.
Le physicalisme non réductionniste admet que tout ce qui existe est, en fin de compte, physique, mais nie que les concepts mentaux puissent se réduire aux concepts physiques ou disparaître. Donald Davidson défend, dans « Mental Events » (1970), un monisme anomal : chaque événement mental particulier est identique à un événement physique particulier, mais il n'existe pas de lois psychophysiques strictes permettant de réduire le mental au physique. Les concepts mentaux obéissent à des principes normatifs de rationalité (cohérence, optimisation) qui ne se traduisent pas directement dans le vocabulaire des neurosciences<ref>Davidson, Donald, ''Actions et événements'', traduction Pascal Engel, Paris, PUF, 1993, p. 287‑311.</ref>.
Le panpsychisme, défendu récemment par des auteurs comme Galen Strawson, Philip Goff ou encore, plus prudemment, David Chalmers, soutient que la conscience, ou du moins des proto‑propriétés mentales, est présente à tous les niveaux de la réalité, y compris dans les entités physiques élémentaires. La conscience humaine serait alors une forme complexe d'organisation de ces éléments proto‑mentaux universels. Cette position contourne le problème de l'émergence (comment le mental pourrait‑il surgir du physique totalement dépourvu de mental ?), mais pose d'autres problèmes, en particulier celui de la « combinaison » : comment des expériences élémentaires se combinent‑elles pour former un sujet conscient unifié ?
== Enjeux contemporains ==
Le débat sur le dualisme demeure central dans plusieurs domaines de la philosophie contemporaine :
En philosophie de l'esprit, la question de savoir si les états mentaux se réduisent aux états cérébraux ou s'ils constituent une catégorie ontologique irréductible reste ouverte, malgré les progrès des neurosciences cognitives.
En philosophie de l'action, le problème de la causalité mentale conduit à s'interroger sur la manière dont nos raisons (croyances, désirs, intentions) peuvent être de véritables causes de nos actions si le monde physique est causalement clos.
En éthique, la question du dualisme a des implications pour le problème du libre arbitre : sommes‑nous des agents libres dotés d'une volonté autonome, ou nos décisions se trouvent‑elles entièrement déterminées par des processus cérébraux ? Le dualisme semble offrir davantage d'espace conceptuel au libre arbitre que le matérialisme strict, mais se heurte aux difficultés déjà évoquées.
En philosophie de la mort et de l'identité personnelle, le dualisme permet de concevoir la survie de l'âme après la mort du corps, tandis que le matérialisme implique en général que la mort du cerveau signe la fin de la personne. Les débats sur le critère d'identité personnelle (critère physique, psychologique ou mixte) sont étroitement liés à la manière dont on se prononce sur le rapport âme‑corps.
Le dualisme, sous ses diverses formes, reste ainsi une position philosophique vivante et débattue, malgré les objections fortes qui lui sont adressées. La difficulté persistante à rendre compte de la conscience et de la subjectivité dans un cadre purement physicaliste maintient ouverte la question de la nature ultime de l'esprit et de son rapport au corps.
== Références ==
{{references}}
== Bibliographie ==
=== Sources classiques ===
* Platon, ''Phédon'', traduction Monique Dixsaut, Paris, GF Flammarion, 1991.
* Platon, ''Phèdre'', traduction Luc Brisson, Paris, GF Flammarion, 2004.
* Aristote, ''De l'âme'', traduction Richard Bodéüs, Paris, GF Flammarion, 1993.
* Descartes, René, ''Méditations métaphysiques'', éd. Jean‑Marie Beyssade et Michelle Beyssade, Paris, GF Flammarion, 1992.
* Descartes, René, ''Les Passions de l'âme'', éd. Geneviève Rodis‑Lewis, Paris, Vrin, 1994.
* Malebranche, Nicolas, ''De la recherche de la vérité'', éd. Geneviève Rodis‑Lewis, 3 vol., Paris, Vrin, 1991‑1992.
* Leibniz, Gottfried Wilhelm, ''Système nouveau de la nature'', dans ''Discours de métaphysique et autres textes'', éd. Christiane Frémont, Paris, GF Flammarion, 2001.
* Spinoza, Baruch, ''Éthique'', traduction Bernard Pautrat, Paris, Seuil, 1988.
* Kant, Emmanuel, ''Critique de la raison pure'', traduction Alain Renaut, Paris, GF Flammarion, 2006.
* Hegel, Georg Wilhelm Friedrich, ''Phénoménologie de l'Esprit'', traduction Jean‑Pierre Lefebvre, Paris, Aubier, 1991.
=== Études contemporaines ===
* Beyssade, Jean‑Marie, ''Descartes au fil de l'ordre'', Paris, PUF, 2001.
* Broad, Charlie Dunbar, ''The Mind and its Place in Nature'', London, Routledge & Kegan Paul, 1925.
* Chalmers, David J., ''L'Esprit conscient. À la recherche d'une théorie fondamentale'', traduction Stéphane Dunand, Paris, Ithaque, 2010.
* Churchland, Paul M., ''Matière et conscience'', traduction Charles Galis, Seyssel, Champ Vallon, 1999.
* Davidson, Donald, ''Actions et événements'', traduction Pascal Engel, Paris, PUF, 1993.
* Dennett, Daniel C., ''La Conscience expliquée'', traduction Pascal Engel, Paris, Odile Jacob, 1993.
* Des Chene, Dennis, ''Physiologia. Natural Philosophy in Late Aristotelian and Cartesian Thought'', Ithaca, Cornell University Press, 1996.
* Descombes, Vincent, ''La Denrée mentale'', Paris, Minuit, 1995.
* Engel, Pascal, ''Philosophie et psychologie'', Paris, Gallimard, 1996.
* Gepner, Bruno, « Relations psychisme‑cerveau, dualisme interactionniste et gradient de matérialité », ''Intellectica'', vol. 36‑37, 2003, p. 155‑174.
* Jackson, Frank, « Epiphenomenal Qualia », ''The Philosophical Quarterly'', vol. 32, n° 127, 1982, p. 127‑136.
* Kim, Jaegwon, ''Philosophie de l'esprit'', traduction Markus Zürcher et Isabelle Weiss, Paris, Ithaque, 2006.
* Kripke, Saul, ''La Logique des noms propres'', traduction Pierre Jacob et François Recanati, Paris, Minuit, 1982.
* Lowe, Edward Jonathan, ''An Introduction to the Philosophy of Mind'', Cambridge, Cambridge University Press, 2000.
* Merleau‑Ponty, Maurice, ''Phénoménologie de la perception'', Paris, Gallimard, 1945.
* Nagel, Thomas, ''Questions mortelles'', traduction Pascal Engel et Claudine Tiercelin, Paris, PUF, 1983.
* Popper, Karl, et Eccles, John, ''Le Moi et son cerveau'', traduction Jean‑Paul Béatrice, Paris, Fayard, 1977.
* Rozemond, Marleen, ''Descartes's Dualism'', Cambridge (Mass.), Harvard University Press, 1998.
* Russell, Bertrand, ''L'Analyse de l'esprit'', traduction Michel Lefebvre, Paris, Payot, 1993.
* Searle, John R., ''La Redécouverte de l'esprit'', traduction Claudine Tiercelin, Paris, Gallimard, 1995.
* Swinburne, Richard, ''The Evolution of the Soul'', Oxford, Clarendon Press, 1997.
== Voir aussi ==
* [[Monisme]]
* [[Matérialisme]]
* [[Idéalisme]]
* [[Philosophie de l'esprit]]
* [[Problème corps-esprit]]
* [[Dictionnaire de philosophie/Conscience|Conscience]]
* [[Intentionnalité]]
* [[Qualia]]
[[Catégorie:Métaphysique]]
[[Catégorie:Philosophie de l'esprit]]
[[Catégorie:Épistémologie]]
{{autocat}}
51fxbsqya1sok7m180tzrm58s52jrh3
Dictionnaire de philosophie/Désobéissance
0
83182
768382
767900
2026-06-23T03:57:15Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768382
wikitext
text/x-wiki
{{DicoPhilo|Désobéissance|lecture=oui}}
La désobéissance constitue l'acte par lequel un individu ou un groupe refuse délibérément de se conformer à une autorité, une loi ou une norme établie. Loin de se réduire à un simple manquement passif, la désobéissance engage une position active et consciente de refus qui soulève des questions philosophiques essentielles sur la nature de l'autorité politique, les fondements de l'obligation morale, et les limites de l'obéissance légitime. Elle traverse l'histoire de la philosophie comme une interrogation permanente : à quelles conditions précises une autorité peut-elle légitimement commander, et à quelles conditions la conscience individuelle peut-elle justifier son refus?
== Fondements antiques et médiévaux ==
=== Antigone et la tension entre loi naturelle et loi positive ===
La tragédie ''Antigone'' de Sophocle offre l'une des premières et des plus influentes représentations philosophiques de la désobéissance<ref>Sophocle, ''Antigone'', trad. P. Mazon, Paris, Les Belles Lettres, 1958, vers 450-460</ref>. Face au décret du roi Créon interdisant d'ensevelir son frère Polynice, Antigone oppose les « lois non écrites, inébranlables des dieux » (''nomoi agrapta tôn theôn'') aux édits humains. Cette protestation exprime bien plus qu'une simple rébellion personnelle : elle énonce une exigence morale supérieure, celle des lois divines et naturelles qui, selon Antigone, préexistent aux conventions humaines et doivent prévaloir sur elles<ref>Sophocle, ''Antigone'', vers 454-455</ref>.
La figure d'Antigone incarne la tension entre deux conceptions concurrentes de la justice : celle qui émane de l'autorité établie et légalement formelle (la justice positive de Créon) et celle qui s'enracine dans des principes moraux transcendants (la justice naturelle). Son acte de désobéissance affirme qu'il existe des obligations morales antérieures et supérieures aux commandements de l'État, et que dans certaines circonstances morales exceptionnelles, l'exigence éthique doit prévaloir sur l'obéissance civile mécanique. Cette figure revient constamment dans l'histoire de la philosophie : chez Hegel qui en fait un moment de la conscience tragique, chez Hölderlin, chez Hannah Arendt qui voit en elle l'emblème de la contestation morale de l'injustice légale<ref>Hannah Arendt, « On Civil Disobedience », dans ''Crises of the Republic'', New York, Harcourt Brace, 1970, p. 44-55</ref>.
=== Platon et la limite de l'obéissance ===
Dans la pensée grecque classique, la question de l'obéissance et de la désobéissance se pose de manière profondément nuancée. Le dialogue intitulé ''Criton'' met en scène Socrate refusant de s'évader de prison bien qu'il ait été injustement condamné à mort. Les Lois, personnifiées de manière allégorique, rappellent à Socrate qu'il leur doit son éducation civique et sa formation intellectuelle, et qu'il a tacitement accepté leur autorité en choisissant de demeurer à Athènes plutôt que de s'exiler<ref>Platon, ''Criton'', trad. L. Brisson, Paris, Flammarion, 1997, 50a-54d</ref>. Socrate reconnaît cette force de l'argument et accepte sa condamnation.
Pourtant, dans l'''Apologie'', le même Socrate énonce un principe qui semble contredire sa soumission finale : il déclare qu'il continuerait à philosopher et à poursuivre sa mission même si la cité le lui interdisait explicitement, car il doit « obéir à dieu plutôt qu'aux hommes »<ref>Platon, ''Apologie de Socrate'', trad. L. Brisson, Paris, Flammarion, 1997, 29d</ref>. Cette tension entre deux passages du corpus platonicien révèle une limite constitutive de l'obligation politique : elle ne peut s'étendre jusqu'à exiger l'abandon de la conscience morale. L'obéissance aux lois n'est pas absolue; elle rencontre une limite morale au-delà de laquelle l'obligation de se soumettre cesse de s'appliquer.
=== Aristote et la distinction entre justice générale et justice particulière ===
Aristote développe une distinction importante qui ouvrira la voie à la notion de « loi naturelle ». Dans l'''Éthique à Nicomaque'', il distingue entre justice générale, qui consiste en l'obéissance régulière aux lois, et justice particulière, qui concerne le traitement équitable dans chaque situation spécifique<ref>Aristote, ''Éthique à Nicomaque'', Livre V, chap. 7-10, trad. J. Tricot, Paris, Vrin, 1990</ref>. Cette distinction ouvre la possibilité théorique que certaines lois, bien que formellement valides et dûment édictées par l'autorité compétente, puissent être matériellement injustes ou ne pas servir le bien commun qu'elles prétendent viser.
La tradition du droit naturel, développée ultérieurement par les stoïciens romains (notamment Cicéron) et reprise par la scholastique médiévale, affirme l'existence de lois universelles inscrites dans la nature rationnelle de l'univers et accessibles à la raison humaine<ref>Cicéron, ''De officiis'', Livre I, 4, trad. M. Testard, Paris, Les Belles Lettres, 1965</ref>. Thomas d'Aquin, synthétisant Aristote et la théologie chrétienne, affirme dans la ''Somme théologique'' qu'une loi injuste ne mérite pas véritablement le nom de loi mais constitue plutôt « un acte de violence »<ref>Thomas d'Aquin, ''Somme théologique'', I-II, Questions 90-97, particulièrement Q. 92 art. 1, trad. Éditions de la Revue des Jeunes, Paris, 1925</ref>. Cette conception théologique et philosophique ouvre explicitement la possibilité théorique d'une désobéissance légitime face aux lois qui contrediraient frontalement la loi naturelle et la justice substantielle.
== La philosophie politique moderne et l'émergence du droit de résistance ==
=== John Locke et le contrat social fiduciaire ===
La philosophie politique moderne transforme profondément la question de la désobéissance en l'articulant au problème du contrat social et de la légitimité du pouvoir souverain. John Locke, dans son ''Second Traité du gouvernement civil'' (1689), développe une théorie cohérente et systématique du droit de résistance à l'oppression<ref>John Locke, ''Two Treatises of Government'', Cambridge University Press, 1988 (édition critique de P. Laslett), Second Treatise, chapitre XIX, « Of the Dissolution of Government »</ref>. Selon Locke, les individus ne transfèrent au gouvernement qu'une portion limitée et précise de leurs droits naturels, et uniquement à titre fiduciaire (c'est-à-dire en confiance), dans le but spécifique de préserver plus efficacement leur vie, leur liberté et leurs propriétés.
Lorsque le pouvoir politique excède manifestement ses prérogatives légitimes ou menace délibérément les droits fondamentaux qu'il était contractuellement tenu de protéger, les citoyens conservent un droit de résistance, voire de révolution. Ce droit de résistance n'est pas chez Locke un simple droit individuel susceptible d'abus arbitraires, mais un droit collectif qui s'exerce lorsque le gouvernement rompt le contrat social qui le lie au peuple de manière systématique et prolongée<ref>Locke, ''Second Treatise'', §222-243</ref>. La tradition rousseauiste et révolutionnaire française reprendra cette doctrine : la Déclaration française de 1789 inscrit explicitement « la résistance à l'oppression » parmi les droits naturels et imprescriptibles de l'homme<ref>Déclaration des droits de l'homme et du citoyen, 26 août 1789, article 2</ref>.
=== Jean-Jacques Rousseau et la volonté générale ===
Jean-Jacques Rousseau complexifie cette analyse en introduisant une distinction conceptuelle décisive entre la volonté générale, qui vise par définition l'intérêt commun et le bien public, et la volonté de tous, simple agrégation mécanique des volontés particulières et intéressées<ref>Rousseau, ''Du contrat social'', Livre II, chapitre 3, Paris, Flammarion, 2001, p. 54-56</ref>. Dans cette perspective rousseauiste, la légitimité de la désobéissance dépend entièrement de sa capacité à servir l'intérêt commun plutôt que des intérêts sectoriels ou particuliers. La désobéissance ne peut moralement se justifier que si elle tend à restaurer l'expression authentique et uncorrompue de la volonté générale lorsque celle-ci a été confisquée, dénaturée ou instrumentalisée par des factions.
== La désobéissance civile : émergence d'une pratique politico-philosophique ==
=== Henry David Thoreau : la conscience comme dernière instance morale ===
Henry David Thoreau inaugure au XIXe siècle une forme spécifique et philosophiquement articulée de désobéissance qu'il nomme d'abord « résistance au gouvernement civil » (''Resistance to Civil Government''). Son essai séminal, publié en 1849 dans la revue ''Aesthetic Papers'', puis republié en 1866 sous le titre désormais canonique ''Civil Disobedience'', s'enracine dans son refus personnel et public de payer l'impôt fédéral de l'État du Massachusetts pour protester contre l'institution de l'esclavage, l'extermination systématique des peuples autochtones, et la guerre américaine d'agression contre le Mexique (1846-1848)<ref>Thoreau, Henry David, « Resistance to Civil Government », ''Aesthetic Papers'', 1849, republié sous le titre « Civil Disobedience »</ref>.
En 1846, le shérif Sam Staples d'arrondissement de Concord invite Thoreau à payer ses impôts en retard. Thoreau refuse délibérément et publiquement, ce qui entraîne son incarcération brève mais significative. Dans son essai, Thoreau affirme que la conscience individuelle constitue l'instance morale suprême, antérieure et supérieure à toute loi positive de l'État. Il affirme avec force : « Sous un gouvernement qui emprisonne injustement quiconque, la vraie place d'un homme juste est aussi en prison<ref>Thoreau, ''Civil Disobedience'', édition Penguin, p. 10</ref>. »
Pour Thoreau, l'individu dispose d'une obligation morale qui transcende l'obligation légale : obéir à sa conscience morale. Il refuse vigoureusement l'idée que l'individu vertueux doive attendre qu'une majorité démocratique se forme pour s'opposer à une injustice manifeste. Il écrit à cet égard : « Une minorité n'est impuissante que lorsqu'elle se conforme à la majorité<ref>Thoreau, ''Civil Disobedience'', standard edition, p. 12</ref>. »
Cette conception profondément individualiste de la désobéissance marque la pensée politique moderne, bien qu'elle soit ultérieurement critiquée. Hannah Arendt reprochers à Thoreau de confondre la conscience privée (relevant du for intérieur personnel) avec l'opinion politique publique (relevant de l'espace politique collectif)<ref>Arendt, « Civil Disobedience », 1970, p. 44-45</ref>. Néanmoins, Thoreau établit plusieurs principes qui deviennent constitutifs de la théorie moderne : le caractère public et ouvert du refus, la volonté de se soumettre aux conséquences légales de son acte, et la nature explicitement non-violente de la résistance.
=== Mohandas K. Gandhi et la ''satyagraha'' : vérité et force ===
Mohandas K. Gandhi s'inspire directement des écrits de Thoreau pour développer sa propre philosophie de la résistance non-violente, qu'il nomme ''satyagraha'', littéralement « force de la vérité » ou plus précisément « étreinte de la vérité »<ref>Gandhi, Mohandas K., ''The Essential Gandhi: His Life, Work, and Ideas'', trad. Louis Fischer, New York, Vintage, 2002, p. 142-165</ref>. Pour Gandhi, la désobéissance civile ne constitue pas simplement un refus passif, une résistance négative, mais une forme d'action positive, créatrice et transformatrice visant à transformer profondément l'adversaire par un appel sincère à sa conscience morale et à son humanité partagée.
La ''satyagraha'' implique non seulement la non-violence physique absolue (''ahimsa'') mais aussi l'absence radicale de haine, de rancœur ou de malveillance envers l'oppresseur. Gandhi écrit : « Le satyagrahi doit montrer de la bonne volonté et de l'amour envers son adversaire, même face à la répression la plus brutale<ref>Gandhi, ''Non-violence in Peace and War'', Ahmedabad, Navajivan Press, 1948, vol. 1, p. 3-8</ref>. » Cette exigence éthique profonde n'est pas seulement morale mais stratégiquement efficace : elle maintient ouverte la possibilité d'une transformation mutuelle.
La désobéissance civile gandhienne se distingue donc par son caractère profondément transformateur et sa dimension éthique. Elle ne cherche pas seulement à empêcher une injustice ou à obtenir des concessions tactiques, mais à établir une nouvelle relation entre oppresseurs et opprimés, fondée sur la reconnaissance mutuelle de leur dignité humaine commune. Cette dimension éthique, spirituelle et humaniste, ancrée dans la philosophie hindoue et les traditions du non-violence (''ahimsa''), aura une influence considérable et durable sur les mouvements de libération politique du XXe siècle<ref>Sharp, Gene, ''The Politics of Nonviolent Action'', Boston, Porter Sargent, 1973, vol. 1, p. 109-145</ref>.
=== Martin Luther King Jr. : la distinction entre lois justes et lois injustes ===
Martin Luther King Jr. reprend et adapte de manière créative les principes gandhiens dans le contexte spécifique de la lutte pour les droits civiques aux États-Unis d'Amérique. Dans sa célèbre « Lettre de la prison de Birmingham » (écrite le 16 avril 1963), King développe une distinction philosophique fondamentale entre lois justes et lois injustes, distinction qui s'inscrit explicitement dans la tradition du droit naturel aristotélicien et thomiste<ref>King, Martin Luther Jr., « Letter from a Birmingham Jail », avril 1963, publié dans ''Why We Can't Wait'', New York, Harper & Row, 1964, p. 76-95</ref>.
S'appuyant directement sur saint Augustin (qui affirme « une loi injuste n'est pas une loi ») et sur Thomas d'Aquin, King énonce sa propre formule : « Toute loi qui élève la personnalité humaine est juste. Toute loi qui abaisse la personnalité humaine est injuste. Tous les statuts de ségrégation sont injustes parce que la ségrégation distord l'âme et endommage la personnalité<ref>King, « Letter from Birmingham Jail », p. 78-79</ref>. »
King insiste sur plusieurs caractéristiques essentielles que doivent satisfaire les actes de désobéissance civile pour être justifiés moralement : (1) elle doit être publique et ouverte, sans caractère clandestin; (2) elle doit être entreprise avec amour sincère plutôt qu'avec haine ou rage; (3) elle doit être accompagnée d'une volonté consciente et résolue d'accepter la peine légale qui s'ensuit<ref>King, « Letter from Birmingham Jail », p. 91-93</ref>. Cette dernière exigence n'est pas masochiste mais profondément stratégique : en acceptant volontairement la punition, en restant en prison, le désobéissant manifeste son respect fondamental pour le système légal en général tout en contestant une loi particulière; il cherche ainsi à « éveiller la conscience de la communauté » face à l'injustice persistante<ref>King, « Letter from Birmingham Jail », p. 82</ref>.
King développe également le concept d'« amour agressif » (''aggressive love''), qui articule la fermeté inflexible de l'action directe non-violente avec le refus total de la violence physique et de la haine personnelle. La désobéissance civile, dans cette perspective kingienne, n'est pas seulement un moyen tactique pour obtenir des concessions, mais l'expression d'un engagement éthique profond envers la dignité humaine<ref>Livingston, Alexander G., « Martin Luther King Jr.'s Late Theory of Civil Disobedience », ''The Journal of Politics'', vol. 82, no 2, 2020, p. 704-706</ref>.
=== Hannah Arendt et la dimension collective de la désobéissance ===
Hannah Arendt propose dans son essai « On Civil Disobedience » (1970) une analyse qui effectue une rupture consciente avec l'individualisme de Thoreau et offre une perspective fondamentalement nouvelle et collective<ref>Hannah Arendt, « Civil Disobedience », dans ''Crises of the Republic'', New York, Harcourt Brace, 1970</ref>. Pour Arendt, la désobéissance civile ne procède pas de la conscience individuelle, mais constitue essentiellement un phénomène collectif, public et politique. Elle critique explicitement la conception thoreauvienne qui fonde la désobéissance sur la conscience personnelle : la conscience, selon Arendt, relève du domaine intérieur de la conscience privée et reste, en tant que telle, apolitique<ref>Arendt, « Civil Disobedience », p. 49</ref>.
La désobéissance civile authentique procède non de la conviction de conscience privée, mais d'opinions partagées publiquement et débattues au sein de groupes organisés et de minorités politiques. Arendt distingue clairement la désobéissance civile des actions criminelles ordinaires : tandis que le criminel agit habituellement dans l'ombre, en dissimulant son action, et que ses motivations sont généralement égoïstes et privées, le désobéissant civil agit publiquement et ouvertement, au nom de principes moraux qu'il partage explicitement avec d'autres citoyens, et en vue du bien commun<ref>Arendt, « Civil Disobedience », p. 50-51</ref>.
La désobéissance civile remplit selon Arendt une fonction politique essentielle et même constitutive dans les démocraties modernes : elle constitue un contre-pouvoir effectif face aux défaillances et dérives du système représentatif et du système judiciaire. Elle envisage même la possibilité philosophique d'institutionnaliser partiellement la désobéissance civile à travers des « groupes de pression » organisés qui permettraient aux minorités politiques de faire effectivement entendre leur voix<ref>Arendt, « Civil Disobedience », p. 102-103</ref>.
== Perspectives non-occidentales ==
=== La pensée confucéenne : Mencius et le mandat du ciel ===
Dans la tradition confucéenne classique, la question de la désobéissance se formule en termes distincts de ceux de la philosophie politique occidentale. Mencius (IVe siècle av. J.-C.), principal développeur de la pensée confucéenne, articule l'idée que le souverain qui gouverne de manière tyranniquement injuste perd le « mandat du ciel » (''tianming'')<ref>Mencius, trad. D.C. Lau, Penguin Classics, 1970, Livre I, Part A, sections 7-8</ref>. Il affirme explicitement que les tyrans anciens comme l'empereur Jie et le roi Zhou méritaient légitimement d'être destitués et renversés car, par leur maltraitance systématique du peuple, ils avaient effectivement cessé d'être de véritables souverains légitimes<ref>Mencius, Livre II, Part B, sections 8-9</ref>.
Cette conception confucéenne diffère fondamentalement du droit occidental de résistance : elle s'inscrit dans une vision hiérarchique et cosmique de l'ordre social où la légitimité procède de l'accord harmoniex entre le Ciel, le souverain et le peuple. Là où la théorie occidentale moderne insiste sur les droits individuels et le contrat social, la théorie confucéenne insiste sur les devoirs éthiques et l'harmonie cosmique. Le confucianisme met fortement l'accent sur le devoir de remontrance loyale (''jian'') : les conseillers, ministres et fonctionnaires ont l'obligation morale absolue d'avertir le souverain de ses erreurs et écarts éthiques, même au péril de leur propre vie<ref>Political Authority and Resistance to Injustice: A Confucian Perspective, article académique, 2022, p. 8-12</ref>. Cette tradition d'une critique loyale et courageuse reconnaît une forme de désobéissance au nom de principes éthiques transcendants, tout en maintenant le cadre général du respect des hiérarchies et de la piété filiale.
=== La tradition juridique et politique islamique ===
Dans la pensée politique islamique classique et contemporaine, la question de l'obéissance au gouvernant s'énonce selon le principe fondamental quranique : « Pas d'obéissance à une créature dans la désobéissance au Créateur »<ref>Formule rapportée dans les recueils de hadith ''Sahih Bukhari'' et ''Sunan ibn Majah'', trad. M.M. Khan et B.A. Siddiqi, Islamic University of Madinah</ref>. Les juristes musulmans (''fuqaha'') des différentes écoles juridiques (''madhabs'') ont développé une doctrine complexe et sophistiquée concernant les droits et obligations envers les gouvernants injustes.
Le consensus majoritaire parmi les juristes stipule que les musulmans doivent obéir aux dirigeants musulmans (''wali'') même s'ils commettent des péchés personnels, tant qu'ils ne manifestent pas de mécréance flagrante (''kufr ash-sharih'') ou n'ordonnent pas explicitement de violer les commandements divins essentiels (''haram sharih'')<ref>al-Mawardi, ''Al-Ahkam as-Sultaniyyah'' (Les lois du gouvernement), trad. anglaise par Wafaa H. Wahba, Garnet Publishing, 1996, p. 12-45</ref>. Cette position conservatrice s'explique historiquement par la crainte que la rébellion contre le pouvoir établi n'engendre davantage de mal que de bien, provoquant des guerres civiles (''fitna'') et une effusion de sang massifs<ref>Ibn Qayyim al-Jawziyyah, ''I'lam al-Muwaqqi'in 'an Rabb al-'Alamin'' (Les informations du Juriste inspiré par le Seigneur du Monde), édition Dar al-Jil, 1973</ref>.
Cependant, les musulmans conservent le devoir moral absolu de désobéir à tout ordre explicite qui contreviendrait directement à la loi divine (''sharia'') ou commanderait un péché grave. La désobéissance civile légitime se limite ainsi aux situations où l'autorité gouvernementale commande explicitement de commettre un péché ou un acte illicite (''haram''), auquel cas chaque musulman doit refuser publiquement.
== Enjeux philosophiques contemporains ==
=== Rawls et les critères de la désobéissance civile justifiée ===
La théorie philosophique contemporaine s'efforce de définir avec précision les critères permettant de distinguer la désobéissance civile moralement justifiée de la simple criminalité ordinaire ou du nihilisme anarchique. John Rawls, dans sa ''Théorie de la justice'' (1971), propose une conception que certains penseurs jugent restrictive ou insuffisamment sensible aux contextes d'oppression systémique<ref>Rawls, John, ''A Theory of Justice'', Cambridge, Harvard University Press, 1971, sections 55-59, révisé 1999</ref>.
Selon Rawls, la désobéissance civile se justifie moralement uniquement dans les sociétés « presque justes » (''nearly just societies'') face à des violations manifestes et persistantes des principes fondamentaux de justice, et seulement après épuisement complet et démonstratif des voies légales normales<ref>Rawls, ''Théorie de la justice'', trad. C. Audard, Paris, Seuil, 1987, sections 55-59</ref>. Elle doit rester strictement non-violente, publique et transparente, et manifester un respect général et sincère pour le système légal. Rawls définit la désobéissance civile comme « un acte public, non-violent et conscientieux de rupture avec la loi, entrepris dans le but d'amener un changement dans les lois ou dans la politique gouvernementale »<ref>Rawls, ''Political Liberalism'', New York, Columbia University Press, 1993, p. 336</ref>.
D'autres penseurs contemporains contestent ces restrictions rawlsiennes comme trop étroites. Ils soulignent que les conditions posées par Rawls risquent d'exclure ou de délégitimer les formes de désobéissance justifiées dans les contextes d'oppression systémique prolongée où les voies légales sont délibérément obstruées par les dominants. La question de la légitimité morale de formes plus « inciviles » de désobéissance (destruction sélective de propriété publique, perturbation économique coordonnée, occupation de terres, etc.) reste un objet de débat vif et philosophiquement sérieux dans la littérature académique contemporaine<ref>Brownlee, Kimberley, ''Conscience and Conviction: The Case for Civil Disobedience'', Oxford, Oxford University Press, 2012, ch. 1-2</ref>.
=== Désobéissance et légitimité démocratique ===
Un problème philosophique central concerne la relation profonde entre désobéissance civile et légitimité démocratique. Comment justifier moralement la désobéissance dans un régime démocratique où les citoyens disposent déjà théoriquement de moyens légaux pour contester les lois (vote démocratique, manifestations autorisées, recours juridiques, pétitions)? Plusieurs réponses philosophiquement articulées s'offrent.
D'une part, les limites structurelles du système représentatif et électoral : les minorités politiques stables (sur la base de la race, du genre, de la religion, ou de la classe) risquent d'être systématiquement ignorées ou marginalisées par la règle majoritaire, particulièrement lorsqu'elles constituent des « minorités discrètes » sans pouvoir de marchandage politique<ref>Delmas, Candice, ''A Duty to Resist: When Disobedience Should Be Uncivil'', Oxford, Oxford University Press, 2018, p. 45-78</ref>. D'autre part, la lenteur intrinsèque des processus démocratiques, législatifs et judiciaires face à l'urgence existentielle de certaines injustices graves (discrimination raciale systémique, crise écologique) rend la désobéissance éthiquement requise plutôt que simplement permise.
La désobéissance civile peut aussi enrichir et approfondir la démocratie substantive en constituant une forme élargie de participation citoyenne, un moyen pour les citoyens ordinaires d'exercer un pouvoir de contestation effectif au-delà des canaux institutionnels habituels limités. Dans cette perspective, elle ne mine pas le système démocratique mais le complète en maintenant vivante la possibilité d'une critique fondamentale des institutions établies<ref>Arendt, ''Crises of the Republic'', 1970, p. 100-110</ref>.
=== Désobéissance épistémique et justice cognitive ===
Récemment, certains philosophes ont considérablement étendu le concept de désobéissance au domaine épistémique et cognitif. Le penseur décolonial Walter D. Mignolo parle de « désobéissance épistémique » pour désigner le refus conscient et structuré de se conformer aux systèmes de production et de validation de la connaissance dominants, notamment ceux hérités de la modernité coloniale occidentale<ref>Mignolo, Walter D., ''The Darker Side of Western Modernity: Global Futures, Decolonial Options'', Durham, Duke University Press, 2011, p. 75-102</ref>. Cette forme de désobéissance ne concerne pas directement les lois politiques ou civiles mais les cadres intellectuels profonds, les régimes de vérité, et les hiérarchies épistémiques qui structurent notre compréhension même du monde.
La désobéissance épistémique vise à décoloniser la pensée philosophique, scientifique et politique, et à revendiquer la légitimité épistémique et la dignité intellectuelle de savoirs marginalisés, occultés ou systématiquement disqualifiés par la domination épistémique occidentale<ref>Lugones, María, « Toward a Decolonial Feminism », ''Hypatia'', vol. 25, no 4, 2010, p. 742-759</ref>. C'est une forme de résistance qui opère sur le plan de la production de vérité et de sens.
== Conclusion ==
La désobéissance, loin d'être un simple refus négatif de l'autorité ou un manquement passif à l'ordre établi, se révèle être un concept philosophique profondément complexe qui engage des questions centrales sur la nature de l'autorité politique, les sources de sa légitimité, et les limites morales du pouvoir. De la figure tragique d'Antigone aux mouvements contemporains de justice climatique et de justice raciale, la pensée de la désobéissance traverse l'histoire de la philosophie politique comme une interrogation permanente sur les conditions auxquelles une autorité peut légitimement commander et les conditions auxquelles les citoyens et les peuples peuvent justifier leur refus.
La diversité des traditions philosophiques occidentales et non-occidentales montre clairement qu'il n'existe pas de réponse univoque, définitive ou universelle à la question de savoir quand précisément la désobéissance est justifiée. Néanmoins, plusieurs exigences morales reviennent constamment à travers ces traditions diverses : l'appel à des principes éthiques qui transcendent et surpassent les lois positives ordinaires; la dimension publique, collective et communicative de l'acte de désobéissance; et la nécessité philosophique de maintenir un lien, même tendu et critique, avec la communauté politique dont on conteste légitimement certaines décisions. La désobéissance civile, dans ses formes les plus élaborées et éthiquement réfléchies, ne vise pas à détruire ou à nier l'ordre juridique mais plutôt à le transformer de manière fondamentale, en rappelant constamment que toute autorité, tout pouvoir, doit ultimement se justifier devant l'exigence incontournable de justice, d'égale dignité humaine et de reconnaissance mutuelle.
== Notes et références ==
{{references|colonnes=2}}
== Bibliographie ==
* Arendt, Hannah, « Civil Disobedience », dans ''Crises of the Republic'', New York, Harcourt Brace, 1970
* Aristote, ''Éthique à Nicomaque'', Livre V, trad. J. Tricot, Paris, Vrin, 1990
* al-Mawardi, ''Al-Ahkam as-Sultaniyyah'' (Les lois du gouvernement), trad. anglaise par Wafaa H. Wahba, Garnet Publishing, 1996
* Brownlee, Kimberley, ''Conscience and Conviction: The Case for Civil Disobedience'', Oxford, Oxford University Press, 2012
* Cicéron, ''De officiis'', Livre I, 4, trad. M. Testard, Paris, Les Belles Lettres, 1965
* Déclaration des droits de l'homme et du citoyen, 26 août 1789, article 2
* Delmas, Candice, ''A Duty to Resist: When Disobedience Should Be Uncivil'', Oxford, Oxford University Press, 2018
* Gandhi, Mohandas K., ''The Essential Gandhi: His Life, Work, and Ideas'', trad. Louis Fischer, New York, Vintage, 2002
* Ibn Qayyim al-Jawziyyah, ''I'lam al-Muwaqqi'in 'an Rabb al-'Alamin'' (Les informations du Juriste inspiré par le Seigneur du Monde), édition Dar al-Jil, 1973
* King, Martin Luther Jr., « Letter from a Birmingham Jail », avril 1963, publié dans ''Why We Can't Wait'', New York, Harper & Row, 1964
* Livingston, Alexander G., « Martin Luther King Jr.'s Late Theory of Civil Disobedience », ''The Journal of Politics'', vol. 82, no 2, 2020, p. 704-706
* Locke, John, ''Two Treatises of Government'', Cambridge University Press, 1988 (édition critique de P. Laslett), Second Treatise
* Lugones, María, « Toward a Decolonial Feminism », ''Hypatia'', vol. 25, no 4, 2010, p. 742-759
* Mencius, trad. D.C. Lau, Penguin Classics, 1970
* Mignolo, Walter D., ''The Darker Side of Western Modernity: Global Futures, Decolonial Options'', Durham, Duke University Press, 2011
* Platon, ''Apologie de Socrate'' et ''Criton'', trad. L. Brisson, Paris, Flammarion, 1997
* Rawls, John, ''A Theory of Justice'', Cambridge, Harvard University Press, 1971 (révisé 1999)
* Rawls, John, ''Political Liberalism'', New York, Columbia University Press, 1993
* Rousseau, Jean-Jacques, ''Du contrat social'', Paris, Flammarion, 2001
* Sharp, Gene, ''The Politics of Nonviolent Action'', Boston, Porter Sargent, 1973, vol. 1
* Sophocle, ''Antigone'', trad. P. Mazon, Paris, Les Belles Lettres, 1958
* Thomas d'Aquin, ''Somme théologique'', I-II, Questions 90-97, trad. Éditions de la Revue des Jeunes, Paris, 1925
* Thoreau, Henry David, « Resistance to Civil Government », ''Aesthetic Papers'', 1849, republié sous le titre « Civil Disobedience »
{{Autocat}}
bndtnmpdk4drt8b6my5anwedy6l3lws
Dictionnaire de philosophie/Diallèle
0
83205
768384
754723
2026-06-23T03:57:35Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768384
wikitext
text/x-wiki
{{DicoPhilo|Diallèle|lecture=oui}}
Le diallèle (du grec ancien διάλληλος, ''diallêlos'', « qui se remplace mutuellement, réciproque ») désigne une forme de raisonnement circulaire dans laquelle la justification d'une proposition dépend d'une seconde proposition, laquelle requiert à son tour la première pour sa propre justification. Ce type d'argumentation, identifié dès l'Antiquité par les philosophes sceptiques, soulève des questions épistémologiques qui demeurent au cœur des débats philosophiques contemporains sur la nature et les limites de la connaissance humaine.
Le diallèle appartient à une famille d'arguments sceptiques visant à montrer l'impossibilité d'établir un fondement certain pour nos connaissances. Lorsqu'on cherche à justifier une croyance, on se trouve confronté à un ensemble restreint de possibilités, dont aucune ne semble pleinement satisfaisante. Le raisonnement circulaire constitue l'une de ces impasses : si la justification de A dépend de B, et celle de B dépend de A, alors ni A ni B ne peuvent être considérés comme véritablement justifiés de manière indépendante. Cette structure argumentative met en lumière une difficulté profonde : comment briser le cercle sans faire appel à des prémisses arbitraires ou à une régression infinie ?
== Origines et développement historique ==
=== Le scepticisme pyrrhonien et les modes d'Agrippa ===
Le diallèle trouve sa formulation la plus systématique dans le scepticisme pyrrhonien, courant philosophique de l'Antiquité grecque qui prône la suspension du jugement (epochê) face à l'impossibilité de parvenir à une connaissance certaine. Le philosophe sceptique Agrippa, qui vécut vraisemblablement au {{Ier}} siècle de notre ère, propose une classification des arguments sceptiques en cinq modes (ou tropes), rapportés notamment par Sextus Empiricus dans ses ''Esquisses pyrrhoniennes''<ref>Sextus Empiricus, ''Esquisses pyrrhoniennes'', I, 164-179, trad. fr. Pierre Pellegrin, Paris, Seuil, 1997.</ref> et par Diogène Laërce dans ses ''Vies et doctrines des philosophes illustres''<ref>Diogène Laërce, ''Vies et doctrines des philosophes illustres'', IX, 88-89.</ref>.
Ces cinq modes d'Agrippa constituent un système argumentatif remarquablement cohérent. Le premier mode, celui du désaccord (diaphônia), constate l'existence de conflits d'opinions irréconciliables entre les philosophes comme entre les hommes ordinaires sur pratiquement toute question. Face à cette diversité de points de vue également défendables en apparence, comment déterminer lequel correspond à la vérité ? Le deuxième mode, celui de la régression à l'infini (eis apeiron ekballonta), observe que toute tentative de justification d'une proposition requiert une autre justification, laquelle en requiert une autre, et ainsi de suite sans fin possible. Le troisième mode, celui de la relativité (pros ti), souligne que nos jugements dépendent toujours du sujet qui juge et des circonstances dans lesquelles il se trouve, empêchant toute saisie de la réalité en elle-même. Le quatrième mode, celui de l'hypothèse (hypothesis), critique ceux qui, pour échapper à la régression infinie, posent des principes premiers sans les justifier, procédant ainsi de manière arbitraire et dogmatique.
Le cinquième mode, enfin, est précisément celui du diallèle ou du raisonnement circulaire (ton diallêlon). Sextus Empiricus le décrit ainsi : « Le mode du diallèle se présente quand ce qui devrait confirmer l'objet de la recherche a besoin d'être confirmé par cet objet même »<ref>Sextus Empiricus, ''Esquisses pyrrhoniennes'', I, 169.</ref>. En d'autres termes, on tombe dans le diallèle lorsqu'on prétend prouver A par B tout en ayant besoin de A pour établir B. Cette circularité vicieuse prive l'argumentation de toute force démonstrative authentique.
L'intérêt de ces cinq modes ne réside pas seulement dans leur capacité individuelle à susciter le doute. Ils forment un système interconnecté qui prend au piège toute tentative de justification. Comme l'explique Victor Brochard, « il y a entre eux une sorte d'enchaînement logique et ils correspondent à peu près aux diverses positions que les dogmatistes pouvaient occuper, et dont ils étaient successivement délogés »<ref>Victor Brochard, ''Les Sceptiques grecs'', Paris, Vrin, 1923, p. 285.</ref>. Si l'on cherche à échapper au mode du désaccord en proposant une justification, on tombe dans celui de la régression à l'infini. Pour éviter cette dernière, on peut soit poser des hypothèses arbitraires (quatrième mode), soit recourir à un raisonnement circulaire (cinquième mode). Tous les chemins mènent donc à la suspension du jugement.
=== Le problème cartésien du cercle ===
Si le diallèle trouve ses racines dans le scepticisme antique, il réapparaît de manière centrale dans la philosophie moderne avec René Descartes. Dans ses ''Méditations métaphysiques'' (1641), Descartes cherche à établir un fondement absolument certain pour la connaissance. Après avoir soumis toutes ses croyances au doute méthodique, il parvient à la certitude du cogito : « Je pense, donc je suis ». Mais qu'est-ce qui garantit la vérité de cette intuition ? Descartes répond que c'est sa clarté et sa distinction. Il formule alors un principe général : tout ce que je perçois clairement et distinctement est vrai.
Toutefois, ce principe lui-même nécessite une garantie. Comment être certain que la clarté et la distinction d'une idée suffisent à en assurer la vérité ? Ne pourrait-il pas exister un Dieu trompeur, ou un malin génie, qui nous induirait en erreur même dans nos perceptions les plus évidentes ? Pour écarter cette hypothèse, Descartes entreprend de prouver l'existence d'un Dieu vérace, incapable de nous tromper. Or, cette démonstration de l'existence de Dieu repose elle-même sur des arguments que Descartes considère comme clairs et distincts. Le cercle semble se refermer : on ne peut être certain que les perceptions claires et distinctes sont vraies qu'après avoir établi l'existence d'un Dieu vérace, mais on ne peut établir cette existence qu'en s'appuyant sur des perceptions claires et distinctes.
Ce que l'on appelle le « cercle cartésien » a été immédiatement relevé par les contemporains de Descartes, notamment par Antoine Arnauld dans les ''Quatrièmes objections'' aux ''Méditations''<ref>Antoine Arnauld, ''Quatrièmes objections'', in René Descartes, ''Méditations métaphysiques'', Paris, Garnier-Flammarion, 1979, p. 203.</ref>. La structure de l'argument peut être formalisée ainsi :
(1) Je peux être certain que tout ce que je perçois clairement et distinctement est vrai seulement si je suis d'abord certain qu'un Dieu vérace existe.
(2) Je peux être certain qu'un Dieu vérace existe seulement si je suis d'abord certain que tout ce que je perçois clairement et distinctement est vrai.
Ces deux propositions, si elles sont toutes deux vraies, rendent impossible toute certitude, puisque chacune dépend de l'autre. Thomas Reid utilisera plus tard une comparaison frappante : si l'honnêteté d'un homme est mise en doute, il serait absurde de lui demander d'en témoigner lui-même. De la même manière, on ne saurait utiliser nos facultés cognitives pour garantir leur propre fiabilité sans tomber dans une circularité problématique<ref>Thomas Reid, ''Essays on the Intellectual Powers of Man'', Edinburgh, 1785, Essay VI, ch. 5.</ref>.
La question de savoir si Descartes est véritablement tombé dans ce cercle vicieux, ou s'il existe dans sa philosophie les ressources pour l'éviter, a fait l'objet d'interprétations divergentes. Certains commentateurs soutiennent que Descartes distingue différents types de certitude, ou que la mémoire joue un rôle crucial dans l'argumentation, permettant d'échapper à la circularité. Quoi qu'il en soit, le cercle cartésien demeure un exemple paradigmatique des difficultés que rencontre toute entreprise de fondation de la connaissance.
== Le trilemme d'Agrippa et ses implications ==
=== Structure du trilemme ===
Le diallèle ne constitue pas un problème isolé, mais s'inscrit dans une structure argumentative plus large, souvent désignée sous le nom de « trilemme d'Agrippa » ou « trilemme de Münchhausen ». Cette dernière appellation fait référence au Baron de Münchhausen, personnage légendaire qui prétendait s'être sorti d'un marais en se tirant lui-même par les cheveux. Le trilemme expose les trois seules issues possibles face à la demande de justification de nos croyances, chacune présentant des difficultés insurmontables.
Lorsqu'on affirme une proposition P et qu'on nous demande de la justifier, nous devons faire appel à une autre proposition Q. Mais Q elle-même demande justification, ce qui nous conduit à une proposition R, et ainsi de suite. Face à cette chaîne de justifications, trois possibilités s'offrent à nous :
(1) L'arrêt dogmatique : À un moment donné, nous décidons d'arrêter la chaîne de justifications en posant certaines propositions comme ne nécessitant aucune justification supplémentaire. Ces propositions deviennent alors des fondements de notre système de croyances. Cette stratégie correspond au quatrième mode d'Agrippa, celui de l'hypothèse. Le problème est qu'elle semble arbitraire : pourquoi ces propositions particulières auraient-elles le privilège de ne pas requérir de justification ? En l'absence de critère permettant d'identifier ces fondements, cette option paraît dogmatique.
(2) La régression à l'infini : Plutôt que d'arrêter arbitrairement la chaîne de justifications, on pourrait la poursuivre indéfiniment. Chaque proposition serait justifiée par une autre, elle-même justifiée par une autre, et ainsi de suite sans fin. Cette solution correspond au deuxième mode d'Agrippa. Toutefois, elle semble également insatisfaisante : une chaîne infinie de justifications ne justifie rien du tout. Si nous ne parvenons jamais à un point d'arrêt, la justification demeure toujours en suspens. De plus, du point de vue psychologique, il est peu plausible qu'un être humain puisse posséder une infinité de croyances distinctes.
(3) La circularité : La troisième option consiste à revenir, à un moment donné de la chaîne de justifications, à une proposition déjà utilisée. La série de justifications forme alors une boucle : A est justifié par B, B par C, C par D, et D par A (ou par B, formant un cercle plus court). Il s'agit là du diallèle au sens strict, le cinquième mode d'Agrippa. Cette solution est généralement considérée comme la plus problématique, car elle ne fait que reporter la question initiale sans véritablement y répondre. Si A nécessite une justification indépendante, comment pourrait-il servir à sa propre justification, même indirectement ?
Le trilemme d'Agrippa pose ainsi un défi redoutable à toute entreprise épistémologique. Chacune des trois branches semble inacceptable, et pourtant elles semblent épuiser les possibilités logiques. Les philosophes ont cherché à montrer soit que l'une de ces branches est en réalité moins problématique qu'il n'y paraît, soit qu'il existe d'autres options non envisagées par le trilemme, soit encore que le trilemme repose sur des présupposés erronés.
=== Le problème du critère ===
Une formulation classique du diallèle apparaît dans ce que Roderick Chisholm appelle le « problème du critère », question ancienne remontant au scepticisme grec mais qui demeure d'une actualité brûlante en épistémologie contemporaine<ref>Roderick Chisholm, ''The Problem of the Criterion'', Milwaukee, Marquette University Press, 1973.</ref>. Le problème peut être formulé à partir de deux questions apparemment simples :
(A) Que savons-nous ? Quelle est l'étendue de notre connaissance ?
(B) Comment devons-nous décider si nous savons quelque chose ? Quels sont les critères de la connaissance ?
Ces deux questions semblent s'impliquer mutuellement de manière circulaire. Pour répondre à la question A et identifier les instances particulières de connaissance, il semblerait nécessaire de disposer d'abord d'un critère général permettant de distinguer la connaissance de la simple croyance vraie ou de l'opinion. Autrement dit, pour savoir ce que nous savons, nous devons d'abord répondre à B. Mais inversement, pour établir un critère de la connaissance qui soit fiable, ne faut-il pas déjà disposer de quelques cas clairs de connaissance ? Comment pourrions-nous déterminer qu'un critère est adéquat sans être en mesure de vérifier qu'il sélectionne bien ce qui est effectivement de la connaissance ? Pour répondre à B, il semblerait donc nécessaire de répondre d'abord à A.
Nous voilà pris dans un cercle : pour identifier les instances de connaissance, nous avons besoin d'un critère, mais pour établir le bon critère, nous avons besoin d'identifier préalablement des instances de connaissance. Cette situation correspond exactement à la structure du diallèle décrite par les sceptiques anciens.
Face à ce problème, Chisholm distingue trois types de réponses philosophiques. Le sceptique considère que, puisque les questions A et B se présupposent mutuellement et qu'on ne peut répondre à l'une sans avoir d'abord répondu à l'autre, on ne peut répondre à aucune des deux. Nous ne pouvons ni identifier les instances de connaissance ni établir de critère fiable. Le sceptique embrasse donc le diallèle comme une raison de suspendre tout jugement sur la connaissance.
Le méthodiste affirme qu'il faut d'abord répondre à la question B avant de pouvoir aborder la question A. Selon cette approche, on commence par établir un critère ou une méthode pour distinguer la connaissance de la non-connaissance, puis on applique ce critère pour identifier les instances particulières de connaissance. Chisholm associe cette stratégie à l'empirisme de John Locke et de David Hume. Le problème du méthodisme, selon Chisholm, est qu'il ne parvient pas à justifier son point de départ. Comment le méthodiste établit-il son critère initial ? S'il ne le justifie pas, il tombe dans l'arrêt dogmatique (la première branche du trilemme). S'il cherche à le justifier en montrant qu'il sélectionne bien les bonnes instances de connaissance, il présuppose alors déjà une réponse à la question A, ce qui est circulaire.
Le particulariste, position défendue par Chisholm lui-même, adopte la stratégie inverse : il commence par répondre à la question A avant d'aborder la question B. Le particulariste affirme que nous savons, préalablement à toute théorie philosophique, un grand nombre de choses particulières. Par exemple, nous savons que nous avons des mains, que nous étions vivants hier, que d'autres personnes pensent et ressentent, et ainsi de suite. À partir de ces exemples clairs de connaissance, nous pouvons ensuite formuler inductivement un critère général. Chisholm inscrit cette approche dans la lignée de Thomas Reid et de George Edward Moore<ref>G. E. Moore, « Proof of an External World » (1939), in ''Philosophical Papers'', London, Allen & Unwin, 1959.</ref>.
Toutefois, le particularisme n'échappe pas lui-même à l'accusation de circularité. Comment le particulariste peut-il affirmer qu'il sait ces choses particulières avant d'avoir établi un critère de la connaissance ? Ne présuppose-t-il pas ainsi une certaine conception de ce qui constitue la connaissance ? Chisholm reconnaît que le particulariste commet une pétition de principe aux yeux du sceptique, mais il soutient que cette approche demeure néanmoins la plus raisonnable des trois options.
== Réponses philosophiques au diallèle ==
=== Le fondationnalisme ===
Le fondationnalisme constitue la réponse philosophique la plus intuitive et historiquement la plus influente au problème du diallèle. Cette position épistémologique affirme que nos connaissances s'organisent selon une structure hiérarchique, certaines croyances servant de fondations à toutes les autres. Les croyances fondamentales ou « de base » possèdent une justification intrinsèque qui ne dépend d'aucune autre croyance. Toutes les autres croyances, dites « dérivées », tirent leur justification de ces fondements par le biais de chaînes inférentielles.
Le fondationnalisme classique, tel qu'on le trouve chez Descartes et dans l'empirisme traditionnel, identifie ces croyances de base à nos intuitions rationnelles évidentes (comme les vérités logiques et mathématiques) et à nos expériences sensorielles immédiates. L'idée est que certaines vérités s'imposent à l'esprit avec une telle clarté qu'elles ne requièrent aucune justification supplémentaire. De même, mes expériences perceptives présentes me semblent directement accessibles : je ne peux me tromper sur le fait que j'ai actuellement une expérience visuelle de quelque chose qui m'apparaît rouge, même si je peux me tromper sur l'existence réelle d'un objet rouge devant moi<ref>Roderick Chisholm, ''Theory of Knowledge'', Englewood Cliffs, Prentice-Hall, 1966, 2{{e}} éd. 1977, 3{{e}} éd. 1989.</ref>.
En posant l'existence de telles croyances autojustifiées, le fondationnalisme prétend échapper à la fois à la régression infinie et au diallèle. Les chaînes de justification ne se poursuivent pas indéfiniment puisqu'elles aboutissent aux croyances de base. Elles ne forment pas non plus de cercles puisque les croyances de base ne tirent leur justification d'aucune autre croyance. Le fondationnalisme correspond ainsi à la première branche du trilemme d'Agrippa, celle de l'arrêt dogmatique, mais prétend que cet arrêt n'est pas arbitraire : il est motivé par le caractère autojustifié des croyances fondamentales.
Cependant, le fondationnalisme se heurte à des objections redoutables. La première concerne la nature et l'identification des croyances de base. Comment détermine-t-on quelles croyances sont véritablement autojustifiées ? Toute tentative de justifier qu'une croyance particulière est de base semble réintroduire le problème initial : nous aurions besoin d'un critère pour identifier les croyances de base, mais ce critère lui-même nécessiterait une justification. On retombe ainsi dans le diallèle au niveau méta-épistémologique.
Une deuxième difficulté, soulevée notamment par Wilfrid Sellars dans sa critique du « mythe du donné », concerne la possibilité même de croyances qui seraient justifiées indépendamment de toute relation à d'autres croyances<ref>Wilfrid Sellars, « Empiricism and the Philosophy of Mind » (1956), in ''Science, Perception and Reality'', London, Routledge & Kegan Paul, 1963.</ref>. Pour qu'une expérience perceptive puisse justifier une croyance, ne faut-il pas déjà posséder les concepts appropriés et donc tout un arrière-plan de croyances qui donnent un sens à cette expérience ? Si tel est le cas, aucune croyance ne peut être véritablement fondamentale au sens où l'entend le fondationnalisme classique.
Une troisième objection, développée par les cohérentistes, met en cause la capacité des croyances de base à fournir un soutien épistémique suffisant à l'ensemble de nos connaissances. Les expériences sensorielles immédiates et les intuitions rationnelles évidentes constituent une base très étroite. Comment pourrions-nous, à partir de cette base restreinte, justifier l'immense diversité et la complexité de nos connaissances scientifiques, historiques, morales, et autres ? Le fossé entre les fondements et l'édifice à construire semble trop large.
Face à ces difficultés, des versions plus sophistiquées du fondationnalisme ont été développées. Le fondationnalisme modéré, défendu notamment par Roderick Chisholm, assouplit les exigences concernant les croyances de base : celles-ci ne doivent pas être absolument certaines ni totalement indépendantes de toute autre croyance, mais simplement posséder un certain degré de justification intrinsèque. Laurence BonJour, après avoir longtemps critiqué le fondationnalisme, a proposé récemment une version internalisée qui accorde une place centrale à l'appréhension consciente de nos états mentaux<ref>Laurence BonJour, « Toward a Defense of Empirical Foundationalism », in Michael DePaul (dir.), ''Resurrecting Old-Fashioned Foundationalism'', Lanham, Rowman & Littlefield, 2001.</ref>.
=== Le cohérentisme ===
Le cohérentisme constitue la principale alternative au fondationnalisme dans les débats épistémologiques contemporains. Plutôt que de chercher des croyances fondamentales qui échapperaient au besoin de justification, le cohérentisme embrasse en un sens la circularité, mais prétend qu'elle n'est pas nécessairement vicieuse. Selon cette approche, une croyance est justifiée si et seulement si elle s'insère dans un système cohérent de croyances. La justification n'est plus conçue comme une relation linéaire entre fondements et superstructure, mais comme une propriété holistique qui émerge des relations de soutien mutuel entre les éléments d'un système.
Le cohérentisme nie qu'il existe des croyances autojustifiées. Toute croyance tire sa justification de ses relations avec d'autres croyances. Cette position semble accepter la circularité que le fondationnalisme cherchait à éviter. En effet, dans un système cohérent, la croyance A peut contribuer à justifier la croyance B, qui elle-même contribue à justifier C, qui à son tour soutient A. N'est-ce pas précisément le type de raisonnement circulaire que condamnent les sceptiques ?
Les cohérentistes répondent en distinguant deux types de circularité. La circularité « locale » ou « immédiate », où A justifie directement B et B justifie directement A, est effectivement vicieuse. En revanche, la circularité « globale » ou « holistique », où A contribue à justifier B à travers un vaste réseau de relations avec de nombreuses autres croyances, n'est pas problématique. La différence réside dans la complexité et la richesse des relations de soutien. Un système cohérent n'est pas un simple cercle fermé, mais un réseau complexe de relations mutuelles d'implication, d'explication et de confirmation<ref>Laurence BonJour, ''The Structure of Empirical Knowledge'', Cambridge, Harvard University Press, 1985.</ref>.
Les principales théories cohérentistes ont été développées par des philosophes comme Otto Neurath, Carl Hempel, Wilfrid Sellars, Keith Lehrer et Laurence BonJour (dans sa période pré-fondationnaliste). Le cohérentisme présente plusieurs attraits théoriques. D'abord, il rend compte de la manière dont les scientifiques justifient leurs théories : plutôt que de se fonder sur des observations brutes « neutres », ils évaluent une théorie en fonction de sa capacité à s'intégrer dans l'ensemble de nos connaissances, à expliquer divers phénomènes, à être compatible avec d'autres théories bien établies, etc. Ensuite, le cohérentisme évite les difficultés liées à l'identification des croyances de base. Enfin, il respecte l'intuition que nos croyances forment un tout interconnecté plutôt qu'une pyramide rigide.
Cependant, le cohérentisme fait lui aussi face à des objections sérieuses. La première est le problème dit « des systèmes alternatifs ». Si la cohérence suffit pour la justification, ne pourrait-il pas exister plusieurs systèmes de croyances mutuellement incompatibles mais intérieurement cohérents ? Par exemple, un roman de science-fiction bien construit peut présenter un monde cohérent mais fictionnel. Qu'est-ce qui garantit que notre système de croyances cohérent correspond à la réalité plutôt qu'à une construction imaginaire élaborée ? Les cohérentistes répondent généralement en soulignant le rôle crucial de l'expérience perceptive dans la formation et la révision de nos croyances, mais cela semble réintroduire une forme de fondationnalisme.
Une deuxième difficulté est le problème de l'isolement. Un système peut être très cohérent tout en étant complètement déconnecté du monde réel. Le cohérentisme semble incapable de rendre compte du lien nécessaire entre justification et vérité. Une théorie purement cohérentiste de la justification risque de perdre de vue l'objectif épistémique central : croire ce qui est vrai. Cette objection a conduit certains philosophes à adopter des positions hybrides, combinant des éléments du fondationnalisme et du cohérentisme.
=== L'infinitisme ===
Face aux difficultés rencontrées par le fondationnalisme et le cohérentisme, une troisième voie a émergé dans les débats épistémologiques récents : l'infinitisme. Cette position, défendue principalement par Peter Klein, accepte la deuxième branche du trilemme d'Agrippa, celle de la régression infinie, et soutient qu'elle n'est pas aussi problématique qu'on le suppose généralement<ref>Peter Klein, « Human Knowledge and the Infinite Regress of Reasons », in James Tomberlin (dir.), ''Philosophical Perspectives'', vol. 13, 1999, p. 297-325.</ref>.
Selon l'infinitisme, une croyance est justifiée s'il existe une chaîne infinie et non répétitive de raisons la soutenant. Klein distingue entre posséder une justification et être en mesure de fournir une justification. Un sujet peut posséder une justification pour sa croyance même s'il n'est pas capable, en pratique, d'articuler l'intégralité de la chaîne infinie de raisons. L'important est que, pour toute raison proposée, il soit possible en principe de fournir une raison supplémentaire la soutenant.
L'infinitisme présente plusieurs avantages théoriques. D'abord, il évite le problème de l'identification des croyances de base qui afflige le fondationnalisme : selon l'infinitisme, il n'y a tout simplement pas de croyances de base. Ensuite, il échappe au reproche de circularité adressé au cohérentisme, puisque la chaîne de justification ne revient jamais sur elle-même. Enfin, l'infinitisme rend compte du fait que la justification semble être une affaire de degrés : plus on est capable de remonter loin dans la chaîne des raisons, plus notre croyance est justifiée.
Toutefois, l'infinitisme fait face à des objections considérables. La plus évidente concerne la plausibilité psychologique de cette position : comment un être humain, dont les capacités cognitives sont finies, pourrait-il posséder une infinité de raisons ? Klein répond en distinguant entre raisons « disponibles » et raisons « possédées », mais cette distinction soulève elle-même des questions difficiles. Une autre objection soutient qu'une chaîne infinie de raisons ne parvient jamais à justifier véritablement quoi que ce soit, chaque maillon de la chaîne restant en suspens. C'est comme essayer de suspendre un tableau à une chaîne dont aucun maillon n'est fixé au plafond : peu importe le nombre de maillons ajoutés, le tableau ne tiendra pas.
=== Le fiabilisme et l'externalisme ===
Une approche radicalement différente des problèmes posés par le diallèle consiste à remettre en question les présupposés mêmes du trilemme d'Agrippa. C'est la stratégie adoptée par les théories « externalistes » de la justification et de la connaissance, dont le fiabilisme est la version la plus influente, développée notamment par Alvin Goldman<ref>Alvin Goldman, « What Is Justified Belief? », in George Pappas (dir.), ''Justification and Knowledge'', Dordrecht, Reidel, 1979.</ref>.
Selon le fiabilisme, une croyance est justifiée si et seulement si elle est produite par un processus cognitif fiable, c'est-à-dire un processus qui conduit généralement à des croyances vraies. La justification ne dépend pas de la possession de raisons accessibles à la conscience du sujet (comme le supposent les théories « internalistes »), mais de faits objectifs concernant la fiabilité des mécanismes cognitifs impliqués. Par exemple, si ma croyance perceptive qu'il y a un arbre devant moi est produite par un système perceptif qui fonctionne normalement dans des conditions favorables, alors cette croyance est justifiée, même si je ne peux pas fournir de raisons supplémentaires pour la défendre.
Cette approche externaliste prétend dissoudre le problème du diallèle plutôt que de le résoudre. Le trilemme d'Agrippa suppose que toute justification doit prendre la forme d'une chaîne de raisons explicites, accessibles au sujet. Mais pourquoi accepter cette exigence ? Si la justification peut résider dans des faits externes concernant la fiabilité de nos processus cognitifs, alors nous n'avons besoin ni de croyances fondamentales autojustifiées, ni de cohérence circulaire, ni de chaînes infinies de raisons. La justification ne dépend pas de notre capacité à fournir des justifications supplémentaires, mais de faits objectifs sur le monde et nos mécanismes cognitifs.
Le fiabilisme et les approches externalistes ont profondément modifié le paysage de l'épistémologie contemporaine. Ils proposent une manière de concevoir la connaissance et la justification qui contourne les problèmes traditionnels du scepticisme. Cependant, ces approches soulèvent leurs propres difficultés. Une objection majeure est qu'elles semblent trop permissives : elles accorderaient le statut de connaissance ou de croyance justifiée à des cas où, intuitivement, ce statut ne semble pas mérité. Par exemple, imaginons quelqu'un qui possède des capacités de clairvoyance fiables mais qui n'a aucune raison de croire qu'il possède de telles capacités. Ses croyances clairvoyantes seraient-elles vraiment justifiées ? De nombreux épistémologues pensent que non, ce qui suggère que la fiabilité ne suffit pas pour la justification<ref>Laurence BonJour, « Externalist Theories of Empirical Knowledge », in ''The Structure of Empirical Knowledge'', Cambridge, Harvard University Press, 1985, chap. 3.</ref>.
Une autre difficulté concerne ce qu'on pourrait appeler le « problème méta-épistémique ». Même si l'externalisme peut expliquer comment nous pouvons avoir de la connaissance sans tomber dans le diallèle au niveau de la justification de premier ordre, il semble confronté à un diallèle au niveau méta-épistémique. Comment pouvons-nous savoir que nos processus cognitifs sont fiables ? Si nous utilisons ces mêmes processus pour établir leur fiabilité, ne retombons-nous pas dans une forme de circularité ? Cette question, soulevée par William Alston sous le nom de « circularité épistémique », demeure un défi central pour les théories externalistes<ref>William Alston, « Epistemic Circularity », ''Philosophy and Phenomenological Research'', vol. 47, 1986, p. 1-30.</ref>.
== Circularité vertueuse et équilibre réflexif ==
=== La distinction entre circularité vicieuse et circularité vertueuse ===
L'une des évolutions majeures dans la discussion philosophique du diallèle a été la reconnaissance que toute circularité n'est pas nécessairement vicieuse. Cette idée, présente en germe chez certains cohérentistes, a été développée de manière plus systématique par des philosophes comme Nelson Goodman et John Rawls.
Nelson Goodman, dans son analyse du problème de l'induction, propose une conception de la justification qui assume explicitement une certaine forme de circularité<ref>Nelson Goodman, ''Fait, fiction et prédiction'' [''Fact, Fiction, and Forecast''], Cambridge, Harvard University Press, 1955, chap. III.</ref>. Selon Goodman, nous justifions nos inférences inductives particulières en montrant qu'elles sont conformes aux règles d'induction que nous acceptons. Réciproquement, nous justifions ces règles en montrant qu'elles codifient et systématisent nos pratiques inductives particulières jugées légitimes. Il y a donc bien une forme de circularité : les inférences particulières sont justifiées par les règles générales, et les règles générales sont justifiées par les inférences particulières. Mais Goodman soutient que cette circularité n'est pas vicieuse. Au contraire, c'est à travers ce processus d'ajustement mutuel entre jugements particuliers et principes généraux que nous parvenons à un « équilibre réflexif ».
Cette idée d'équilibre réflexif a été reprise et développée par John Rawls dans le domaine de la philosophie morale et politique<ref>John Rawls, ''Théorie de la justice'' [''A Theory of Justice''], Cambridge, Harvard University Press, 1971, trad. fr. Paris, Seuil, 1987.</ref>. Rawls propose que nous justifions nos principes moraux en les mettant en cohérence avec nos jugements moraux particuliers bien pesés, tout en étant prêts à réviser ces jugements particuliers à la lumière des principes généraux. Le processus est itératif et bidirectionnel : nous faisons des allers-retours entre le particulier et le général jusqu'à atteindre un état d'équilibre où nos jugements particuliers et nos principes généraux se soutiennent mutuellement.
Cette méthode semble assumer une forme de circularité. Cependant, Goodman et Rawls soutiennent qu'elle n'est pas vicieuse car elle est productive : elle nous permet de clarifier, de raffiner et d'améliorer à la fois nos jugements particuliers et nos principes généraux. De plus, le cercle n'est jamais vraiment fermé, puisque le processus d'équilibre réflexif est en principe ouvert et révisable à la lumière de nouvelles considérations.
Cette distinction entre circularité vicieuse et circularité vertueuse a des implications importantes pour l'évaluation du diallèle. Elle suggère que la structure formelle d'un raisonnement circulaire ne suffit pas à le disqualifier. Il faut examiner le rôle fonctionnel que joue cette circularité. Si elle permet un progrès épistémique, une amélioration de notre compréhension, une mise en cohérence de nos engagements, alors elle peut être épistémiquement légitime, voire nécessaire.
=== Le cercle herméneutique et la tradition continentale ===
Parallèlement aux développements dans la philosophie analytique, la tradition herméneutique continentale a développé une réflexion sur la circularité qui présente des affinités avec l'idée d'équilibre réflexif. Le concept de « cercle herméneutique », élaboré notamment par Friedrich Schleiermacher, Wilhelm Dilthey et surtout Martin Heidegger et Hans-Georg Gadamer, décrit la structure circulaire de toute compréhension.
Selon Heidegger, la compréhension d'un texte ou d'une situation implique nécessairement une « précompréhension » (Vorverständnis), un ensemble d'attentes, d'anticipations et de préjugés que nous apportons avec nous. Ces présupposés guident notre lecture et notre interprétation. Mais en retour, la confrontation avec le texte ou la situation peut modifier notre précompréhension initiale. Il y a donc un mouvement circulaire : nous comprenons les parties d'un texte à la lumière de notre compréhension anticipée du tout, et nous ajustons notre compréhension du tout à la lumière de notre saisie des parties<ref>Martin Heidegger, ''Être et temps'' [''Sein und Zeit''], 1927, §32.</ref>.
Pour Heidegger et Gadamer, cette circularité n'est pas un défaut qu'il faudrait éliminer, mais une caractéristique constitutive de toute compréhension authentique. L'erreur serait de vouloir atteindre une compréhension totalement « objective », dépourvue de tout présupposé. Une telle compréhension est impossible car nous sommes toujours déjà situés dans un horizon de compréhension préalable. L'enjeu n'est pas de sortir du cercle herméneutique, mais d'y entrer de la bonne manière, en étant conscient de nos présupposés et prêt à les remettre en question<ref>Hans-Georg Gadamer, ''Vérité et méthode'' [''Wahrheit und Methode''], 1960, II, 1, § a.</ref>.
Bien que ces réflexions herméneutiques se situent dans un contexte philosophique différent de celui des débats analytiques sur la justification épistémique, elles partagent avec eux l'intuition que certaines formes de circularité sont non seulement inévitables mais aussi épistémiquement fécondes. Elles invitent à adopter une conception plus dynamique et processuelle de la justification, où le mouvement circulaire entre différents niveaux de compréhension ou de justification n'est pas un obstacle mais un moteur du progrès cognitif.
== Le diallèle dans les débats épistémologiques contemporains ==
=== Ernest Sosa et l'épistémologie des vertus ===
Ernest Sosa a proposé une approche originale du problème de la circularité dans le cadre de son « épistémologie des vertus »<ref>Ernest Sosa, ''Knowledge in Perspective: Selected Essays in Epistemology'', Cambridge, Cambridge University Press, 1991.</ref>. Sosa distingue deux niveaux de connaissance : la « connaissance animale » et la « connaissance réflexive ». La première correspond à des croyances vraies produites par des facultés cognitives fiables, sans que le sujet ait besoin d'être conscient de cette fiabilité. La seconde requiert en plus que le sujet ait une « perspective épistémique » sur ses propres croyances, c'est-à-dire qu'il comprenne comment et pourquoi ses croyances sont justifiées.
Pour Sosa, le problème de la circularité épistémique se pose essentiellement au niveau de la connaissance réflexive. Comment puis-je justifier ma croyance dans la fiabilité de mes facultés cognitives ? Si j'utilise ces mêmes facultés pour établir leur fiabilité, ne tombe-je pas dans une circularité vicieuse ? Sosa reconnaît qu'il y a effectivement circularité, mais il soutient qu'elle n'est pas nécessairement vicieuse.
Imaginons que j'utilise ma perception, ma mémoire et mon raisonnement pour établir que ces facultés sont généralement fiables. Il y a certes un cercle : j'utilise P pour établir que P est fiable. Mais Sosa argue que ce cercle n'est pas vicieux si les conditions suivantes sont satisfaites : (1) mes facultés sont effectivement fiables, (2) ma croyance en leur fiabilité est vraie et produite par ces facultés fiables, (3) cette croyance s'insère dans une perspective épistémique cohérente qui rend compte de l'ensemble de mes engagements épistémiques. Dans ces conditions, ma situation épistémique est aussi bonne qu'elle pourrait l'être. Je ne pourrais pas améliorer ma position en adoptant une autre méthode de justification, puisque toute méthode alternative serait confrontée aux mêmes problèmes de circularité ou aux autres branches du trilemme d'Agrippa.
Cette défense de la circularité épistémique par Sosa s'inspire en partie de la stratégie cartésienne. Descartes cherchait à établir la fiabilité de ses facultés cognitives en utilisant ces mêmes facultés, ce qui lui a valu l'accusation de raisonnement circulaire. Mais Sosa suggère que Descartes avait raison sur un point crucial : il n'y a pas d'autre moyen de procéder. L'exigence de justifier la fiabilité de nos facultés cognitives sans les utiliser est tout simplement impossible à satisfaire. La circularité est inévitable à ce niveau, mais elle n'est pas vicieuse dès lors que nos facultés sont effectivement fiables et que nous avons construit une perspective épistémique cohérente<ref>Ernest Sosa, « How to Resolve the Pyrrhonian Problematic: A Lesson from Descartes », ''Philosophical Studies'', vol. 85, 1997, p. 229-249.</ref>.
=== Le débat BonJour-Sosa ===
Le dialogue entre Laurence BonJour et Ernest Sosa, publié dans leur ouvrage commun ''Epistemic Justification: Internalism vs. Externalism, Foundations vs. Virtues'' (2003), illustre bien l'état actuel des débats sur le diallèle et les problèmes connexes. BonJour défend une forme de fondationnalisme internaliste, tandis que Sosa propose une épistémologie des vertus de type externaliste.
BonJour soutient que la justification épistémique doit être accessible à la réflexion consciente du sujet. Cette exigence « internaliste » l'amène à rejeter le fiabilisme et l'externalisme en général : le simple fait qu'une croyance soit produite par un processus fiable ne suffit pas à la justifier si le sujet n'a pas accès à cette fiabilité. Mais BonJour reconnaît aussi les difficultés du fondationnalisme classique et cherche à développer une version plus sophistiquée qui accorde un rôle important à la « saisie » consciente de nos états mentaux.
Sosa, de son côté, critique l'exigence internaliste de BonJour comme trop restrictive et potentiellement sujette à une régression infinie. Si toute justification doit être accessible à la conscience, alors la justification de cette accessibilité elle-même doit être accessible, et ainsi de suite. Sosa défend plutôt une conception externaliste où la justification peut résider dans des faits objectifs sur la fiabilité de nos processus cognitifs, même si le sujet n'y a pas un accès réflexif complet. Cependant, Sosa reconnaît aussi la valeur de la perspective réflexive et distingue, comme on l'a vu, entre connaissance animale et connaissance réflexive.
Ce débat illustre la manière dont les questions liées au diallèle continuent de structurer l'épistémologie contemporaine. Les différentes positions philosophiques peuvent être comprises comme des stratégies distinctes pour naviguer entre les écueils du trilemme d'Agrippa, chacune avec ses forces et ses faiblesses.
== Perspectives non-occidentales ==
=== Le tétralemme dans la philosophie bouddhiste ===
Bien que le problème du diallèle soit typiquement associé à la tradition philosophique occidentale issue du scepticisme grec, on trouve dans d'autres traditions philosophiques des réflexions sur la circularité et la structure de l'argumentation qui présentent des affinités intéressantes. C'est notamment le cas de la philosophie bouddhiste indienne et de son usage du « tétralemme » (en sanskrit : catuṣkoṭi).
Le tétralemme est une structure argumentative qui envisage quatre possibilités logiques pour toute proposition P : (1) P est vrai, (2) P est faux, (3) P est à la fois vrai et faux, (4) P n'est ni vrai ni faux. Cette structure quadripartite, qui semble violer les principes logiques classiques de non-contradiction et du tiers exclu, a été utilisée de manière extensive par le philosophe bouddhiste Nāgārjuna (II{{e}}-III{{e}} siècle de notre ère) dans sa critique des positions métaphysiques substantialistes<ref>Nāgārjuna, ''Mūlamadhyamakakārikā'' (''Stances fondamentales de la voie du milieu''), notamment le chapitre XVIII.</ref>.
L'usage que fait Nāgārjuna du tétralemme présente des parallèles instructifs avec la dialectique sceptique grecque. Comme les sceptiques pyrrhoniens, Nāgārjuna cherche à démontrer l'impossibilité d'établir des thèses métaphysiques sur la nature ultime de la réalité. Il procède par réfutation systématique des positions adverses, montrant que chacune des quatre branches du tétralemme conduit à des difficultés insolubles. Cette méthode vise à produire la cessation des constructions conceptuelles (prapañca) et à conduire à la réalisation de la « vacuité » (śūnyatā), non pas comme une doctrine positive mais comme l'absence de toute vue substantialiste.
Dans le contexte du problème du diallèle, il est particulièrement intéressant de noter que Nāgārjuna applique sa dialectique tétralemmatique à la question de la justification des moyens de connaissance (pramāṇa). Dans le ''Vigrahavyāvartanī'' (''Réfutation des objections''), il examine comment on pourrait établir la validité des moyens de connaissance. Si l'on prétend établir cette validité par les moyens de connaissance eux-mêmes, on tombe dans une circularité. Si l'on fait appel à d'autres moyens de connaissance, on entre dans une régression infinie. Si l'on pose leur validité sans justification, on commet un arrêt dogmatique. Nāgārjuna conclut que les moyens de connaissance ne peuvent être établis de manière ultime, ce qui correspond étroitement au trilemme d'Agrippa<ref>Nāgārjuna, ''Vigrahavyāvartanī'', stances 30-51.</ref>.
Cependant, la conclusion que tire Nāgārjuna de cette analyse diffère de celle des sceptiques pyrrhoniens. Plutôt que de recommander simplement la suspension du jugement, Nāgārjuna développe une distinction entre deux niveaux de vérité : la vérité conventionnelle (saṃvṛti-satya) et la vérité ultime (paramārtha-satya). Au niveau conventionnel, les moyens de connaissance et les pratiques épistémiques ordinaires conservent leur validité pragmatique. C'est seulement au niveau ultime, métaphysique, que leur fondement est inatteignable. Cette stratégie à deux niveaux permet à Nāgārjuna d'éviter le reproche d'auto-réfutation : sa propre argumentation philosophique opère au niveau conventionnel et n'a pas besoin de revendiquer une validité ultime absolue.
=== La logique indienne et le problème de la circularité ===
Au-delà du bouddhisme Madhyamaka de Nāgārjuna, d'autres écoles de philosophie indienne ont développé des analyses sophistiquées de la structure de l'argumentation et de la justification. L'école du Nyāya, en particulier, a élaboré une théorie complexe de l'inférence (anumāna) et des moyens de connaissance valides.
Un débat important dans la tradition du Nyāya concerne la question de savoir si les moyens de connaissance (pramāṇa) sont intrinsèquement valides (svataḥprāmāṇya, position défendue par l'école Mīmāṃsā) ou s'ils requièrent une validation externe (parataḥprāmāṇya, position du Nyāya). Cette discussion présente des parallèles évidents avec le débat occidental entre fondationnalisme et cohérentisme. La position Mīmāṃsā, selon laquelle la connaissance est valide par défaut à moins qu'il n'y ait des raisons spécifiques de la remettre en question, ressemble au fondationnalisme modéré. La position Nyāya, qui insiste sur la nécessité d'une validation par d'autres cognitions, se rapproche davantage du cohérentisme.
Le philosophe Gaṅgeśa Upādhyāya (XIV{{e}} siècle), dans son œuvre majeure ''Tattvacintāmaṇi'', examine en détail les problèmes de circularité dans la justification épistémique. Il distingue différents types de circularité (ātmāśraya, circularité de dépendance mutuelle ; anyonyāśraya, circularité réciproque ; cakraka, cercle rotatif) et analyse sous quelles conditions elles sont vicieuses. Cette typologie raffinée rappelle les distinctions contemporaines entre circularité locale et globale, ou entre circularité vicieuse et vertueuse.
Ces développements dans la philosophie indienne suggèrent que les problèmes liés au diallèle et à la structure de la justification ne sont pas des artefacts d'une tradition philosophique particulière, mais plutôt des difficultés profondes qui émergent dès lors qu'on soumet la connaissance humaine à un examen critique systématique.
== Conclusion ==
Le diallèle, loin d'être une simple curiosité logique ou un piège dialectique destiné à embarrasser les dogmatiques, révèle une tension profonde au cœur de notre conception de la connaissance et de la justification. Comment pouvons-nous justifier nos croyances sans présupposer précisément ce que nous cherchons à établir ? Cette question, formulée il y a plus de deux millénaires par les sceptiques pyrrhoniens, continue de stimuler la réflexion philosophique contemporaine.
Les réponses apportées au problème du diallèle ont profondément structuré l'histoire de l'épistémologie. Le fondationnalisme a longtemps représenté la position dominante, avec sa vision hiérarchique de la connaissance reposant sur des croyances de base autojustifiées. Le cohérentisme a proposé une alternative holistique où la justification émerge des relations mutuelles de soutien entre croyances. L'infinitisme a défendu la légitimité de chaînes infinies de raisons. Les approches externalistes ont cherché à dissoudre le problème en rejetant l'exigence que toute justification prenne la forme de raisons accessibles à la conscience. Chacune de ces positions capture certaines de nos intuitions épistémiques tout en faisant face à des objections sérieuses.
Les développements récents suggèrent qu'une circularité bien comprise n'est peut-être pas toujours vicieuse. L'idée d'équilibre réflexif, le cercle herméneutique, la distinction entre connaissance animale et réflexive, l'usage pragmatique des distinctions entre niveaux de vérité : toutes ces approches tentent d'accommoder une certaine forme de circularité tout en préservant la légitimité de nos pratiques épistémiques. Elles invitent à concevoir la justification non comme une structure linéaire figée, mais comme un processus dynamique d'ajustement mutuel entre différents niveaux de notre système cognitif.
Le dialogue avec les traditions philosophiques non-occidentales, notamment la philosophie bouddhiste et indienne, enrichit notre compréhension du problème en montrant que des structures argumentatives apparemment très différentes (comme le tétralemme) peuvent aborder des difficultés similaires et proposer des solutions alternatives. Ces traditions nous rappellent aussi l'importance de distinguer entre différents niveaux de discours et de vérité, une stratégie qui peut s'avérer féconde pour naviguer entre les exigences de la pratique épistémique ordinaire et les standards élevés de la réflexion philosophique.
En définitive, le diallèle demeure un défi ouvert. Aucune des solutions proposées n'a réussi à s'imposer comme définitive. Mais l'absence de consensus ne doit pas être vue comme un échec. Au contraire, la persistance de ce problème témoigne de sa profondeur et de son importance. Les questions qu'il soulève touchent aux fondements mêmes de notre vie intellectuelle : qu'est-ce qui rend une croyance rationnelle ? Jusqu'où peut-on justifier nos prétentions à connaître ? Devons-nous accepter certaines circularités comme inévitables, ou constituent-elles toujours des défauts à éliminer ? Ces interrogations continuent d'alimenter la réflexion épistémologique et promettent de le faire encore longtemps.
== Notes et références ==
{{references}}
== Bibliographie ==
=== Sources antiques ===
* Sextus Empiricus, ''Esquisses pyrrhoniennes'', trad. fr. Pierre Pellegrin, Paris, Seuil, coll. « Points Essais », 1997.
* Diogène Laërce, ''Vies et doctrines des philosophes illustres'', trad. fr. sous la direction de Marie-Odile Goulet-Cazé, Paris, Le Livre de Poche, coll. « La Pochothèque », 1999.
=== Ouvrages modernes et contemporains ===
* Alston, William P., ''Epistemic Justification: Essays in the Theory of Knowledge'', Ithaca, Cornell University Press, 1989.
* BonJour, Laurence, ''The Structure of Empirical Knowledge'', Cambridge, Harvard University Press, 1985.
* BonJour, Laurence, ''In Defense of Pure Reason'', Cambridge, Cambridge University Press, 1998.
* BonJour, Laurence et Sosa, Ernest, ''Epistemic Justification: Internalism vs. Externalism, Foundations vs. Virtues'', Oxford, Blackwell, 2003.
* Chisholm, Roderick M., ''Theory of Knowledge'', Englewood Cliffs, Prentice-Hall, 1{{ère}} éd. 1966, 2{{e}} éd. 1977, 3{{e}} éd. 1989.
* Chisholm, Roderick M., ''The Problem of the Criterion'', Milwaukee, Marquette University Press, 1973.
* Fumerton, Richard, ''Metaepistemology and Skepticism'', Lanham, Rowman & Littlefield, 1995.
* Goldman, Alvin, ''Epistemology and Cognition'', Cambridge, Harvard University Press, 1986.
* Goodman, Nelson, ''Fait, fiction et prédiction'', Paris, Minuit, 1984 .
* Klein, Peter D., « Human Knowledge and the Infinite Regress of Reasons », in James Tomberlin (dir.), ''Philosophical Perspectives'', vol. 13 : Epistemology, 1999, p. 297-325.
* Lehrer, Keith, ''Knowledge'', Oxford, Clarendon Press, 1974.
* Rawls, John, ''Théorie de la justice'', trad. fr. Paris, Seuil, 1987 .
* Sellars, Wilfrid, « Empiricism and the Philosophy of Mind » (1956), in ''Science, Perception and Reality'', London, Routledge & Kegan Paul, 1963.
* Sosa, Ernest, ''Knowledge in Perspective: Selected Essays in Epistemology'', Cambridge, Cambridge University Press, 1991.
=== Études historiques ===
* Brochard, Victor, ''Les Sceptiques grecs'', Paris, Vrin, 1923 (rééd. 2002).
* Burnyeat, Myles (dir.), ''The Skeptical Tradition'', Berkeley, University of California Press, 1983.
* Popkin, Richard H., ''Histoire du scepticisme d'Érasme à Spinoza'', trad. fr. Paris, PUF, 1995 .
=== Philosophie bouddhiste et indienne ===
* Garfield, Jay L., ''The Fundamental Wisdom of the Middle Way: Nāgārjuna's Mūlamadhyamakakārikā'', Oxford, Oxford University Press, 1995.
* Matilal, Bimal Krishna, ''Epistemology, Logic, and Grammar in Indian Philosophical Analysis'', La Haye, Mouton, 1971.
* Westerhoff, Jan, ''Nāgārjuna's Madhyamaka: A Philosophical Introduction'', Oxford, Oxford University Press, 2009.
=== Articles ===
* Cling, Andrew D., « The Epistemic Regress Problem », ''Philosophical Studies'', vol. 140, 2008, p. 401-421.
* Frede, Michael, « Stoics and Skeptics on Clear and Distinct Impressions », in Burnyeat (dir.), 1983.
* Sosa, Ernest, « The Raft and the Pyramid: Coherence versus Foundations in the Theory of Knowledge », ''Midwest Studies in Philosophy'', vol. 5, 1980, p. 3-25.
* Sosa, Ernest, « How to Resolve the Pyrrhonian Problematic: A Lesson from Descartes », ''Philosophical Studies'', vol. 85, 1997, p. 229-249.
== Voir aussi ==
=== Articles connexes ===
* Scepticisme pyrrhonien
* Fondationnalisme
* Cohérentisme
* Épistémologie
* Régression à l'infini
* Circularité
* Pétition de principe
* Cercle herméneutique
=== Liens externes ===
* [https://plato.stanford.edu/entries/skepticism-ancient/ « Ancient Skepticism »], Stanford Encyclopedia of Philosophy
* [https://plato.stanford.edu/entries/justep-foundational/ « Foundational Theories of Epistemic Justification »], Stanford Encyclopedia of Philosophy
* [https://plato.stanford.edu/entries/justep-coherence/ « Coherentist Theories of Epistemic Justification »], Stanford Encyclopedia of Philosophy
{{autocat}}
29cksxzj4iyztfar97mukcobul3nxmf
Dictionnaire de philosophie/Différence ontologique
0
83589
768388
760059
2026-06-23T03:58:15Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768388
wikitext
text/x-wiki
{{DicoPhilo|Différence ontologique|lecture=oui}}
La notion de « différence ontologique » désigne, chez Martin Heidegger, la distinction fondamentale entre l’être (''Sein'') et les étants (''Seiendes''). Elle rappelle que, lorsque nous parlons des choses, des personnes, des nombres, des dieux, bref de « ce qui est », nous présupposons toujours déjà quelque chose de plus originaire : le fait même qu’ils ''sont'', c’est‑à‑dire leur mode d’être. Penser la différence ontologique, c’est dégager ce plan plus profond, que Heidegger nomme « l’être de l’étant », par opposition aux étants eux‑mêmes.<ref>Martin Heidegger, « Lettre sur l’humanisme », dans ''Chemins qui ne mènent nulle part'', trad. W. Brokmeier, Paris, Gallimard, 1962, p. 255‑260.</ref>
Heidegger soutient que la philosophie occidentale a presque toujours confondu l’être et l’étant, en traitant l’être comme un suprême étant (idée, substance, cause première, volonté, sujet, etc.). Cette confusion constitue pour lui l’« oubli de l’être » et explique que la différence ontologique soit restée implicite, voire méconnue, alors même qu’elle oriente silencieusement toute interrogation métaphysique.<ref>Martin Heidegger, ''Identité et différence'', trad. A. Préau, Paris, PUF, 1957, p. 47‑52.</ref> L’entrée qui suit présente d’abord la genèse de cette distinction, puis la manière dont Heidegger la formule et l’exploite, avant d’en examiner quelques prolongements contemporains.
== 1. Genèse historique de la distinction entre être et étants ==
=== 1.1. Parménide : être et non‑être ===
La différence ontologique ne naît pas avec Heidegger ; elle a une longue préhistoire. Chez Parménide, on trouve déjà une opposition tranchée entre l’être (''to eon'') et le non‑être (''to mê eon''). Le « chemin de la vérité » consiste à reconnaître que « l’être est, le non‑être n’est pas », et que seule cette voie est pensable et dicible.<ref>Parménide, ''Poème'', fr. 2, dans W. K. C. Guthrie, ''A History of Greek Philosophy, vol. II : The Presocratic Tradition from Parmenides to Democritus'', Cambridge, Cambridge University Press, 1965, p. 7‑10.</ref> Les choses sensibles, soumises à la naissance et à la mort, appartiennent au domaine de l’« opinion » (''doxa''), et non à celui de l’être véritable.
On peut déjà lire ici une tension entre, d’une part, ce qui est absolument, c’est‑à‑dire l’être immobile, un et nécessaire que le poème décrit comme parfaitement plein et semblable à une sphère bien ronde, et, d’autre part, ce qui apparaît et change, le monde sensible avec ses alternances de lumière et de nuit, de naissance et de disparition, que la déesse attribue au « chemin des mortels ». Parménide oppose ainsi un registre de l’intelligible, où seul l’être peut être pensé, et un registre du phénoménal, qui n’a pas de consistance ontologique au sens fort. Il ne parle pas encore de « différence ontologique » en un sens technique : il oppose plutôt l’être au non‑être qu’aux étants. La distinction entre être et choses existantes reste donc en quelque sorte enveloppée dans sa pensée, comme un effet secondaire de la grande opposition entre vérité et apparence.<ref>W. K. C. Guthrie, ''A History of Greek Philosophy, vol. II'', op. cit., p. 72‑76.</ref>
=== 1.2. De Platon à la métaphysique médiévale ===
Platon prolonge et complique ce schéma en distinguant plusieurs niveaux de réalité : le monde sensible (devenir, opinion), le monde des Formes (être véritable, intelligible) et, parfois, un « entre‑deux » mêlant être et non‑être pour penser, par exemple, l’image ou la copie.<ref>Platon, ''République'', VI, 508d‑509d, trad. L. Brisson, Paris, GF‑Flammarion, 2002.</ref> Dans la ''République'', la fameuse ligne divisée oppose ainsi le domaine des choses visibles, qui changent et ne sont qu’imparfaitement ce qu’elles prétendent être, au domaine des Idées, qui possèdent l’être de manière pleine et stable. Là encore, l’idée qu’il y a un écart entre ce que sont les choses et le fait qu’elles ''sont'' n’est pas thématisée comme telle : l’accent porte avant tout sur la hiérarchie des degrés de réalité plutôt que sur la différence entre être et étant.
Aristote, dans la ''Métaphysique'', formule la célèbre thèse selon laquelle il existe une « science qui considère l’étant en tant qu’étant » (''to on hê on'').<ref>Aristote, ''Métaphysique'', Γ, 1, 1003a21‑24, trad. J. Tricot, Paris, Vrin, 1991.</ref> L’« étant » (ou « ce qui est ») devient le sujet de la métaphysique, qui examine ses propriétés les plus générales : l’unité, la substance, la cause, l’acte et la puissance. Aristote ne prend pas directement pour thème l’« être » en tant que tel, distinct de tout étant ; il s’attache plutôt à classifier les genres d’étants, à travers les catégories (substance, quantité, relation, qualité, etc.), et à dégager ce qu’ils ont de commun. La distinction entre être et étants reste donc implicite, même si la multiplicité des « sens de l’être » (par analogie à la substance) prépare déjà le constat heideggérien selon lequel l’être n’est pas un simple genre parmi d’autres.
La scolastique médiévale, notamment Avicenne, Thomas d’Aquin et Duns Scot, introduit pourtant des distinctions décisives entre essence et existence, entre être créé et être divin. Avicenne, par exemple, explique que l’essence d’une chose (ce qu’elle est, par exemple « cheval » ou « triangle ») est distincte du fait qu’elle existe effectivement (qu’il y a ici et maintenant ce cheval‑ci ou ce triangle‑là).<ref>''Ontologie (A)'', ''L’Encyclopédie philosophique'', 2021, § 3 : « L’existence comme propriété ».</ref> L’essence peut être pensée sans que l’existence soit donnée ; inversement, l’existence vient « surajouter » quelque chose à l’essence. Thomas d’Aquin développera cette distinction en soutenant que, chez les créatures, l’essence et l’acte d’exister sont réellement distincts, alors qu’en Dieu, essence et existence coïncident.
Duns Scot parle d’« étant en tant qu’étant » comme d’un concept commun à Dieu et à la créature, et soutient une certaine univocité de l’« étant ». Ces distinctions préparent la thèse heideggérienne : pour dire qu’une chose est, il ne suffit pas de dire ''ce qu’elle est'' (son essence, sa nature). Mais ni Avicenne ni Thomas d’Aquin ne font de cette différence le « fait originaire » de la philosophie ; ils restent dans le cadre d’une métaphysique de l’« étant suprême » (Dieu) et d’une science de l’« étant en tant qu’étant ». La différence entre être et étants demeure subordonnée à la question de la hiérarchie des étants, plutôt qu’érigée en problème autonome.<ref>Jean‑François Courtine, ''Suárez et le système de la métaphysique'', Paris, PUF, 1990, p. 45‑80.</ref>
== 2. L’ontologie traditionnelle et l’oubli de la différence ontologique ==
=== 2.1. Confusion de l’être et de l’étant ===
Dans ''Être et temps'' (''Sein und Zeit'', 1927), Heidegger part d’un constat paradoxal : « Nous vivons toujours déjà dans une compréhension de l’être, et pourtant le sens de l’être est enveloppé dans l’obscurité. »<ref>Martin Heidegger, ''Être et temps'', trad. F. Vezin, Paris, Gallimard, 1986, § 1‑2.</ref> Nous utilisons en permanence le verbe « être » (« je suis », « cela est ») sans savoir en quel sens, précisément, ce « être » est pris. Personne ne doute qu’il sache ce que signifie « être », mais, dès que l’on demande : « Que veut‑on dire, au juste, quand on dit qu’une chose est ? », la réponse devient hésitante.
Heidegger remarque que, dans l’histoire de la métaphysique, l’être a presque toujours été pensé comme un étant privilégié. Chez Platon, il prend la figure de l’Idée suprême, le Bien, dont toutes les autres Idées reçoivent lumière et intelligibilité ; chez Aristote, il s’identifie à la substance première ou à l’« acte pur » d’un dieu penseur de lui‑même ; à l’époque moderne, il devient le sujet, la conscience, l’ego, la volonté, ou encore la représentation.<ref>Martin Heidegger, ''Introduction à la métaphysique'', trad. G. Kahn, Paris, Gallimard, 1958, chap. 1.</ref> Dans tous ces cas, la philosophie ne distingue pas clairement le plan de l’être et celui des étants : elle cherche le fondement de tout ce qui est dans un étant qui prétend se situer « au‑dessus » des autres.
Autrement dit, au lieu de distinguer l’être et les étants, on a compris l’être comme ''un étant très particulier'', le plus élevé ou le plus fondamental. C’est précisément ce que la notion de différence ontologique entend contester. Pour Heidegger, cette confusion entre être et étant débouche sur l’« oubli de l’être » : la philosophie devient une « pensée de l’étant » (''Seiendes'') qui catalogue, explique, hiérarchise les choses, sans interroger le sens de l’être lui‑même.
=== 2.2. Ontique et ontologique ===
Pour préciser cette critique, Heidegger introduit une autre distinction, complémentaire : entre le plan ontique (''ontisch'') et le plan ontologique (''ontologisch'').<ref>Martin Heidegger, ''Être et temps'', op. cit., § 3‑4.</ref> Est ontique tout ce qui porte sur des êtres déterminés, sur des faits, des propriétés, des processus : par exemple, dire que cette table est en bois, qu’un organisme croît, que la Terre tourne autour du Soleil, relève du registre ontique. Il s’agit de connaissances portant sur tel ou tel étant, ou sur des ensembles d’étants, que l’on peut décrire, mesurer, expliquer.
Est ontologique, en revanche, ce qui concerne l’être en tant que tel, c’est‑à‑dire ce qui rend possible le fait qu’il y ait des étants et qu’ils soient compris comme tels. S’interroger sur ce que signifie « exister » pour une chose, sur la différence entre le « se trouver là » d’une pierre, le « vivre » d’un animal, l’« exister » d’un humain, relève de l’ontologique. De ce point de vue, dire que « les objets physiques obéissent aux lois de la mécanique quantique » est une affirmation ontique, tandis que se demander ce que signifie pour un objet d’« être là‑bas dans l’espace » ou de « se présenter à une expérience » relève de l’ontologie.
Les sciences positives (physique, biologie, histoire…) sont donc ontiques : elles étudient des régions de l’étant. Elles élaborent des modèles, posent des régularités, établissent des lois à propos de ce qui est. L’ontologie fondamentale, au sens heideggérien, cherche au contraire les conditions de possibilité de toute compréhension des étants : elle interroge ce que signifie pour quelque chose « d’être » et comment un horizon de sens doit déjà être ouvert pour que la moindre observation scientifique soit possible.<ref>Sur cette distinction, voir ''Fundamental ontology'', ''Wikipedia'' (consulté via Stanford Encyclopedia of Philosophy), qui résume la position de Heidegger.</ref>
La différence ontologique est alors le nom de l’écart entre ces deux niveaux : d’un côté, l’être, que vise l’ontologie et qui n’est jamais un objet parmi d’autres ; de l’autre, les étants, que visent les sciences, mais aussi la métaphysique traditionnelle lorsqu’elle identifie l’être à un étant suprême. Ne pas respecter cet écart, c’est retomber dans l’oubli de l’être.
== 3. La différence ontologique chez Heidegger ==
=== 3.1. Être et étant : une distinction originaire ===
Heidegger insiste sur la nécessité de distinguer nettement l’être de l’étant. Dans ''Être et temps'', il note que l’usage ordinaire confond les deux, en employant « être » tantôt comme verbe (le fait d’être), tantôt comme substantif (un étant). Il propose donc de réserver le mot « être » (''Sein'') pour le fait d’être, et « étant » (''Seiendes'') pour ce qui est.<ref>Martin Heidegger, ''Être et temps'', op. cit., § 2, p. 27</ref> Une manière simple de saisir cette différence consiste à considérer une table : la table, avec sa forme, sa couleur, son poids, sa fonction, est un étant ; le fait qu’elle est, qu’elle se trouve là dans la pièce, qu’elle peut entrer dans nos usages et nos descriptions, relève de son être. L’être n’est pas une propriété de plus que l’on pourrait ajouter à la liste des caractéristiques de la table ; il est ce en quoi la table se donne comme « présente là » à notre regard et à notre pratique.
Heidegger résume cela par une formule souvent citée : « L’être de l’étant n’est pas lui‑même un autre étant. »<ref>Martin Heidegger, ''Être et temps'', op. cit., § 2, p. 27.</ref> Autrement dit, on ne doit pas expliquer ce qu’est l’être en le ramenant à ''un'' étant, fût‑il très élevé (Dieu, la matière, le sujet, etc.). L’être n’est ni un objet caché derrière les objets, ni un super‑objet qui coifferait l’ensemble du réel ; il est le « il y a » (''Es gibt'') de l’étant, la dimension dans laquelle les choses peuvent apparaître comme ce qu’elles sont.
C’est cette « scission » entre être et étant que Heidegger appelle explicitement la différence ontologique. Dans un cours contemporain d’''Être et temps'', il écrit : « L’ontologie est la science de l’être. Mais l’être est toujours l’être d’un étant. De par son essence, l’être est différent de l’étant. (…) Nous désignons cette distinction comme différence ontologique, c’est‑à‑dire comme la scission entre l’être et l’étant. »<ref>Martin Heidegger, ''Les Problèmes fondamentaux de la phénoménologie'' (1927), trad. J.‑F. Courtine, Paris, Gallimard, 2011, § 3</ref> La tâche de la pensée devient alors de rester fidèle à cette scission, au lieu de la refermer hâtivement en identifiant l’être à un étant.
=== 3.2. Dasein et privilège ontologique de l’existence humaine ===
Pour répondre concrètement à la question du sens de l’être, Heidegger cherche un point de départ privilégié. Il le trouve dans un étant singulier : l’homme, ou plutôt ce qu’il appelle le Dasein (l’« être‑là »). Le Dasein désigne l’étant que chacun de nous est et qui, à la différence d’une pierre ou d’un arbre, a une compréhension préalable de l’être : il se soucie de son être, il se demande « qui il est », il peut perdre ou gagner son existence.<ref>Martin Heidegger, ''Être et temps'', op. cit., § 12‑13.</ref> Un caillou ne se demande pas ce que c’est qu’« être », il ne peut pas échouer dans son être ; un être humain, lui, peut mener une vie plus ou moins authentique, manquer sa propre possibilité, vivre sur le mode de l’inauthenticité.
Le Dasein se caractérise par son être‑au‑monde : il n’est jamais une conscience enfermée dans un intérieur, séparée d’un extérieur, mais toujours déjà engagé dans un monde de significations, de tâches, d’outils, de soucis. Sa manière d’être n’est pas simplement d’« être‑là » comme une chose posée en face, mais de se projeter dans des possibilités, de se rapporter à ce qui l’entoure. C’est en analysant ces structures fondamentales de l’existence (que Heidegger appelle des « existentiaux ») — l’être‑au‑monde, l’être‑avec‑les‑autres, l’angoisse, l’être‑pour‑la‑mort, etc. — que l’on pourra accéder, selon lui, au sens de l’être en général.
Le Dasein est donc ontologiquement privilégié : il est l’étant pour lequel, et par lequel, la question de l’être se pose. Il est ontique en ce sens qu’il est un vivant parmi d’autres, soumis à la naissance, à la maladie, à la mort ; mais il est ontologique en ce que sa manière d’être consiste précisément à se comprendre lui‑même et à comprendre l’être des autres étants. C’est pourquoi Heidegger qualifie son projet d’« ontologie fondamentale » : il ne s’agit pas d’ajouter une nouvelle science de l’homme à côté des autres, mais de clarifier les structures de l’existence à partir desquelles toute ontologie régionale (physique, biologie, psychologie, etc.) devient possible.<ref>Martin Heidegger, ''Être et temps'', op. cit., § 4‑5.</ref>
=== 3.3. Ontologique / ontique : conséquences pour les sciences ===
La différence ontologique entraîne une réévaluation du statut des sciences. Pour Heidegger, les sciences « positives » (physique, biologie, psychologie, histoire…) produisent des connaissances rigoureuses, mais elles restent ontiques : elles analysent des régions déterminées de l’étant (corps, organismes, faits sociaux…).<ref>Martin Heidegger, ''Être et temps'', op. cit., § 3 ; voir aussi l’article ''Martin Heidegger'', ''Stanford Encyclopedia of Philosophy'', 2025.</ref> Elles s’installent dans un horizon de sens déjà ouvert : elles présupposent que le monde est tel qu’il peut être mesuré, calculé, décrit, mais elles ne s’interrogent pas sur ce qui rend possible cette objectivation.
Or toute science, pour pouvoir identifier et étudier ses objets, présuppose déjà une certaine compréhension de l’être : la physique suppose que l’on comprenne ce que veut dire « un corps existe », l’histoire ce que veut dire « un événement a eu lieu », la biologie ce que veut dire « vivre ». Ces présuppositions ne sont pas thématisées par les sciences elles‑mêmes ; elles relèvent de l’ontologie. Loin d’être une discipline concurrente des sciences, l’ontologie fondamentale cherche à expliciter ce que les sciences supposent sans le dire.
Heidegger ne dévalorise pas les sciences, mais il rappelle qu’elles reposent sur un sol plus originaire, que seule une interrogation ontologique peut éclairer. La différence ontologique fonctionne ici comme un garde‑fou : elle interdit de réduire l’être aux modèles scientifiques en vigueur (par exemple à ce que la physique conçoit comme « réalité »), et empêche de transformer sans s’en rendre compte un paradigme scientifique en vision exhaustive de l’être.
=== 3.4. Temporalité et horizon de l’être ===
Dans ''Être et temps'', Heidegger soutient que l’on ne peut comprendre l’être que depuis le temps. La thèse directrice est que « le temps constitue l’horizon possible de toute compréhension de l’être ».<ref>Martin Heidegger, ''Être et temps'', op. cit., § 5 ; voir aussi ''Martin Heidegger'', ''Stanford Encyclopedia of Philosophy'', 2025.</ref> Cela ne signifie pas que l’être se réduise au temps chronologique, mesuré par les horloges, mais que la structure temporelle de l’existence humaine conditionne toute manière, pour des étants, de « se montrer » comme ce qu’ils sont.
Le Dasein se projette vers l’avenir, reprend son passé, se tient dans un présent qui n’est jamais qu’un entrelacs de ce qui vient et de ce qui a été. Il se comprend à partir de possibilités : être tel type de professionnel, vivre telle relation, accomplir telle œuvre. La mort, en particulier, joue un rôle décisif dans cette analyse : en tant qu’« être‑pour‑la‑mort », le Dasein est un étant qui doit assumer la possibilité de ne plus pouvoir être, possibilité qui lui est la plus propre et que personne ne peut prendre à sa place. C’est en se laissant affecter par cette possibilité extrême, dans l’angoisse, qu’il peut accéder à une compréhension plus authentique de son être.
La temporalité originaire du Dasein — cette unité dynamique d’avenir, de passé et de présent — constitue l’horizon à partir duquel l’être des étants peut être compris. La différence ontologique se noue alors avec une autre différence : entre le temps vécu comme temporalité du Dasein et le temps objectif des sciences, qui découpe la durée en instants mesurables. Comprendre l’être, ce n’est pas assigner à chaque chose une date ou une durée, mais saisir comment, dans l’horizon temporel de l’existence humaine, les choses peuvent apparaître comme disponibles, menaçantes, indifférentes, urgentes, etc. L’ontologie fondamentale vise ainsi à dégager comment, à partir de la temporalité du Dasein, l’être des étants se donne.
=== 3.5. Le « tournant » et le destin de la différence ontologique ===
Après ''Être et temps'', Heidegger infléchit son questionnement dans ce qu’on appelle souvent le tournant (''Kehre''). Il ne se centre plus autant sur l’analytique du Dasein, mais sur l’histoire de l’être lui‑même, qu’il pense désormais comme « événement appropriant » (''Ereignis'').<ref>Martin Heidegger, ''Contributions à la philosophie (De l’événement)'', trad. F. Fédier, Paris, Gallimard, 2013.</ref> L’être n’est plus seulement envisagé comme horizon de compréhension, mais comme ce qui, à travers l’histoire, « envoie » des configurations de sens (par exemple l’époque grecque de la physis, l’époque moderne de la subjectivité, l’âge technique de l’arraisonnement).
La différence ontologique demeure toutefois au cœur de cette pensée ultérieure. Dans ''Identité et différence'', Heidegger la décrit comme le fait originaire : « Partout et toujours, “être” veut dire : être de l’étant ; c’est dans la scission (Dif-ferenz) entre être et étant que se décide la tâche de la pensée. »<ref>Martin Heidegger, ''Identité et différence'', op. cit., p. 47‑50.</ref> Penser, ce n’est plus produire des systèmes ou des doctrines, c’est se tenir dans cet écart, laisser jouer la différence entre ce qui donne l’être et ce qui est donné comme étant.
Certains commentateurs soutiennent que, dans ses derniers écrits, Heidegger « abandonne » ou dépasse la différence ontologique, en la réinterprétant comme un mode de l’« événement » où être et étant ne sont plus séparés par un simple écart mais réunis dans un jeu de donation et de retrait.<ref>E. De Smet, « For the Time Being : Heidegger’s Final Words in ‘‘Vorläufiges I‑IV’’ », ''Diakrisis'', 14/2, 2023.</ref> D’autres, au contraire, estiment qu’il la radicalise en la pensant comme la condition de toute apparition de l’étant, y compris dans l’époque de la technique. Quoi qu’il en soit, la différence ontologique cesse d’être un simple outil conceptuel : elle devient chez Heidegger le nom du plus originaire, ce par quoi l’être se distingue des étants tout en ne se donnant qu’en eux.
== 4. Comparaisons et prolongements contemporains ==
=== 4.1. Différence ontologique, différence catégoriale, pluralisme ontologique ===
On ne doit pas confondre la différence ontologique (entre être et étants) avec de simples différences catégoriales (entre types d’êtres) : par exemple, entre objets matériels, événements, nombres, personnes, œuvres d’art. Dire que les nombres sont abstraits et les tables concrètes, ou que les personnes sont des substances et les événements des processus, relève d’une « géographie de l’étant », non de la différence entre l’être et l’étant. Ce sont des distinctions internes au domaine de ce qui est, non l’écart entre ce domaine et la dimension plus originaire de l’être.
Certains métaphysiciens contemporains parlent néanmoins de « différences ontologiques » entre entités de sorte différente : par exemple, entre existants actuels et possibles, ou entre objets concrets et abstraits, qu’ils conçoivent comme différents « modes d’être » ou « façons d’exister » (''ontological pluralism'').<ref>Kris McDaniel, ''The Fragmentation of Being'', Oxford, Oxford University Press, 2017 ; voir aussi N. Fisher, « Ontological Pluralism and the Generic Conception of Being », ''Philosophical Studies'', 175, 2018.</ref> Selon ces auteurs, dire « il existe des tables, des nombres et des valeurs morales » ne revient pas à attribuer exactement le même type d’être à ces différents domaines ; il y aurait des manières distinctes d’« avoir de l’être ».
Une telle extension du vocabulaire risque d’estomper l’accent heideggérien : chez Heidegger, la différence ontologique ne sépare pas des genres d’étants, mais l’être comme tel et les étants quels qu’ils soient. Cependant, le débat contemporain sur les « modes d’être » (par exemple être concret, être abstrait, être actuel, être possible) demeure influencé en profondeur par l’idée qu’il y a un écart entre le fait d’« être quelque chose » et la manière dont ce quelque chose existe, écart que la distinction heideggérienne a contribué à mettre en lumière.
=== 4.2. Derrida, Deleuze, Laruelle, Levinas : variations sur la différence ===
Plusieurs penseurs du XXᵉ siècle reprennent à leur manière la question inaugurée par la différence ontologique et la déplacent dans d’autres registres. Jacques Derrida, par exemple, développe la notion de différance, qui croise et déplace la différence ontologique : la différance n’est ni un étant ni l’être, mais le mouvement de différer et de renvoyer à autre chose qui rend possible tout sens et toute présence. Elle désigne à la fois un écart dans le temps (ce qui vient toujours un peu plus tard) et un écart dans l’espace (le renvoi d’un signe à un autre). Derrida radicalise ainsi la critique heideggérienne de la « métaphysique de la présence », en montrant que jamais l’être ne se donne comme présence pleine, mais toujours comme trace et jeu de différences.<ref>Jacques Derrida, ''La Voix et le phénomène'', Paris, PUF, 1967.</ref>
Gilles Deleuze, dans ''Différence et répétition'', se réclame explicitement d’une « philosophie de la différence ». Il reprend à sa façon la critique heideggérienne de la métaphysique de l’identité, tout en substituant à la différence ontologique une conception de la différence « en soi », immanente, qui traverse les séries d’étants sans se rapporter à un horizon d’être unifié. Pour Deleuze, il ne s’agit plus de distinguer l’être et les étants, mais de penser un être purement différentiel, qui ne se laisse pas réduire à l’identité ni à la représentation. Il voit chez Heidegger un grand allié pour sortir de la logique de l’analogie et de la hiérarchie des genres, tout en lui reprochant de conserver, sous une forme transformée, un certain privilège de l’Un.<ref>Henry Somers‑Hall, « Heidegger and the Question of Being », dans D. W. Smith & H. Somers‑Hall (dir.), ''The Cambridge Companion to Deleuze'', Cambridge, Cambridge University Press, 2012, p. 340‑347.</ref>
François Laruelle distingue, dans une perspective critique, trois niveaux de différence : ontique (différences empiriques entre choses), ontologique (différence être/étant au sens heideggérien) et « transcendantale » (une différence plus radicale qui excède toute ontologie). Il entend ainsi dépasser la philosophie de la différence, y compris heideggérienne, par une « non‑philosophie » qui ne reconduit pas, selon lui, le primat de l’être sur le réel.<ref>E. Imafidon, « Exploring African Philosophy of Difference », dans E. Imafidon (dir.), ''Handbook of African Philosophy of Difference'', Springer, 2019, p. 17‑21.</ref> La différence ontologique apparaît alors comme une étape intermédiaire dans une histoire plus vaste de la pensée de la différence.
Emmanuel Levinas, enfin, renverse la hiérarchie ontologique en plaçant au‑dessus de l’ontologie la relation éthique à autrui. La « différence » décisive n’est plus, pour lui, celle de l’être et des étants, mais celle de l’Autre irréductible à la totalité de l’être. Toute ontologie, y compris heideggérienne, risquerait de réduire l’autre à un élément du même, à un moment de l’histoire de l’être. Levinas affirme au contraire la priorité du visage d’autrui, qui m’ordonne « Tu ne tueras point » et qui échappe à toute saisie ontologique.<ref>Emmanuel Levinas, ''Totalité et infini. Essai sur l’extériorité'', La Haye, Nijhoff, 1961.</ref> On voit comment la différence ontologique sert ici de point de départ à une critique éthique de la primauté de l’être.
Ces réélaborations ne reprennent pas toujours le vocabulaire de la « différence ontologique », mais elles montrent l’ampleur du champ qu’ouvre la mise en question heideggérienne de la métaphysique traditionnelle. Chacune, à sa manière, interroge le rapport entre l’être, la différence et l’altérité.
=== 4.3. Usages extra‑phénoménologiques ===
On rencontre parfois l’expression « différence ontologique » dans des domaines éloignés de Heidegger (philosophie de la race, du genre, anthropologie, études postcoloniales) pour désigner une différence de statut d’être entre groupes ou entités. On parle ainsi de différence ontologique entre humain et non‑humain pour souligner une rupture dans la manière d’« être au monde », ou entre personnes et choses pour marquer que les premières ne peuvent être traitées comme de simples objets. Dans certains contextes, l’expression sert à décrire des hiérarchies injustes, lorsqu’un groupe est implicitement traité comme s’il « n’existait pas vraiment » ou pas au même titre que d’autres.
Ces usages métaphoriques peuvent être éclairants, car ils font ressortir la dimension normative de nos attributions d’être (qui compte, qui ne compte pas, qui est « réel » ou « insignifiant » dans un ordre social donné). Ils ne coïncident toutefois pas nécessairement avec la signification stricte du terme dans la pensée heideggérienne, où il s’agit toujours de la différence entre être et étants, et non entre types d’étants. Ils témoignent néanmoins de la fécondité de cette distinction lorsqu’elle est déplacée vers des problématiques politiques, sociales ou écologiques.
== 5. Enjeux philosophiques de la différence ontologique ==
=== 5.1. Critique de la métaphysique et de la « pensée de l’étant » ===
Pour Heidegger, ne pas respecter la différence ontologique, c’est ramener l’être à l’étant, et donc ne plus penser que des choses (fût‑ce la chose suprême, Dieu ou le sujet). La métaphysique occidentale apparaît dès lors comme une longue histoire de cette réduction : l’être y est pensé tour à tour comme idée, substance, cause, valeur, volonté, subjectivité, énergie, sans que soit interrogé ce qui rend possible, pour ces figures successives, d’« être » ce qu’elles sont.<ref>Martin Heidegger, ''Introduction à la métaphysique'', op. cit., chap. 1‑2.</ref>
La différence ontologique fonctionne alors comme un principe critique. Elle empêche, d’un côté, d’identifier purement et simplement l’être à ce que telle science ou telle époque tient pour réel : ce n’est pas parce que la physique moderne décrit le monde comme un ensemble de particules ou de champs que l’être se réduit à ce modèle. Elle invite, de l’autre, à interroger les présupposés implicites de nos discours (scientifiques, religieux, politiques) sur « ce qui est » : que considérons‑nous comme réel, comme existant vraiment, et que reléguons‑nous au rang de simple apparence ou d’« irréalité » ?
En ce sens, la différence ontologique n’est pas une curiosité érudite ; elle engage une manière de résister aux absolutisations de l’époque, qu’il s’agisse du triomphe de la technique, de l’économisme ou de certaines formes de scientisme. Elle rappelle que l’être ne se laisse jamais enfermer dans une seule figure de l’étant.
=== 5.2. Rapport aux sciences et à la technique ===
En rappelant que les sciences sont ontquement puissantes mais ontologiquement silencieuses, la différence ontologique ouvre un espace de réflexion sur les limites du regard objectivant. Elle rend possible une critique de la technologie moderne, lorsque celle‑ci traite tout étant comme un « fonds » exploitable (Heidegger parle de ''Gestell'', « arraisonnement »), en oubliant la question du sens de l’être.<ref>Martin Heidegger, « La question de la technique », dans ''Essais et conférences'', trad. A. Préau, Paris, Gallimard, 1958.</ref> Dans l’analyse fameuse du barrage sur le Rhin, Heidegger montre ainsi comment le fleuve cesse d’être un « cours d’eau » pour devenir un simple « réservoir de force hydro‑électrique » : il n’est plus d’abord ce qui se montre, dans sa puissance et sa beauté, mais ce qui est « mis en demeure » de livrer de l’énergie.
Cette critique ne vise pas les sciences en tant que telles, ni la technique comme simple ensemble de moyens, mais la tentation de faire de leur image du monde l’ultime mesure de ce qui est, en négligeant l’horizon ontologique dans lequel cette image prend sens. La différence ontologique rappelle qu’il y a toujours, en‑deçà de nos dispositifs techniques et de nos modèles scientifiques, un « il y a » de l’étant qui ne se laisse pas entièrement réduire à l’utile ni au calculable. Elle ouvre ainsi la possibilité d’un rapport plus libre et plus réfléchi à la technique.
=== 5.3. Ontologie, herméneutique, théologie ===
La différence ontologique a également des conséquences importantes pour la théologie et pour l’herméneutique. Sur le plan théologique, elle interdit de comprendre Dieu comme un « super‑étant » parmi d’autres (même suprême). Dieu, s’il est, ne peut être pensé simplement dans les catégories de l’« étant » que la métaphysique applique à tous les objets. De nombreux théologiens contemporains, à la suite de Heidegger, cherchent ainsi à penser une « théologie de l’être » qui ne reconduise pas l’erreur consistant à traiter Dieu comme un objet localisable dans l’espace des étants.<ref>Jean‑Yves Lacoste, ''Expérience et absolu. Questions disputées sur l’humanité de l’homme'', Paris, PUF, 1994.</ref>
Sur le plan herméneutique, la différence ontologique signifie que toute compréhension (de soi, du monde, des textes) est déjà portée par une certaine compréhension de l’être. Interpréter, ce n’est pas seulement appliquer une méthode ; c’est toujours déjà habiter un horizon ontologique — une manière de se rapporter à l’être — qui conditionne ce qui peut apparaître comme significatif. L’herméneutique philosophique, notamment chez Hans‑Georg Gadamer, développera à sa manière cette intuition : la compréhension n’est jamais pure réception d’un donné neutre, mais participation à une histoire de l’être, où des manières de comprendre se transmettent, se transformaient et se discutent.<ref>Hans‑Georg Gadamer, ''Vérité et méthode'', trad. P. Fruchon, Paris, Seuil, 1996.</ref>
=== 5.4. Une tâche plutôt qu’une doctrine ===
Enfin, la différence ontologique ne doit pas être comprise comme une simple thèse de manuel à ajouter à la liste des doctrines métaphysiques. Elle est plutôt, chez Heidegger, la tâche permanente de la pensée : garder ouvert l’écart entre être et étants, et ainsi résister à la tendance récurrente de la philosophie à « ontifier » l’être, à le traiter comme une chose. Penser à partir de la différence ontologique, c’est accepter que l’être ne soit jamais un objet de connaissance parmi d’autres, mais toujours ce qui se donne et se retire dans le jeu des apparitions.
De ce point de vue, la différence ontologique ne se laisse pas simplement « définir » une fois pour toutes : elle se manifeste chaque fois que quelqu’un se surprend non seulement à s’interroger sur ''ce qui est'', à classer, expliquer, prévoir, mais sur le fait, plus énigmatique encore, que l’étant est. Chaque fois que cette question s’ouvre, la pensée sort du pur registre ontique pour entrer, fût‑ce un instant, dans l’espace de l’ontologie.
== Références ==
{{references}}
== Bibliographie sélective ==
; Œuvres de Heidegger
:'' Heidegger, Martin, ''Être et temps'' (''Sein und Zeit'', 1927), trad. F. Vezin, Paris, Gallimard, 1986.
:'' Heidegger, Martin, ''Les Problèmes fondamentaux de la phénoménologie'' (cours de 1927), trad. J.‑F. Courtine, Paris, Gallimard, 2011.
:'' Heidegger, Martin, ''Identité et différence'' (conférences de 1957), trad. A. Préau, Paris, PUF, 1957.
:'' Heidegger, Martin, ''Introduction à la métaphysique'', trad. G. Kahn, Paris, Gallimard, 1958.
:'' Heidegger, Martin, ''Contributions à la philosophie (De l’événement)'', trad. F. Fédier, Paris, Gallimard, 2013.
; Commentaires
:'' Dastur, Françoise, ''Heidegger et la question du temps'', Paris, PUF, 1990.
:'' Greisch, Jean, ''L’Arbre de vie et l’arbre du savoir. Les racines phénoménologiques de l’herméneutique heideggérienne'', Paris, Cerf, 2000.
:'' Mulhall, Stephen, ''Heidegger and Being and Time'', 2ᵉ éd., London, Routledge, 2005.
:'' Olafson, Frederick, ''Heidegger and the Philosophy of Mind'', New Haven, Yale University Press, 1987.
:'' ''Martin Heidegger'', ''Stanford Encyclopedia of Philosophy'' (version 2025).
{{autocat}}
28wffd9uowuqde2nnukyxastbhmwgr2
Dictionnaire de philosophie/Doute
0
83591
768390
760079
2026-06-23T03:58:35Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768390
wikitext
text/x-wiki
{{DicoPhilo|Doute|lecture=oui}}
On associe volontiers la philosophie moderne à un « âge du doute » : de Descartes à Hume, de Kant à Wittgenstein, la réflexion semble commencer en se défaisant de croyances reçues et en soumettant nos certitudes à un examen radical. Pourtant, le doute est d’abord une expérience plus élémentaire : hésitation avant un choix, perplexité devant des témoignages contradictoires, scrupule moral. L’enjeu philosophique est de comprendre ce qu’est exactement douter, jusqu’où le doute est possible, et dans quelles conditions il devient une méthode légitime de recherche de la vérité plutôt qu’une impasse sceptique.
Le présent article commence par distinguer le doute ordinaire du doute philosophique, puis retrace quelques grandes figures du doute (Socrate, les sceptiques antiques, Descartes, Hume, Kant). Il examine ensuite des critiques du modèle cartésien et montre, pour finir, les fonctions positives mais aussi les limites structurelles du doute.
== 1. Sens courant et définition philosophique du doute ==
=== 1.1. Étymologie et usage ordinaire ===
Le mot « doute » vient du latin ''dubium'', dérivé de ''duo'' : est douteux ce qui laisse envisager deux issues, deux interprétations possibles. Douter, étymologiquement, c’est être « entre deux ». Cette oscillation se rencontre dans plusieurs registres de la vie ordinaire.
Sur le plan pratique d’abord, on dit par exemple « je doute de partir demain » pour signifier que l’on n’est pas encore décidé. Le doute exprime ici une hésitation dans la délibération : les raisons en faveur d’agir de telle manière et les raisons de ne pas le faire apparaissent à peu près équilibrées, de sorte que la volonté ne parvient pas à trancher. Sur le plan théorique ensuite, le doute apparaît comme une incertitude cognitive : « je doute de sa sincérité » veut dire que je ne suis pas sûr que la personne dise vrai. Je possède certains indices qui vont en sa faveur, d’autres qui la discréditent ; aucun ne suffit à emporter ma conviction. Enfin, sur le plan moral ou existentiel, le doute prend la forme de scrupules ou de crises plus profondes : on doute du bien‑fondé d’une carrière, de la valeur d’un engagement, ou encore des doctrines religieuses au sein desquelles on a été élevé.
Dans tous ces cas, le doute décrit un état de l’esprit situé entre l’adhésion et le refus : on ne croit plus franchement, mais on ne nie pas encore. Il introduit une forme de distance réflexive par rapport à ce qu’on tenait pour assuré, distance qui peut être provisoire – si l’on parvient ensuite à se décider – ou durable lorsque l’incertitude persiste.
=== 1.2. Doute, ignorance, croyance, savoir ===
Philosophiquement, on cerne mieux la spécificité du doute en le comparant à d’autres attitudes. L’ignorance tout d’abord : ignorer, c’est ne pas avoir d’opinion du tout, rester dans un « je ne sais pas » qui n’oppose pas de raisons. Douter, à l’inverse, suppose qu’on se soit déjà intéressé à la question, qu’on ait identifié au moins deux positions possibles, chacune soutenue par des arguments. Le doute est donc une forme d’incertitude informée : il ne vient pas avant toute réflexion, mais à un certain stade du travail de l’intelligence.
Par rapport à la croyance, le doute marque une suspension de l’assentiment. Croire, c’est tenir quelque chose pour vrai, y consentir intérieurement. Douter de ''p'', c’est précisément refuser pour un temps de donner ce consentement, sans pour autant affirmer le contraire de ''p''. On est alors dans un état que les Anciens décrivaient comme une « balance en équilibre » entre deux jugements opposés.
Quant au rapport au savoir, la tradition définit souvent le savoir comme une croyance vraie et justifiée : je sais si je crois une proposition qui est effectivement vraie, et si j’ai de bonnes raisons de l’admettre. Le doute apparaît alors comme le moment où ces raisons se fissurent ou sont contestées. Il ne suffit pas qu’une croyance soit vraie pour constituer un savoir : il faut encore que le sujet puisse répondre à la question « pourquoi ? ». Le doute remet précisément en cause, non pas tant la vérité d’une proposition que la légitimité des raisons qui la soutiennent.
On peut dès lors définir, dans un premier temps, le doute comme une suspension motivée de l’assentiment : l’esprit suspend son jugement parce qu’il dispose de raisons (arguments, contre‑exemples, témoignages concurrents) qui rendent incertaine la vérité d’une proposition. Cette définition fait apparaître deux traits décisifs. D’une part, le doute n’est pas gratuit : il n’est philosophiquement intéressant que s’il existe des motifs sérieux de contester une croyance. Douter systématiquement de tout sans motif devient rapidement une pose plutôt qu’un examen. D’autre part, le doute n’est pas illimité : pour douter de quelque chose, il faut s’appuyer, explicitement ou non, sur d’autres croyances que l’on ne met pas en doute en même temps. Comme le souligne Wittgenstein, « le jeu du douter présuppose la certitude » (''De la certitude'', § 115).<ref>Ludwig Wittgenstein, ''De la certitude'', trad. J. Fauve, Paris, Gallimard, 1965, § 115.</ref> Autrement dit, on ne peut exercer le doute que sur un fond de choses que, pour l’instant, on tient pour acquises.
== 2. Le doute dans la philosophie antique ==
=== 2.1. Socrate et le doute comme prise de conscience de l’ignorance ===
Dans les dialogues de Platon, Socrate se présente volontiers comme celui qui ne sait pas. Il examine ses interlocuteurs, qui affichent des certitudes sur la piété, le courage, la justice, en leur demandant : « qu’est‑ce que c’est, au juste ? ». Par un art du questionnement – l’''elenchos'' – il fait apparaître que leurs réponses impliquent souvent des contradictions ou se heurtent à des contre‑exemples évidents. Celui qui, au début de la discussion, croyait savoir ce qu’est la justice, découvre qu’il ne peut pas maintenir jusqu’au bout ce qu’il a dit. Il est conduit à reconnaître : « je ne sais plus », et tombe dans ce que Platon appelle l’''aporie'', état d’embarras et de perplexité intellectuelle.
C’est dans ce contexte que Socrate formule sa célèbre profession d’ignorance : « Je suis plus sage que cet homme‑là ; il se peut bien que ni l’un ni l’autre nous ne sachions rien de valable, mais lui croit savoir quelque chose alors qu’il ne sait rien, tandis que moi, si je ne sais rien, du moins je ne crois pas savoir » (''Apologie'', 21d‑e).<ref>Platon, ''Apologie de Socrate'', 21d‑e, dans ''Œuvres complètes, I'', éd. L. Brisson, Paris, Flammarion, 2011.</ref> Le doute socratique est donc d’abord un doute sur soi : doute quant à la valeur de ses propres opinions, non sur le monde en général.
Ce doute‑là n’est ni un scepticisme généralisé, ni une fin en soi. Il est au contraire le point de départ d’une recherche plus rigoureuse. En faisant tomber les fausses évidences, Socrate veut libérer le désir de connaître : reconnaître son ignorance, c’est se rendre disponible à l’examen rationnel et à la quête de définitions plus solides. Le doute a ici une fonction pédagogique : il purifie, dépouille, prépare.
=== 2.2. Le scepticisme pyrrhonien : doute, épochè et ataraxie ===
Avec Pyrrhon d’Élis (IVᵉ‑IIIᵉ s. av. J.‑C.) et surtout Sextus Empiricus (IIᵉ‑IIIᵉ s. ap. J.‑C.), le doute devient le centre d’une véritable école de pensée : le scepticisme pyrrhonien. Sextus distingue les dogmatiques, qui pensent avoir atteint la vérité, les académiciens, qui soutiennent qu’elle est inaccessible, et les sceptiques, qui « continuent à chercher ».<ref>Sextus Empiricus, ''Les Hypotiposes pirroniennes'', I, chap. I, trad. C. Huart, Amsterdam, 1725, p. 1‑3.</ref>
Il définit la philosophie sceptique comme une faculté ou une méthode d’examiner, qui consiste à mettre systématiquement en balance des apparences et des jugements opposés. À propos de toute question un peu générale (les dieux existent‑ils ? le monde a‑t‑il un commencement ? le plaisir est‑il le souverain bien ?), le sceptique s’efforce de faire jouer des arguments contradictoires de force comparable. Il s’agit de parvenir à une situation où, selon une formule classique, « les raisons pour et les raisons contre se valent ». De ce travail méthodique de confrontation naît d’abord l’épochè, la suspension du jugement : l’âme renonce à affirmer ou nier quoi que ce soit sur la nature réelle des choses. Sextus la décrit comme « un état de l’âme par lequel nous n’établissons ni ne renversons rien, n’affirmant ni ne niant quoi que ce soit ».<ref>Sextus Empiricus, ''Les Hypotiposes pirroniennes'', I, chap. IV, p. 4‑5.</ref> De cette épochè découle ensuite l’ataraxie, c’est‑à‑dire une forme de tranquillité ou d’absence de trouble : en cessant de se tourmenter pour savoir si les choses sont réellement comme ceci ou comme cela, le sceptique se libère de l’inquiétude attachée au souci de la vérité dogmatique.
Le doute sceptique n’a donc pas pour fin la vérité théorique, mais une certaine sagesse pratique. C’est un art de vivre « selon les apparences », les coutumes, les lois, sans jamais transformer ces manières de faire en doctrines sur ce qui est « en soi ». Le sceptique ne nie pas ce qui apparaît : il admet que le miel lui semble doux, que le feu lui semble chaud, qu’il souffre lorsqu’il est malade. Mais il refuse de franchir le pas qui consisterait à affirmer que le miel est en lui‑même doux ou que la chaleur appartient en réalité au feu. Il vit comme tout le monde, mais pense autrement ce qu’il vit.
Ce scepticisme repose sur une panoplie d’arguments, parmi lesquels les « dix tropes » d’Énésidème et les « cinq tropes » attribués à Agrippa.<ref>Pour une présentation, voir Myles Burnyeat, « Can the Sceptic Live His Scepticism ? », dans M. Schofield, M. Burnyeat, J. Barnes (dir.), ''Doubt and Dogmatism'', Oxford, Clarendon Press, 1980.</ref> Ils mettent en évidence la diversité des perceptions (ce qui est amer pour l’un est agréable pour l’autre, ce qui paraît droit de près paraît courbe de loin), la diversité des coutumes et des lois, la relativité de nos critères de jugement, et l’impossibilité d’arrêter la régression des justifications sans tomber dans la circularité ou l’arbitraire. L’idée générale est qu’à chaque affirmation dogmatique on peut opposer une affirmation contraire de poids égal ; la raison ne parvient jamais à rompre cet équilibre.
=== 2.3. Le scepticisme académicien : doute et vraisemblance ===
L’Académie platonicienne, dirigée successivement par Arcesilas puis Carnéade (IIIᵉ‑IIᵉ s. av. J.‑C.), développe une autre variante du scepticisme. Ici, l’accent n’est plus mis sur la suspension totale, mais sur l’impossibilité d’une connaissance absolument certaine. Les académiciens soutiennent que, pour les choses humaines, nous devons nous contenter de ce qui est vraisemblable ou probable. Une représentation peut être plus ou moins « persuasive », plus ou moins résistante à l’examen contradictoire, sans jamais atteindre une certitude parfaite.
La vie pratique n’est pas suspendue : on agit en se fiant à ce qui, après enquête, apparaît comme la meilleure option, tout en restant conscient que cette option pourrait se révéler fausse. Une telle attitude influencera Hume dans son idée d’un « scepticisme mitigé », et à travers lui Kant, qui cherchera à limiter les prétentions de la métaphysique sans détruire la possibilité de la science.
== 3. Le doute méthodique de Descartes ==
Avec René Descartes (1596‑1650), le doute cesse d’être seulement une manière de vivre ou un moment pédagogique pour devenir le point de départ programmatique d’une entreprise de refondation du savoir. Dans la ''Première Méditation'', il annonce sa décision de « démolir entièrement » ses anciennes opinions et de « recommencer dès les fondements », en ne retenant pour vraies que les idées « claires et distinctes ».<ref>René Descartes, ''Méditations métaphysiques'', I, dans ''Œuvres de Descartes'', éd. C. Adam et P. Tannery (AT), VII, Paris, Vrin/CNRS, 1964, p. 17‑19.</ref> Pour cela, il entreprend de soumettre l’ensemble de ses croyances à un doute aussi large que possible.
=== 3.1. Les trois niveaux du doute cartésien ===
Descartes organise ses doutes suivant une progression. Il commence par remarquer que les sens nous trompent parfois : un bâton plongé dans l’eau paraît brisé, une tour lointaine semble ronde alors qu’elle est carrée. Il conclut qu’il serait imprudent de se fier sans réserve aux témoignages sensibles, du moins pour les objets situés « fort éloignés » ou perçus dans de mauvaises conditions.<ref>Ibid., p. 18‑19.</ref> Ce premier doute vise la fiabilité ponctuelle des sens.
Mais même les perceptions les plus vives et les plus familières – être assis auprès du feu, sentir la chaleur, regarder sa main – peuvent être imitées en rêve. Il arrive qu’en dormant nous croyions avoir les yeux ouverts, parler, marcher, alors que nous sommes étendus. Or rien, à l’intérieur de l’expérience présente, ne permet de distinguer avec une certitude immédiate l’état de veille de certains rêves. Descartes en conclut qu’il peut mettre en doute non seulement des perceptions particulières, mais l’existence même du monde extérieur tel qu’il lui apparaît : peut‑être n’est‑il en ce moment qu’un rêveur.<ref>Ibid., p. 19‑20.</ref>
Il reste toutefois les vérités les plus générales, en particulier les mathématiques. Que deux plus trois fassent cinq, que le carré ait quatre côtés, semblent des évidences qui survivent même à l’hypothèse du rêve. C’est pourquoi Descartes franchit un troisième pas et imagine l’hypothèse d’un « génie extrêmement puissant et rusé » qui s’emploierait à le tromper « même sur les choses qui nous paraissent très évidentes », comme les opérations arithmétiques simples ou les principes logiques.<ref>Ibid., p. 21‑22.</ref> Si un tel être avait créé son esprit de façon qu’il se trompe même lorsqu’il croit voir d’une lumière claire que 2 + 3 = 5, alors plus aucune de ses croyances ne serait à l’abri, en droit, d’une possible illusion. Ce doute, dit‑il, est « hyperbolique » : il va au‑delà de ce qui est psychologiquement soutenable, mais il sert de test méthodique pour repérer ce qui résiste absolument à toute mise en question concevable.
=== 3.2. Un doute méthodique, non un scepticisme de principe ===
Ce doute cartésien a un statut singulier. Il n’est pas un scepticisme de principe, qui nierait la possibilité de toute connaissance, mais un doute méthodique et provisoire. Il est méthodique au sens où il n’est pas nécessaire de démontrer que mes opinions sont fausses : il suffit, pour les mettre hors jeu dans un premier temps, de faire apparaître qu’on peut concevoir un motif de douter. Descartes précise ainsi qu’il ne se donne pas « la peine de montrer qu’elles sont toutes fausses », mais qu’il suspend son assentiment chaque fois qu’il peut imaginer une source possible d’erreur.<ref>Ibid., p. 18.</ref>
Ce doute est également provisoire, car son objectif est de dégager, au sein de l’ensemble de nos pensées, au moins une vérité absolument indubitable, qui puisse servir de premier fondement à l’édifice du savoir. Dans un entretien ultérieur, Descartes explique qu’il n’entend pas seulement reprendre les « doutes ordinaires des sceptiques », mais pousser le doute plus loin qu’eux, « jusqu’à ses dernières limites », précisément pour le « détruire à sa racine ».<ref>René Descartes, ''Entretien avec Burman'', AT V, p. 147.</ref>
La découverte de ce point fixe est exprimée par la formule célèbre ''cogito ergo sum'' – « je pense, donc je suis » –, même si, dans les ''Méditations'', Descartes insiste plutôt sur l’intuition : « je suis, j’existe » chaque fois qu’il pense.<ref>Descartes, ''Méditations métaphysiques'', II, AT VII, p. 25‑27.</ref> Quelle que soit l’ampleur du doute, fût‑il suscité par un génie malin, il ne peut jamais atteindre le fait même que, pendant que je doute, je pense, et qu’en pensant j’existe. Cette certitude est d’un type particulier : elle n’est pas obtenue par raisonnement, mais par une saisie réflexive immédiate, que Descartes qualifie de claire et distincte. C’est à partir d’elle qu’il entreprendra de démontrer l’existence d’un Dieu vérace, garantissant la fiabilité de nos idées claires et distinctes, et de reconstruire, sur des bases nouvelles, une confiance raisonnable dans la raison et dans une partie de l’expérience.
=== 3.3. Descartes face aux sceptiques modernes ===
Descartes se voit parfois comme celui qui, pour la première fois, a réellement pris au sérieux les arguments sceptiques afin de les réfuter de l’intérieur. Dans les ''Réponses aux Septièmes Objections'', il affirme que la « secte des sceptiques » n’est pas morte et qu’elle « fleurit aujourd’hui plus que jamais » : beaucoup, déçus par la philosophie commune, se réfugient dans le scepticisme, qui remet en cause l’existence de Dieu et l’immortalité de l’âme.<ref>Descartes, ''Réponses aux Septièmes Objections'', AT VII, p. 548‑549.</ref> À ses yeux, cependant, ces sceptiques modernes ne vont pas jusqu’au bout de leur doute : dans la vie ordinaire, ils continuent à se fier aux sens, aux règles du calcul, aux régularités empiriques. Leur doute est davantage une attitude polémique qu’un exercice suivi.
Le doute cartésien, lui, se veut plus radical en droit, mais précisément pour ouvrir la voie à une nouvelle certitude. À la différence des pyrrhoniens, Descartes ne cherche ni la suspension définitive, ni la tranquillité intérieure par renoncement à la vérité ; son ambition est d’établir un fondement inébranlable pour la science moderne, qui allie mathématiques et physique. Le ''cogito'', suivi de la démonstration de Dieu, doit permettre de réconcilier certitude et vérité : ce que je perçois clairement et distinctement sera désormais tenu pour vrai, parce qu’un Dieu parfait ne peut vouloir me tromper lorsque j’exerce correctement ma faculté de juger.
== 4. Scepticisme moderne et doutes limites : Hume et Kant ==
=== 4.1. Hume : doutes sur l’induction et les opérations de l’entendement ===
David Hume (1711‑1776) reprend la tradition sceptique, mais en déplaçant son foyer : il s’intéresse moins à la tromperie des sens qu’aux opérations de l’entendement, c’est‑à‑dire à la manière dont nous passons de ce que nous percevons réellement à des croyances plus générales. Dans l’''Enquête sur l’entendement humain'', il distingue deux grands types d’objets de la raison humaine : les « relations d’idées », qui englobent les vérités logiques et mathématiques et sont nécessairement vraies (leur contraire implique contradiction), et les « questions de fait », contingentes, dont le contraire est toujours possible sans contradiction.<ref>David Hume, ''Enquête sur l’entendement humain'', sect. IV, trad. A. Leroy, Paris, Vrin, 2001, p. 37‑40.</ref> Dire « le soleil ne se lèvera pas demain » n’est pas contradictoire, bien que très peu plausible.
Hume observe que, pour toute question de fait qui dépasse l’observation immédiate (par exemple « cette pierre tombera‑t‑elle si je la lâche ? »), nous raisonnons par induction : nous nous appuyons sur l’expérience passée (les pierres que nous avons vues tomber) pour prévoir l’avenir (celle‑ci tombera aussi). Or une telle inférence suppose déjà que la nature est, d’une certaine manière, uniforme : on suppose que le futur ressemblera au passé. Mais ce principe d’uniformité ne peut lui‑même être justifié ni par l’expérience – car il porte sur tous les cas possibles, au‑delà de ceux que nous avons rencontrés – ni par la simple raison – car il n’est pas analytiquement contenu dans la notion de pierre ou de chute.<ref>Ibid., sect. IV, §§ 2‑3.</ref>
Nous découvrons ainsi que la croyance dans l’avenir, dans le lien causal, ne repose pas sur une nécessité rationnelle, mais sur une habitude psychologique solidement ancrée. Parce que nous avons souvent vu deux types d’événements associés (le feu et la chaleur, le pain et la nutrition), notre esprit tend à s’attendre à leur conjonction, et cette attente prend la forme d’une croyance ferme. Hume résume : « la coutume est le grand guide de la vie humaine ».<ref>Ibid., sect. V, § 1.</ref> C’est une forme de scepticisme, dans la mesure où elle montre que même nos croyances les plus ordinaires (que le soleil se lèvera, que le pain nourrit) ne sont pas, au sens strict, rationnellement justifiées.
Cependant Hume ne recommande pas de suspendre ces croyances dans la pratique. Il insiste au contraire sur l’impossibilité psychologique de vivre selon les exigences d’un scepticisme radical : « La nature se suffit à elle‑même, et renverse aisément toutes les intentions laborieuses de notre raison », écrit‑il ailleurs. Il défend ainsi un « scepticisme mitigé » : prendre conscience des limites de la raison, renoncer aux spéculations métaphysiques illégitimes, mais accepter les croyances issues de l’habitude dès lors qu’elles sont utiles à la vie.
=== 4.2. Kant : de la critique du doute à la « révolution copernicienne » ===
Immanuel Kant (1724‑1804) se présente en partie comme un héritier critique de Hume. Il raconte, dans les ''Prolégomènes'', que la lecture de Hume l’a « réveillé de son sommeil dogmatique » en lui faisant voir que le lien de causalité ne pouvait être dérivé simplement de l’expérience. Là où Hume concluait à l’origine purement habituelle de ce lien, Kant se demande : quelles structures de notre esprit rendent possible l’expérience elle‑même en tant que suite de phénomènes ordonnés selon des règles ?
Dans la ''Critique de la raison pure'', il propose ce qu’il appelle une « révolution copernicienne ». Au lieu de supposer que notre connaissance doit se régler sur les objets tels qu’ils seraient en eux‑mêmes, il suggère de penser que ce sont les objets de l’expérience qui doivent se conformer à nos formes de connaissance.<ref>Immanuel Kant, ''Critique de la raison pure'', Préface de la 2ᵉ éd., trad. A. Tremesaygues & B. Pacaud, Paris, PUF, 1944.</ref> L’espace et le temps ne sont plus des propriétés des choses, mais des formes a priori de notre sensibilité ; les catégories de l’entendement (comme la causalité, la substance, la communauté) ne sont pas dérivées de l’expérience, mais sont les règles selon lesquelles nous unifions nos perceptions pour en faire des objets.
Dans cette perspective, certaines propositions – par exemple « tout ce qui arrive a une cause » – ne portent pas sur la réalité en soi, mais expriment des conditions a priori auxquelles toute expérience possible doit se plier. Elles ne sont donc pas susceptibles du même doute que des énoncés empiriques. Le scepticisme humien est ainsi neutralisé, non en prouvant directement l’uniformité de la nature, mais en montrant que sans la catégorie de causalité, il n’y aurait tout simplement pas de phénomène d’expérience continue et ordonnée.
Kant ne prolonge donc pas le doute, il le transforme en critique : examen des pouvoirs et des limites de la raison. Il s’agit à la fois de restreindre les prétentions illégitimes de la métaphysique dogmatique et de montrer que certaines formes de savoir (en particulier les mathématiques et la physique newtonienne) sont possibles et fondées. Là où un sceptique intégral prétendrait tout mettre en question, Kant estime qu’une telle entreprise est incohérente, car elle supposerait déjà des structures de pensée qu’elle feint de douter.
== 5. Critiques du modèle cartésien du doute ==
Le projet de Descartes – commencer par une table rase des croyances afin de reconstruire le savoir sur des fondements indubitables – a été contesté par plusieurs auteurs majeurs, qui soulignent ses présupposés psychologiques et logiques.
=== 5.1. Peirce : le « vrai doute » contre le doute de papier ===
Charles S. Peirce (1839‑1914), dans son article « The Fixation of Belief » (1877), distingue soigneusement le vrai doute, effectivement vécu, du doute de pure convenance, qu’il appelle « doute de papier ».<ref>Charles S. Peirce, « The Fixation of Belief », ''Popular Science Monthly'', 12, 1877, p. 1‑15 ; repris dans J. Buchler (éd.), ''Philosophical Writings of Peirce'', New York, Dover, 1955, p. 5‑22.</ref> Le vrai doute est pour lui « un état d’irritation » de l’esprit : une croyance auparavant stable se trouve bousculée par un fait nouveau, par un contre‑argument, par une expérience contraire. Cette irritation crée un malaise, qui pousse à l’enquête afin de trouver une croyance nouvelle, plus stable.
Or cet état ne dépend pas de notre seule volonté. On ne peut pas se mettre volontairement à douter de tout ce que l’on croit le plus fermement, sans raison sérieuse de le faire. Quelqu’un peut affirmer en théorie qu’il « met en doute » l’existence du monde extérieur, mais, dans ses comportements, il continue à éviter les voitures, à se nourrir, à se soigner comme tout un chacun. Pour Peirce, le doute cartésien généralisé est de ce type : il est affirmé dans le discours, mais ne correspond pas à une véritable perturbation des habitudes de pensée.
Toute enquête, selon Peirce, doit donc partir des croyances déjà en place, héritées du langage, de la communauté, de l’éducation, et les soumettre progressivement à l’épreuve de l’expérience et de la discussion. Il n’y a pas de point de départ absolument neutre, dépourvu de tout présupposé. L’idée de « reconstruire » la connaissance sur un fondement unique et indubitable lui paraît illusoire ; ce qui compte est plutôt la dynamique collective de correction des erreurs.
=== 5.2. Wittgenstein : le doute suppose un socle de certitudes ===
Dans ses notes tardives rassemblées sous le titre ''De la certitude'', Ludwig Wittgenstein (1889‑1951) approfondit, dans un autre langage, cette critique du scepticisme et du cartésianisme. Il observe que les notions de doute et de certitude appartiennent à un « jeu de langage » particulier : douter a un sens seulement dans un contexte où certaines choses ne sont pas mises en question.
D’une part, lorsqu’un enfant apprend ce que signifie « douter », on lui montre des cas concrets : douter qu’un ami viendra parce qu’il est souvent en retard, douter du résultat d’un examen, etc. Il ne s’agit jamais de douter de l’existence du monde ou des autres hommes. D’autre part, dans nos pratiques effectives, nous ne doutons pas de tout : lorsque je vérifie si la porte est verrouillée, je ne remets pas en cause l’existence de la porte, de la clé, de mon propre corps. Ces choses‑là forment l’arrière‑plan tacite de mon doute.
Wittgenstein en tire l’idée que certaines propositions – par exemple « le monde existe », « il y a eu des êtres humains avant moi », « ceci est ma main » – ne fonctionnent pas comme des hypothèses à vérifier, mais comme des « propositions charnières » (''hinge propositions'') qui structurent notre image du monde.<ref>Wittgenstein, ''De la certitude'', §§ 94‑115.</ref> Elles ne sont ni sues au sens ordinaire, ni proprement crues, elles sont présupposées dans le jeu même du doute et de la connaissance. Vouloir les mettre toutes en cause, c’est retirer le plancher sur lequel repose la distinction entre vérifié et non vérifié, probable et improbable. D’où l’aphorisme : « Le jeu du douter présuppose la certitude » (§ 115).
Dans cette perspective, le sceptique radical est en quelque sorte victime d’un glissement de sens : il applique le mot « doute » à des propositions qui, dans notre pratique, ne sont jamais l’objet de doute et qui servent de conditions de possibilité à tout questionnement déterminé. Le remède n’est pas de démontrer qu’elles sont vraies, mais de rappeler l’usage ordinaire des mots.
=== 5.3. Husserl : l’épochè phénoménologique n’est pas un doute sceptique ===
Edmund Husserl (1859‑1938), fondateur de la phénoménologie, reprend le terme d’''épochè'' introduit par les sceptiques, mais en le détachant de l’idéal sceptique d’ataraxie. Dans les ''Idées directrices pour une phénoménologie'', il propose de pratiquer une « réduction phénoménologique », qui consiste à mettre « entre parenthèses » la « thèse naturelle » selon laquelle le monde existe objectivement et continue d’exister lorsque nous ne le percevons pas.<ref>Edmund Husserl, ''Idées directrices pour une phénoménologie pure et une philosophie phénoménologique'', I, §§ 31‑33, trad. P. Ricœur, Paris, Gallimard, 1950.</ref>
Il ne s’agit pas d’adopter la croyance opposée (que le monde n’existe pas), ni même de douter au sens psychologique ; il s’agit plutôt de suspendre toute prise de position ontologique pour porter l’attention sur la manière dont les choses se donnent à la conscience. L’épochè n’est pas un doute destructeur, mais un déplacement du regard : au lieu de nous demander si tel objet est réel ou non, nous décrivons comment il apparaît, quelles intentions de sens il porte, comment il se constitue dans un flux d’expérience. Husserl insiste sur le fait que cette méthode ne conduit pas au scepticisme : elle ouvre un autre champ de certitude, celui de la description des vécus de conscience tels qu’ils se donnent. Le doute sceptique et l’épochè phénoménologique ont donc des finalités et des portées très différentes, malgré le vocabulaire commun.
== 6. Fonctions positives du doute ==
En dépit des critiques adressées au modèle cartésien, le doute conserve une place essentielle dans la rationalité moderne. Il ne se réduit pas à une maladie de l’esprit, il peut aussi apparaître comme une vertu intellectuelle lorsqu’il est exercé à bon escient.
=== 6.1. Doute et méthode scientifique ===
Dans les sciences empiriques, on parle souvent de « doute méthodique » pour caractériser l’attitude de prudence critique vis‑à‑vis des hypothèses et des résultats. Un scientifique consciencieux ne tient aucune mesure pour absolument infaillible : il sait que les instruments ont une marge d’erreur, que des biais méthodologiques peuvent affecter l’expérience. De même, aucune théorie n’est considérée comme définitivement établie : on la juge à l’aune de sa capacité à prévoir correctement de nouveaux phénomènes, et on sait qu’une anomalie empirique suffisamment robuste pourrait la remettre en cause.
Karl Popper a popularisé l’idée que les théories scientifiques ne sont jamais vérifiées une fois pour toutes, mais seulement corroborées provisoirement : elles sont construites de manière à être testables, et c’est précisément parce qu’elles pourraient être réfutées qu’elles ont un contenu empirique.<ref>Karl Popper, ''La logique de la découverte scientifique'', trad. N. Thiébaut, Paris, Payot, 1973.</ref> Le doute joue ici un rôle constructif : il pousse à imaginer des expériences décisives, à chercher activement des contre‑exemples, à ne pas se satisfaire trop vite d’un accord apparent entre théorie et observation. Sans ce soupçon méthodique, la science se figerait en dogme.
Il faut toutefois distinguer ce doute encadré par des règles – critères de test, transparence des données, reproductibilité des expériences – d’une suspicion généralisée qui refuse d’emblée toute autorité scientifique. Contester les résultats d’un domaine en bloc sans en maîtriser les méthodes ni proposer de critères alternatifs revient moins à exercer un doute rationnel qu’à adopter une posture de méfiance systématique, qui peut facilement nourrir le complotisme. Le doute scientifique, au sens fort, est exigeant : il suppose un travail précis d’enquête, non un rejet global et indistinct.
=== 6.2. Doute, morale et politique ===
Sur le plan moral et politique, le doute peut être compris comme une forme de modestie épistémique. Reconnaître que ses convictions peuvent être erronées favorise la tolérance à l’égard d’autrui, le goût de la discussion argumentée, la disponibilité à réviser ses positions face à des raisons meilleures. Des auteurs comme Montaigne, dans l’« Apologie de Raimond Sebond », ou Pierre Bayle, dans son ''Dictionnaire historique et critique'', ont mis en valeur les vertus politiques d’un scepticisme modéré : en brisant la certitude absolue de détenir la vérité, il limite les tentations de persécution et de fanatisme.<ref>Michel de Montaigne, ''Essais'', II, 12 (« Apologie de Raimond Sebond »), éd. P. Villey & V.‑L. Saulnier, Paris, PUF, 1965.</ref>
Mais, à l’inverse, un excès de doute peut aussi paralyser l’action. Si l’on attend de disposer de certitudes inébranlables pour prendre une décision, pour s’engager politiquement ou moralement, on risque de ne jamais agir. Or, dans la plupart des situations de la vie collective, il faut trancher sur la base d’éléments incomplets, de probabilités, d’arguments plausibles mais contestables. Une éthique de la responsabilité suppose donc de combiner une capacité à remettre en cause ses choix et une capacité à décider malgré l’incertitude. Le doute est alors un aiguillon plutôt qu’un refuge.
=== 6.3. Doute, confiance et rationalité ordinaire ===
Dans la vie quotidienne, enfin, un usage sain du doute consiste à proportionner sa confiance aux raisons dont on dispose. On accorde naturellement davantage de poids à un témoignage multiple et convergent qu’à une rumeur isolée, à un diagnostic médical étayé par des examens et des études qu’à un avis anonyme glané sur un forum. Douter ne signifie pas rejeter tout ce que l’on n’a pas vérifié par soi‑même ; ce serait impossible. Cela signifie plutôt évaluer les sources, distinguer les situations où une confiance routinière est suffisante de celles où un contrôle plus poussé s’impose.
Refuser par principe toute confiance – par exemple à l’ensemble des médias, des scientifiques, des institutions – ne relève plus du doute raisonnable, mais d’un soupçon systématique qui finit par se priver lui‑même de critères pour distinguer le plausible de l’improbable. Dans un tel climat de méfiance généralisée, les théories les plus extravagantes ont autant de « droit de cité » que les explications patiemment élaborées. Ici encore, le scepticisme généralisé mine les bases du désaccord raisonnable : si nous ne pouvons plus nous appuyer sur aucun socle commun de faits ou de méthodes, la discussion tourne court.
== 7. Peut‑on tout mettre en doute ? Limites logiques et pratiques du doute ==
Plusieurs arguments convergent pour montrer que le doute ne peut pas, sans se détruire lui‑même, être étendu à tout. Ces limites sont à la fois logiques – certaines structures de pensée ne peuvent être remises en cause sans contradiction performative – et pratiques – un scepticisme intégral est incompatible avec la vie ordinaire.
=== 7.1. Le problème du critère et la circularité ultime ===
Les sceptiques antiques eux‑mêmes ont mis en lumière ce qu’ils appellent le « problème du critère ». Pour distinguer le vrai du faux, il faut un critère de vérité : la sensation, la raison, l’évidence intérieure, la révélation, etc. Mais pour justifier ce critère, il semble nécessaire de donner un argument qui montre qu’il conduit effectivement à la vérité. Or cet argument, lui‑même, repose sur un certain usage de la raison ou de la perception : il mobilise déjà un critère. On se trouve alors devant une alternative : ou bien on tourne en rond en utilisant le critère pour se justifier lui‑même (cercle vicieux), ou bien on ouvre une régression à l’infini de critères justifiant d’autres critères, ou bien on s’arrête arbitrairement en posant un critère sans justification ultérieure.<ref>Sur ces arguments (attribués à Agrippa), voir Victor Brochard, ''Les sceptiques grecs'', Paris, Vrin, 1997, p. 219‑245.</ref>
Reconnaître ce problème ne conduit pas nécessairement à tout mettre en doute. On peut admettre qu’il y a, dans toute entreprise de justification, des points où l’on doit s’arrêter, non parce qu’on aurait démontré que ces points sont indubitables, mais parce qu’ils jouent, de fait, le rôle de règles du jeu que nous ne remettons pas en cause tant qu’aucune raison forte ne nous y contraint. Il peut s’agir de principes logiques élémentaires, de normes méthodologiques, de certitudes du sens commun. Le doute philosophique ne cherche alors pas à détruire tout critère, mais à rendre explicites ces points d’arrêt, à surveiller leurs usages, à éviter de les absolutiser.
=== 7.2. Le paradoxe du doute total ===
Une formule comme « je doute de tout » pose un problème particulier. Si je doute vraiment de tout, dois‑je douter aussi de cette proposition elle‑même ? Si oui, alors mon affirmation se détruit elle‑même : elle n’est plus un engagement ferme, mais une pensée parmi d’autres dont je suspends aussi la valeur. Si non, si je fais exception pour « je doute de tout », alors je ne doute déjà plus de tout : il y a au moins une chose que je tiens pour certaine. Ce paradoxe montre que le doute radical se retourne aisément en contradiction performative : en parlant, en s’affirmant, le sceptique semble déjà contredire la portée de ce qu’il dit.
Plus profondément, douter suppose l’usage de la logique, du langage, de la mémoire. On ne peut pas mettre en question, au même moment et de la même manière, la fiabilité de toutes ces capacités, sous peine d’ôter tout sens à la démarche de doute elle‑même. C’est pourquoi nombre de philosophes contemporains – externalistes, contextualistes, partisans d’une « épistémologie des charnières » – considèrent que certaines propositions fondamentales (par exemple « il existe un monde extérieur ») ne sont pas des croyances ordinaires, mais des éléments du cadre qui rend possible la distinction entre croire et douter.<ref>Voir Duncan Pritchard, ''Epistemic Angst. Radical Skepticism and the Groundlessness of Our Believing'', Princeton, Princeton University Press, 2016.</ref>
=== 7.3. Le sceptique peut‑il vivre son scepticisme ? ===
Les sceptiques antiques avaient parfaitement conscience de ces objections. Sextus Empiricus souligne que le sceptique vit « selon quatre choses » : la nature, l’impulsion des affects, les lois et coutumes, les arts et techniques de la vie quotidienne.<ref>Sextus Empiricus, ''Les Hypotiposes pirroniennes'', I, chap. XI.</ref> Autrement dit, il mange lorsqu’il a faim, se met à l’abri de la pluie, respecte les coutumes de sa cité, pratique les métiers comme tout le monde ; la suspension de son jugement ne l’empêche pas d’agir. La différence se situe au niveau du discours : là où le dogmatique affirme que telle chose est bonne ou vraie par nature, le sceptique se contente de dire qu’elle lui apparaît ainsi, sans s’engager sur ce qu’elle est en soi.
Cette dualité entre pratique ordinaire et suspension théorique a souvent été jugée instable. Certains commentateurs estiment qu’un sceptique conséquent devrait finir par se laisser mourir, s’il ne croit à rien ; d’autres, à l’inverse, pensent que le sceptique, en continuant à vivre comme tout le monde, manifeste qu’il accorde en fait une confiance minimale à certaines régularités du monde, même s’il refuse de le dire en termes dogmatiques. On peut y voir un signe que le scepticisme intégral est difficile à vivre sur la durée, et qu’il tend soit à se relâcher dans la pratique, soit à se radicaliser jusqu’à l’absurde.
== Conclusion ==
Le doute, loin d’être seulement une expérience psychologique désagréable ou un luxe intellectuel, se trouve au cœur de la démarche philosophique. Sous ses formes les plus classiques – socratique, pyrrhonienne, cartésienne, humienne –, il permet de distinguer croyances dépourvues de fondement et prétentions légitimes au savoir, de débusquer les abus de la raison, d’ouvrir un espace de liberté par rapport aux évidences héritées. Il oblige à expliciter ce que nous tenons pour vrai et à rendre compte de nos engagements intellectuels.
Mais le doute n’est pas un absolu. Il ne peut s’exercer qu’à partir d’un ensemble de certitudes de fond, explicites ou implicites, qu’il présuppose sans toujours les reconnaître : structures du langage, règles élémentaires de la logique, confiance de base dans la mémoire et dans le témoignage d’autrui. Il est fécond lorsqu’il s’inscrit dans un mouvement d’enquête – quand il incite à mieux justifier ce que l’on tient pour vrai, à rectifier ses erreurs, à améliorer ses méthodes. Il devient stérile lorsqu’il se fige en posture sceptique générale, détachée de toute pratique de recherche, ou lorsqu’il se transforme en soupçon universel qui mine jusqu’aux conditions de possibilité du désaccord raisonnable.
On peut alors voir le doute comme une vertu intellectuelle de mesure : assez fort pour nous délivrer de la crédulité et du fanatisme, assez lucide pour reconnaître qu’il ne peut être lui‑même sans limites. À ce titre, il n’est ni l’ennemi de la connaissance, ni son fondement exclusif, mais l’un des instruments par lesquels une raison humaine finie tente de s’orienter dans la complexité du vrai.
== Notes et références ==
{{references}}
== Bibliographie indicative ==
* '''Scepticisme antique et médiéval'''
** Sextus Empiricus, ''Les Hypotiposes pirroniennes'', trad. C. Huart, Amsterdam, 1725.
** Victor Brochard, ''Les sceptiques grecs'', Paris, Vrin, 1997.
** Platon, ''Apologie de Socrate'', dans ''Œuvres complètes, I'', éd. L. Brisson, Paris, Flammarion, 2011.
* '''Doute cartésien et modernité'''
** René Descartes, ''Méditations métaphysiques'', dans ''Œuvres de Descartes'', éd. C. Adam et P. Tannery, Paris, Vrin/CNRS, 1964, t. VII.
** René Descartes, ''Entretien avec Burman'', dans ''Œuvres de Descartes'', t. V.
** John Cottingham (dir.), ''The Cambridge Companion to Descartes'', Cambridge, Cambridge University Press, 1992.
* '''Scepticisme moderne'''
** David Hume, ''Enquête sur l’entendement humain'', trad. A. Leroy, Paris, Vrin, 2001.
** Immanuel Kant, ''Critique de la raison pure'', trad. A. Tremesaygues & B. Pacaud, Paris, PUF, 1944.
* '''Critiques du doute radical'''
** Charles S. Peirce, ''Philosophical Writings of Peirce'', éd. J. Buchler, New York, Dover, 1955.
** Ludwig Wittgenstein, ''De la certitude'', trad. J. Fauve, Paris, Gallimard, 1965.
** Edmund Husserl, ''Idées directrices pour une phénoménologie pure et une philosophie phénoménologique'', trad. P. Ricœur, Paris, Gallimard, 1950.
** Duncan Pritchard, ''Epistemic Angst. Radical Skepticism and the Groundlessness of Our Believing'', Princeton, Princeton University Press, 2016.
* '''Approches contemporaines'''
** Sven Bernecker & Duncan Pritchard (dir.), ''The Routledge Companion to Epistemology'', New York, Routledge, 2010 (articles « Skepticism », « Self‑Knowledge », etc.).
** Annalisa Coliva, ''Extended Rationality. A Hinge Epistemology'', Basingstoke, Palgrave Macmillan, 2015.
== Voir aussi ==
* [[Scepticisme]]
* [[Certitude]]
* [[Croyance]]
* [[Connaissance]]
* [[Méthode (philosophie)]]
{{Autocat}}
tqr95ln9kj1asho0o3msrdamsntten3
Dictionnaire de philosophie/Dialectique
0
83592
768387
760080
2026-06-23T03:58:05Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768387
wikitext
text/x-wiki
{{DicoPhilo|Dialectique|lecture=oui}}
Le mot ''dialectique'' recouvre plusieurs acceptions liées, mais nettement distinctes. Dans la philosophie grecque, il désigne d’abord un art du dialogue : une manière de conduire un entretien en ordonnant les questions et en confrontant des thèses opposées, afin de clarifier une notion et de mettre à l’épreuve les opinions des interlocuteurs. Chez Kant, la ''dialectique'' devient le nom d’une dérive interne de la raison : la tendance qu’a la raison à dépasser illégitimement les limites de l’expérience, produisant des illusions qu’il faut démasquer. Avec Hegel, puis avec le marxisme, la dialectique se transforme encore et devient une logique du développement : les réalités conceptuelles, historiques ou sociales se transforment en traversant des contradictions internes, qui ne sont pas de simples accidents, mais le moteur de leur devenir. Au XXe siècle enfin (chez Adorno, Horkheimer, Habermas, Sartre, et d’autres), la dialectique renvoie à des formes de critique de la société, de la raison ou du langage, qui entendent penser ensemble conflit, médiation et totalité.
On peut, de façon très générale, appeler « dialectique » toute méthode philosophique qui met au centre la confrontation de positions opposées, qui cherche à comprendre le lien interne entre ces oppositions — comment chaque terme dépend de l’autre et se définit par rapport à lui — et qui vise, non une simple juxtaposition de contraires, mais une transformation de la pensée (et parfois de la réalité elle‑même) par leur élucidation. En ce sens, la dialectique n’est ni un simple dialogue au sens courant, ni un relativisme où « tout se vaudrait », mais une manière exigeante de raisonner et d’interpréter le réel, attentive aux tensions, aux conflits et aux processus par lesquels ils se déploient.
== I. La dialectique dans l’Antiquité ==
=== 1. La dialectique socratique : l’art du questionnement ===
Chez Platon, la figure de Socrate illustre une première forme de dialectique, que l’on peut appeler ''élénctique'' (du grec ''elenchos'', réfutation). Dans de nombreux dialogues dits « socratiques » (''Euthyphron'', ''Lachès'', ''Gorgias''), Socrate invite un interlocuteur à définir une notion morale, par exemple la piété, le courage ou la justice, puis, par une série de questions, il montre que la définition proposée entraîne des conséquences inacceptables ou contradictoires. L’interlocuteur est amené à reconnaître l’insuffisance de sa thèse, à renoncer à sa première réponse et à chercher avec Socrate une nouvelle définition, qui sera à son tour discutée et souvent mise en difficulté.
Le but n’est pas de remporter un « duel oratoire », mais de purifier progressivement l’opinion (''doxa'') pour s’approcher d’un savoir plus solide (''epistèmè'').<ref>Platon, ''Euthyphron'', 10a‑11b, 15c‑e, dans ''Œuvres complètes'', t. I, trad. L. Brisson et al., Paris, Flammarion, 2008.</ref> La dialectique est ici une méthode critique : en dévoilant les contradictions internes de nos croyances, elle nous oblige à les réviser, à reconnaître ce que nous ne savons pas, et à prendre au sérieux le travail sur les concepts moraux du langage courant.
=== 2. Platon : la dialectique comme chemin vers les Idées ===
Dans les dialogues dits « de maturité » (''République'', ''Phèdre'', ''Sophiste''), Platon donne à la dialectique un statut plus systématique. Elle n’est plus seulement une manière de discuter, mais la méthode proprement philosophique, supérieure à la simple opinion et même aux mathématiques. Dans le livre VI de la ''République'', la dialectique est présentée comme l’étude qui permet à l’âme de « remonter » des objets sensibles vers les ''Idées'', et finalement vers l’Idée du Bien, en dépassant les hypothèses admises au départ pour chercher un principe inconditionné (République VI, 509d‑511e, VII, 531d‑534e).<ref>Platon, ''République'', VI, 509d‑511e et VII, 531d‑534e, trad. G. Leroux, Paris, GF Flammarion, 2002.</ref> La dialectique platonicienne est ainsi orientée vers un point culminant : la contemplation du Bien, principe d’intelligibilité et de valeur de toutes choses.
Platon décrit aussi la dialectique comme une méthode de ''collection'' et de ''division''. Il s’agit, d’un côté, de rassembler en une unité conceptuelle des cas dispersés (la ''collection'') : par exemple, reconnaître que des pratiques apparemment diverses relèvent toutes de l’art de persuader, et les subsumer sous le concept de rhétorique. De l’autre côté, il s’agit de découper un genre en espèces selon des différences pertinentes (la ''division'') : par exemple, distinguer la véritable politique, orientée vers le bien de la cité, de la flatterie politique qui ne vise qu’à plaire aux foules. La dialectique consiste à opérer ces découpages de manière ordonnée, en respectant les articulations objectives du réel, comme on découperait un animal « selon les jointures naturelles ».<ref>Platon, ''Phèdre'', 265c‑266c ; ''Sophiste'', 253d‑259d, dans ''Œuvres complètes'', op. cit. Voir aussi F. Fronterotta, « Dialectique et division dans les dialogues tardifs de Platon », in M. Dixsaut (dir.), ''Platon. Les formes du savoir'', Paris, Vrin, 2001, p. 199‑222.</ref>
La dialectique platonicienne n’est donc pas seulement une logique formelle de la discussion ; elle est indissociable d’une métaphysique des Formes. Le dialecticien doit apprendre à distinguer ce qui est vraiment — les Idées, stables et intelligibles — de ce qui n’est que flux et apparence sensibles, et à ordonner les différents niveaux de réalité et de connaissance. Elle est à la fois un art du dialogue, une méthode de classification, et un chemin vers une intuition intellectuelle du vrai.
=== 3. Aristote : dialectique et opinions probables ===
Aristote reprend le terme de ''dialectique'', mais en le distinguant nettement de la ''science'' démonstrative. Dans les ''Topiques'', il appelle dialectique l’art d’argumenter à partir des ''endoxa'', c’est‑à‑dire d’opinions réputées honorables ou largement acceptées, soit par la majorité, soit par les sages.<ref>Aristote, ''Topiques'', I, 1, 100a18‑b21, éd. et trad. J. Brunschwig, Paris, Les Belles Lettres, 1967.</ref> La dialectique se tient sur ce terrain de l’opinion probable : elle n’atteint pas la nécessité stricte de la science, mais elle a une fonction propre.
Cette fonction est double. Sur le plan pratique, la dialectique permet de discuter de questions encore indécidées, pour lesquelles on ne dispose pas de principes premiers démontrés : il s’agit alors de confronter des arguments pour et contre, de mettre à l’épreuve des thèses admises, et d’affiner les distinctions. Sur le plan pédagogique, la dialectique est un entraînement intellectuel : en obligeant à anticiper les objections possibles et à explorer les conséquences de ses propres thèses, elle développe l’habileté à raisonner et à nuancer. Aristote distingue ainsi la dialectique de la démonstration scientifique (qui part de principes vrais et premiers, dans les ''Seconds Analytiques'') et de la rhétorique (qui vise surtout à persuader un auditoire). Elle conserve toutefois sa forme dialogique : un problème est posé, des positions sont examinées, leurs implications sont tirées et comparées.
=== 4. Héritages médiévaux : la ''disputatio'' scolastique ===
Au Moyen Âge, la dialectique devient l’un des arts du trivium, avec la grammaire et la rhétorique, et se confond largement avec ce que nous appelons la logique. Elle se manifeste surtout dans la pratique universitaire de la ''disputatio'' (''quaestio disputata''), qui structure l’enseignement et la recherche théologique et philosophique. Concrètement, une question est posée (« Dieu existe‑t‑il ? », « La grâce détruit‑elle la nature ? »). On aligne alors une série d’objections, soigneusement formulées, souvent appuyées sur l’autorité des Pères de l’Église, de l’Écriture ou d’Aristote. Vient ensuite un argument en sens contraire, introduit par la formule « Sed contra » (« Au contraire »), puis la ''determinatio'' du maître, c’est‑à‑dire la solution proposée, où il expose son propre raisonnement. Enfin, il répond une à une aux objections initiales, en montrant en quel sens elles peuvent être intégrées ou doivent être refusées.
Les grandes ''Sommes'' théologiques, comme la ''Somme de théologie'' de Thomas d’Aquin, sont composées de centaines de questions structurées de cette manière.<ref>M.-D. Chenu, ''Introduction à l’étude de saint Thomas d’Aquin'', Paris, Vrin, 1954, chap. 3.</ref> La dialectique médiévale est ainsi à la fois un art de la controverse réglée, un outil de clarification doctrinale, et un cadre formel, héritier d’Aristote, pour la discussion des questions philosophiques et théologiques.
== II. Kant : la dialectique transcendantale ==
Avec Kant, la dialectique change de statut. Elle n’est plus l’idéal de la raison, mais le nom d’un de ses dangers internes. Dans la ''Critique de la raison pure'' (1781/1787), la ''Dialectique transcendantale'' constitue la seconde partie de la logique transcendantale, elle‑même seconde grande section de la ''Doctrine transcendantale des éléments'' (après l’''Esthétique transcendantale'').<ref>I. Kant, ''Critique de la raison pure'', trad. A. Renaut, Paris, GF Flammarion, 2006, « Table des divisions ».</ref>
Kant distingue d’abord la dialectique au sens traditionnel, comme logique de l’apparence : l’art de démasquer les sophismes, ces arguments qui semblent corrects mais qui reposent sur une erreur. À ce niveau, la dialectique reste externe et formelle. Plus profondément, il introduit la ''dialectique transcendantale'', qui ne porte plus sur des erreurs contingentes, mais sur une illusion propre à la raison elle‑même. La raison, en effet, a pour tendance naturelle de rechercher l’''inconditionné'' : pour toute série de conditions (par exemple une chaîne de causes et d’effets), elle cherche un point d’arrêt absolu, une totalité achevée. C’est ce besoin d’achèvement qui engendre les Idées transcendantales : l’idée d’âme comme substance simple, l’idée du monde comme totalité du conditionné, et l’idée d’un être suprême.
Ces idées jouent un rôle légitime de régulation : elles incitent l’entendement à poursuivre son enquête, à chercher l’unité systématique de ses connaissances. L’illusion commence lorsque la raison traite ces Idées comme si elles désignaient des objets connaissables. Elle formule alors des thèses métaphysiques qui dépassent les limites de toute expérience possible, et se heurte à des ''antinomies'', c’est‑à‑dire à des couples de thèses contradictoires, chacune pouvant être démontrée avec une apparente rigueur (par exemple : « Le monde a un commencement dans le temps » / « Le monde est sans commencement dans le temps »).<ref>I. Kant, ''Critique de la raison pure'', ''Dialectique transcendantale'', livre II, « Les antinomies de la raison pure », A405/B432 sqq.</ref>
La dialectique, chez Kant, n’est donc plus une méthode à imiter, mais un phénomène à critiquer. Elle désigne la tendance inévitable de la raison à outrepasser ses droits, en transformant des principes régulateurs en connaissances illégitimes. La tâche critique consiste à expliquer l’origine de cette illusion, à en montrer la nécessité (on ne peut l’éviter par une simple mise en garde) et à ''discipliner'' la raison : non pour l’amoindrir, mais pour lui faire reconnaître ses limites, et ainsi sauver ce qu’elle a de légitime dans sa visée d’unité et de totalité.<ref>Pour une lecture récente, voir M. Willaschek, ''Kant on the Sources of Metaphysics. The Dialectic of Pure Reason'', Cambridge, Cambridge University Press, 2018, et G. Gava, ''Kant’s Critique of Pure Reason and the Method of Metaphysics'', Cambridge, Cambridge University Press, 2023.</ref>
== III. Hegel : la dialectique spéculative ==
Avec Hegel (1770‑1831), la dialectique retrouve un rôle central, mais dans un sens profondément remanié. Elle n’est plus seulement une technique argumentative, ni un catalogue d’illusions de la raison, mais la structure même du réel et de la pensée. Dans la ''Science de la logique'' (1812‑1816) comme dans la ''Phénoménologie de l’esprit'' (1807), Hegel entend montrer que les déterminations que nous appliquons aux choses (être, quantité, cause, liberté, etc.) ne sont pas des caractères fixes qu’on pourrait juxtaposer à un substrat inerte. Chacune porte en elle des tensions internes, qui la conduisent à se transformer en une autre détermination, plus riche et plus adéquate.
On présente souvent la dialectique hégélienne comme un mouvement en trois moments. Un premier moment, dit de l’entendement (''Verstand''), pose une détermination de manière unilatérale : par exemple, l’être pur, pensé sans aucune autre détermination. Un second moment, négatif ou dialectique au sens strict, montre que cette détermination se renverse en son contraire : l’être pur est indiscernable du rien pur, et l’on est contraint de reconnaître leur inséparabilité. Un troisième moment, spéculatif, introduit une nouvelle détermination — le devenir — qui intègre les deux premières en les dépassant tout en les conservant.<ref>G. W. F. Hegel, ''Science de la logique'', Livre I, « Être », trad. G. Jarczyk et P.-J. Labarrière, Paris, Aubier, 1972, chap. 1‑2. Voir aussi J. E. Maybee, « Hegel’s Dialectics », ''Stanford Encyclopedia of Philosophy'', éd. 2016.</ref>
Hegel lui‑même se méfie toutefois du schéma scolaire « thèse–antithèse–synthèse », qu’il n’emploie presque jamais. Ce qui importe, pour lui, n’est pas l’application extérieure d’un triptyque formel, mais le fait que chaque notion se dépasse elle‑même à partir de son propre contenu. La « négation déterminée » (''bestimmte Negation'') n’est pas un simple refus : elle prend au sérieux ce qu’une détermination affirme, en suit les conséquences, en dévoile les unilatéralités, et montre ainsi la nécessité d’une détermination plus concrète. C’est pourquoi Hegel parle d’un mouvement nécessaire des déterminations : l’enchaînement n’est pas arbitraire, mais dicté par la « chose même ».
La spécificité de la dialectique hégélienne tient également à l’articulation entre logique et histoire. Le mouvement dialectique ne concerne pas seulement la pensée abstraite, mais aussi l’histoire de la conscience et des institutions. Dans la ''Phénoménologie de l’esprit'', par exemple, la célèbre dialectique du maître et de l’esclave décrit le processus par lequel la conscience, cherchant à se faire reconnaître, entre dans un rapport de domination, puis découvre, à travers le travail de l’esclave et la médiation de l’objectivité, une forme de liberté plus haute que la simple indépendance initiale.<ref>Hegel, ''Phénoménologie de l’esprit'', IV, A, « Indépendance et dépendance de la conscience de soi », trad. J. Hyppolite, Paris, Aubier, 1939.</ref> Plus largement, l’esprit se réalise en traversant des formes successives de vie collective et de conscience (monde antique, chrétienté, État moderne, etc.), chacune portant en elle des contradictions qui appellent un dépassement.
Au total, la dialectique est pour Hegel à la fois une méthode de pensée (la logique spéculative), une structure de la réalité (le réel est un processus où les déterminations se nient et se conservent) et une lecture de l’histoire (l’esprit se réalise en surmontant ses propres contradictions dans des formes de plus en plus riches).
== IV. Marx et la dialectique matérialiste ==
Karl Marx reprend à Hegel l’idée d’une dialectique comme logique du devenir, mais en renversant son point de vue. Il ne s’agit plus de suivre le déploiement de l’Idée dans l’histoire, mais d’analyser le mouvement réel des sociétés humaines. La dialectique devient matérialiste, au sens où elle se concentre sur les rapports sociaux et économiques et non sur les catégories de l’esprit.
Dans la postface à la seconde édition allemande du ''Capital'' (1873), Marx explique qu’il a « retourné » la dialectique de Hegel, en la posant « sur ses pieds ». Là où Hegel voyait le monde réel comme le développement de l’Idée, Marx considère que ce sont les rapports matériels de production, les formes de propriété, la division du travail et les luttes sociales qui constituent le moteur du devenir historique, que la pensée doit reproduire conceptuellement.<ref>K. Marx, ''Le Capital'', livre I, « Postface à la seconde édition allemande » (1873), dans ''Le Capital'', t. I, trad. J.-P. Lefebvre, Paris, PUF, 1993, p. 21‑29.</ref>
La dialectique matérialiste repose sur l’idée que la société capitaliste est structurée par des contradictions internes. Les forces productives (technologies, organisation du travail, compétences) entrent en conflit avec les rapports de production (propriété privée des moyens de production, salariat, État). La marchandise, analysée au début du ''Capital'', est elle‑même un « objet dialectique » : elle possède une double nature, valeur d’usage et valeur d’échange, qui se manifeste dans le double caractère du travail (travail concret et travail abstrait). Cette double nature ouvre à la fois la possibilité du développement illimité de la production et celle de crises périodiques, de suraccumulation, d’exploitation accrue.<ref>Pour un commentaire systématique, voir T. Andréani, ''Historical Materialism. Revisiting the Fundamental Concepts'', Londres, Routledge, 2026, chap. 1‑2.</ref>
Engels, dans ''L’Anti‑Dühring'' (1877) et les manuscrits de la ''Dialectique de la nature'', a vulgarisé la dialectique sous forme de « lois » générales (unité et lutte des contraires, passage de la quantité à la qualité, négation de la négation).<ref>F. Engels, ''Monsieur Eugène Dühring bouleverse la science'' (''L’Anti‑Dühring''), trad. R. Dangeville, Paris, Éditions sociales, 1950.</ref> Cette systématisation a joué un grand rôle dans le marxisme du XXe siècle, mais au prix d’une certaine rigidification. Chez Marx lui‑même, la dialectique apparaît plutôt comme un mode d’exposition et une manière de saisir ensemble la cohérence d’un système social et sa tendance interne à l’auto‑transformation. Elle permet, en particulier, de montrer comment une forme sociale (le capitalisme) produit, à travers ses dynamismes et ses crises, les conditions de sa propre remise en cause.
== V. La dialectique dans la théorie critique (Horkheimer, Adorno, Habermas) ==
Au XXe siècle, la dialectique devient l’un des motifs centraux de la « théorie critique » développée par l’École de Francfort. Max Horkheimer et Theodor W. Adorno, dans ''Dialectique de la raison'' (écrit en exil pendant la Seconde Guerre mondiale, publié en 1947), proposent une lecture dialectique de l’histoire de la rationalité occidentale.<ref>M. Horkheimer & Th. W. Adorno, ''Dialectique de la raison. Fragments philosophiques'', trad. É. Kaufholz, Paris, Gallimard, 1974.</ref> L’éclaircissement (''Aufklärung''), qui devait libérer l’humanité du mythe, se retourne en nouveau mythe : la raison, réduite à une rationalité instrumentale et calculatrice, sert la domination technique de la nature et la domination sociale, notamment à travers l’industrie culturelle.
Leur démarche est dialectique à un double titre. Sur le plan historique, ils montrent comment l’émancipation promise par la science, le droit, le marché se transforme en nouvelle forme d’aliénation, sans pour autant abolir totalement les acquis de l’Aufklärung. Sur le plan méthodologique, ils réemploient et déplacent certaines figures hégéliennes (comme la dialectique du maître et de l’esclave) pour analyser les rapports entre raison et nature, mythe et éclaircissement, individu et société.<ref>J. M. Bernstein, « Negative Dialectic as Fate », in T. Huhn (dir.), ''The Cambridge Companion to Adorno'', Cambridge, Cambridge University Press, 2004, p. 19‑50.</ref>
Adorno, en particulier, dans ''Dialectique négative'' (1966), redéfinit la dialectique comme pensée de la non‑identité. La pensée conceptuelle, selon lui, a une tendance spontanée à « identifier » les objets, à les réduire à ce que le concept en saisit et à oublier ce qui excède cette saisie. La dialectique négative consiste à laisser parler ce reste, à pousser les concepts jusqu’au point où ils révèlent ce qu’ils ne parviennent pas à intégrer. Il s’agit d’une dialectique sans synthèse finale : le mouvement de négation ne doit pas être « réconcilié » dans une totalité harmonieuse, car une telle réconciliation risquerait d’avaliser un monde où les victimes et les singularités sont sacrifiées au nom du tout.<ref>Th. W. Adorno, ''Dialectique négative'', trad. coll. « Philosophie en cours », Paris, Payot, 1978 (éd. orig. 1966), p. 15‑18 et 150‑153.</ref> La dialectique devient ici un exercice critique de vigilance conceptuelle, qui vise à faire apparaître les contradictions et les souffrances refoulées par les formes de rationalité dominantes (par exemple, dans la culture de masse, dans la logique de la marchandise, dans la technicisation du monde).
Habermas, héritier et critique d’Adorno et de Horkheimer, estime que cette radicalisation de la dialectique court le risque de saper les bases mêmes de la critique. Si toute raison est instrumentale et liée à la domination, sur quel fondement peut‑on encore porter un jugement sur la société ?<ref>J. Habermas, ''Le discours philosophique de la modernité'', trad. C. Bouchindhomme, Paris, Gallimard, 1988, chap. 5.</ref> Habermas propose alors de déplacer le centre de gravité : plutôt qu’une grande dialectique historique de la raison et de la société, il développe une théorie de l’agir communicationnel et une éthique de la discussion. Selon lui, la raison n’est pas exclusivement instrumentale ; elle est aussi communicationnelle : dans de nombreuses situations sociales, les acteurs cherchent un accord sur des prétentions à la validité (vérité, justesse normative, sincérité), en s’exposant à la critique des autres. Le conflit et la critique ne disparaissent pas, mais ils sont encadrés par des procédures discursives (idéal de discussion libre, principe d’universalisation des normes, etc.), plutôt que par une logique unique de la contradiction historique.<ref>J. Habermas, ''Théorie de l’agir communicationnel'', 2 vol., trad. J.-M. Ferry, Paris, Fayard, 1987 ; ''Morale et communication. Conscience morale et activité communicationnelle'', trad. C. Bouchindhomme, Paris, Cerf, 1987.</ref>
On peut dire, en simplifiant, que Habermas conserve un motif dialectique — l’idée que les oppositions peuvent être travaillées et transformées — mais qu’il l’inscrit dans une pragmatique du dialogue, attentive aux conditions concrètes de l’argumentation, plutôt que dans une métaphysique ou une philosophie de l’histoire de la contradiction.
== VI. Concepts structurants de la dialectique ==
Au‑delà des auteurs particuliers, il est possible de dégager quelques traits communs à la plupart des conceptions philosophiques de la dialectique.
Le premier est l’importance accordée à la contradiction et aux tensions internes. Penser dialectiquement, c’est prendre au sérieux les conflits : conflits logiques (thèses incompatibles), tensions internes à une notion (par exemple la liberté, qui suppose des conditions sociales qu’elle ne maîtrise pas entièrement), antagonismes sociaux (luttes d’intérêts, oppositions de classes). L’enjeu n’est pas seulement de repérer des incohérences pour les éliminer, mais de voir dans ces contradictions l’expression de quelque chose de constitutif : la liberté ne se comprend qu’en relation avec la dépendance, l’individu avec la société, l’autonomie avec les liens qui nous portent.
Un second trait est le rôle de la négation. Dans la perspective dialectique, nier une thèse ne signifie pas seulement l’ abolir : la ''négation déterminée'' consiste à faire apparaître ce que la thèse affirmait de valable, en montrer les conditions de possibilité, les limites, et ouvrir ainsi la voie à une détermination plus adéquate. Chez Hegel, ce mouvement est le moteur du développement des concepts : chaque détermination se définit aussi par ce qu’elle exclut, et c’est en rencontrant ce qu’elle ne peut penser qu’elle s’ouvre à une autre. Chez Adorno, la négation garde un caractère plus ouvertement critique : elle doit empêcher les concepts de se fermer sur eux‑mêmes et de se prendre pour le tout de la chose.
Un troisième motif est l’importance des médiations et de la totalité. La dialectique invite à ne pas considérer les phénomènes isolément, mais à les rapporter à un ensemble de relations. Un prix de marché, par exemple, ne s’explique pas seulement par la rencontre d’une offre et d’une demande à un instant donné, mais renvoie à l’ensemble des rapports de production, des institutions, des habitudes de consommation, des techniques. Comprendre une chose, c’est la situer dans une totalité structurée : un système de catégories, une forme de société, une histoire déterminée. Cette notion de totalité est ambivalente : elle peut servir à justifier des visions fermées et autoritaires, où le « tout » absorbe toutes les différences ; mais elle peut aussi fournir un point de vue critique, en montrant comment un détail apparemment anodin exprime une contradiction plus large.
Enfin, la dialectique est presque toujours liée à une pensée de l’historicité. Même chez Platon, elle est associée à un mouvement de l’âme qui s’élève vers le vrai. Chez Hegel, elle coïncide avec l’histoire du monde : l’esprit se réalise dans et par les événements historiques. Chez Marx, elle est au cœur de l’analyse des modes de production et des luttes de classes. Chez de nombreux penseurs contemporains, elle permet de concevoir que les formes sociales et culturelles (le droit, la famille, la science, l’art) ne sont pas fixes, mais traversées de tensions qui peuvent les transformer. Penser dialectiquement, c’est donc se méfier des essences intemporelles et chercher les processus par lesquels les choses deviennent ce qu’elles sont.
== VII. Usages et critiques contemporains ==
Le terme ''dialectique'' a été très employé, parfois de façon vague, notamment dans les discours politiques du XXe siècle, où il a pu servir de slogan plus que de concept précis. Dans la philosophie récente, son usage est plus mesuré, mais plusieurs lignes de force demeurent.
On retrouve d’abord des héritages et des réélaborations du motif dialectique dans certains courants marxistes et post‑marxistes. Sartre, par exemple, dans la ''Critique de la raison dialectique'', tente d’articuler la dialectique historique des ensembles sociaux (les classes, les institutions) et l’analyse des pratiques individuelles, dans une perspective qui veut éviter aussi bien l’idéalisme hégélien que le positivisme sociologique. Par ailleurs, des logiciens et des philosophes comme Graham Priest ont défendu des logiques dites ''dialéthéistes'', qui admettent la possibilité de contradictions vraies, en s’inspirant partiellement d’une relecture de Hegel et de la notion de contradiction dialectique.<ref>G. Priest, ''In Contradiction. A Study of the Transconsistent'', 2e éd., Oxford, Oxford University Press, 2006 ; E. Ficara, « Dialectic and Dialetheism », ''History and Philosophy of Logic'', 33(3), 2012, p. 227‑245.</ref> Dans un autre registre, des auteurs comme John McDowell ou Robert Brandom, tout en s’inscrivant dans la philosophie analytique, mobilisent des thèmes hégéliens (la dépendance des concepts à l’égard de leurs usages, la dimension sociale de la normativité) qui relèvent d’une sensibilité dialectique.<ref>J. Lemanski, « Dialectic and Reductionism in McDowell and Fichte », ''Edukacja Filozoficzna'', 69, 2020, p. 61‑80.</ref>
La dialectique a aussi fait l’objet de critiques. On lui reproche, chez Hegel, de tendre à absorber la différence dans une synthèse totalisante, où toute opposition se trouve en fin de compte intégrée dans un système qui prétend dire la vérité du Tout. À l’inverse, certains ont reproché à Adorno une complaisance pour la négativité et l’aporie, conduisant à une position où la critique semble condamnée à tourner en rond sans jamais indiquer positivement des voies de transformation. Des philosophes comme Karl Popper ont accusé la dialectique hégéliano‑marxiste de justifier rétrospectivement n’importe quel événement historique comme « nécessaire », ce qui ferait obstacle à la critique empirique et à la réfutation scientifique. D’autres, comme Deleuze, ont cherché à promouvoir une pensée de la différence qui ne passe plus par la contradiction dialectique, mais par des multiplicités, des écarts irréductibles, des lignes de fuite.
Malgré ces critiques, la dialectique conserve plusieurs intérêts philosophiques. Elle rappelle que la pensée ne progresse pas seulement en accumulant des données, mais aussi en mettant en question les cadres dans lesquels elle se meut, comme on le voit déjà chez Platon. Elle offre des outils pour analyser des réalités traversées de conflits internes — institutions, identités, normes — sans les réduire à des oppositions purement externes. Elle permet enfin d’articuler l’analyse conceptuelle et la dynamique historique, la logique et la critique sociale. Pour un lecteur non spécialiste, on peut dire, pour conclure, que la dialectique n’est ni un mot magique, ni un simple synonyme de « dialogue », ni l’affirmation que « tout est relatif », mais le nom d’un ensemble de pratiques philosophiques qui prennent au sérieux les conflits — dans la pensée, dans la société, dans l’histoire — pour tenter de les comprendre et, parfois, de les transformer.
== Notes et références ==
{{references}}
6ijj24kgbkiz1itiaoypgr8pc7lcsel
Dictionnaire de philosophie/Désir
0
83594
768386
767901
2026-06-23T03:57:55Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768386
wikitext
text/x-wiki
{{DicoPhilo|Désir|lecture=oui}}
Le '''désir''' (du latin ''desiderare'') a une étymologie discutée mais éclairante. Le mot se décompose en ''de-'' (préfixe privatif) et ''sidus, sideris'' (constellation, groupe d'étoiles — à distinguer de ''stella'', l'étoile isolée). Le verbe appartenait, comme son antonyme ''considerare'' (« observer attentivement les astres »), à la langue des augures romains, qui scrutaient le ciel pour y lire les présages : ''desiderare'' signifiait « constater l'absence de la constellation attendue », et par extension « déplorer une absence », « regretter ce qui manque », puis « souhaiter vivement obtenir »<ref>Ernout, A. et Meillet, A., ''Dictionnaire étymologique de la langue latine. Histoire des mots'', 4{{e}} éd., Paris, Klincksieck, 2001, s.v. « sidus » ; voir aussi ''Dictionnaire historique de la langue française'' (dir. A. Rey), Paris, Le Robert, 2019, s.v. « désir ».</ref>. Véridique ou non dans le détail, cette étymologie inscrit d'emblée l'idée d'un manque au cœur du désir : désirer, ce serait fondamentalement tendre vers ce dont on est séparé, viser ce qui n'est pas là. Le désir se distingue ainsi du simple besoin biologique par la dimension de représentation qui l'accompagne : là où le besoin s'éteint par la satisfaction, le désir peut se relancer indéfiniment, s'attacher à de nouveaux objets, voire se nourrir de sa propre insatisfaction.
Notion centrale de la philosophie depuis l'Antiquité, le désir touche à l'ensemble des grandes questions philosophiques : la nature de l'âme et du corps, le bonheur et la vie bonne, la morale et la liberté, la connaissance de soi et le rapport à autrui. Chaque époque philosophique a reformulé le problème du désir en fonction de ses cadres conceptuels propres : les Grecs l'ont pensé comme ''erôs'' et ''epithumia'', la philosophie classique comme ''appetitus'' et ''conatus'', la modernité comme pulsion, manque ou production. L'enjeu traverse toute l'histoire de la pensée : le désir est-il une force positive qui nous porte vers le bien et la vérité, ou une servitude qui nous enchaîne à l'illusion ? Faut-il le maîtriser, le supprimer, le libérer, ou le transformer ?
== Philosophie antique : les premières théorisations du désir ==
=== Platon : Éros, le manque et l'ascension vers le Beau ===
La philosophie platonicienne du désir s'articule autour de trois dialogues majeurs : le ''Banquet'', le ''Phèdre'' et la ''République''. Platon y élabore une conception du désir comme manque (''endeia'') orienté vers ce qui nous fait défaut, mais capable, s'il est correctement éduqué, de conduire l'âme du sensible à l'intelligible.
Dans le ''Banquet'', le discours de Diotime rapporté par Socrate présente Éros comme un ''daimôn'', un intermédiaire entre les mortels et les dieux, fils de Poros (la ressource) et de Pénia (la pauvreté)<ref>Platon, ''Le Banquet'', 203b-204a, trad. L. Brisson, Paris, GF-Flammarion, 2007, p. 144-146.</ref>. Éros n'est ni beau ni laid, ni savant ni ignorant : il est cet entre-deux qui pousse à chercher ce qu'on n'a pas. Désirer, c'est donc essentiellement manquer : « Ce qu'on n'a pas, ce qu'on n'est pas, ce dont on manque, voilà les objets du désir et de l'amour »<ref>Platon, ''Le Banquet'', 200e, trad. L. Brisson, op. cit., p. 141.</ref>. Mais ce manque n'est pas stérile : il est le moteur d'une ascension dialectique. Diotime décrit une échelle de l'amour (''scala amoris'') qui va de l'amour d'un beau corps à celui de tous les beaux corps, puis de la beauté des âmes, des actions, des sciences, jusqu'à la contemplation du Beau en soi (''to kalon auto kath'hauto'')<ref>Platon, ''Le Banquet'', 210a-211d, trad. L. Brisson, op. cit., p. 155-158.</ref>. Le désir est donc susceptible d'une conversion : d'érotique, il devient philosophique.
Dans la ''République'' (livre IV), Platon propose une tripartition de l'âme qui structure durablement la pensée du désir. L'âme comprend une partie désirante (''epithumêtikon''), siège des appétits corporels et des plaisirs sensibles ; une partie ardente ou ''irascible'' (''thumoeides''), siège du courage et de l'honneur ; et une partie rationnelle (''logistikon''), qui aspire à la vérité<ref>Platon, ''République'', IV, 435a-441c, trad. G. Leroux, Paris, GF-Flammarion, 2016, p. 243-255.</ref>. La justice de l'âme consiste dans la subordination harmonieuse de ces trois parties, le ''logistikon'' commandant au ''thumoeides'' qui dompte les appétits. Le désir n'est donc pas mauvais en soi, mais il doit être ordonné par la raison. Cette tripartition établit une hiérarchie qui influencera profondément les conceptions morales et psychologiques ultérieures.
Le ''Phèdre'' reprend cette structure sous la forme allégorique du mythe de l'attelage ailé : l'âme est un cocher (la raison) conduisant deux chevaux, l'un noble et docile (le ''thumos''), l'autre rétif et indiscipliné (l{{'}}''epithumia'')<ref>Platon, ''Phèdre'', 246a-248c, trad. L. Brisson, Paris, GF-Flammarion, 2012, p. 117-122.</ref>. Le désir y apparaît comme une force ambivalente : il peut aussi bien tirer l'âme vers le bas (le cheval noir de la concupiscence) que participer à son élévation vers les réalités intelligibles, à condition d'être guidé par la raison.
=== Aristote : le désir comme mouvement et la délibération pratique ===
Aristote propose une approche du désir plus naturaliste et ancrée dans la psychologie du vivant. Dans le traité ''De l'âme'' (''De Anima''), il définit le désir (''orexis'') comme la faculté motrice de l'âme, celle qui met effectivement en mouvement l'animal et l'homme<ref>Aristote, ''De l'âme'', III, 10, 433a-433b, trad. R. Bodéüs, Paris, GF-Flammarion, 1993, p. 237-241.</ref>. L{{'}}''orexis'' comprend trois formes : l{{'}}''epithumia'' (appétit sensible, lié au plaisir immédiat), le ''thumos'' (emportement, colère) et la ''boulêsis'' (souhait rationnel, désir du bien tel que la raison le conçoit). Ni l'intellect seul ni le désir seul ne suffisent à expliquer l'action : c'est leur coopération, sous la forme du ''syllogisme pratique'', qui détermine la conduite. Le syllogisme pratique articule une prémisse majeure qui exprime un désir ou une évaluation générale (par exemple : « tout ce qui est doux est agréable »), une prémisse mineure qui constate un fait particulier (« ceci est doux »), et une conclusion qui n'est pas un jugement théorique mais l'action elle-même (goûter l'aliment). L'action résulte ainsi de la rencontre entre un désir qui vise un certain type de bien et une perception qui identifie un cas particulier de ce bien<ref>Aristote, ''De l'âme'', III, 11, 434a16-21, trad. R. Bodéüs, op. cit., p. 243 ; ''De motu animalium'', 7, 701a7-25.</ref>. Ce modèle fait du désir une condition nécessaire mais non suffisante de l'action : sans désir, l'intellect ne met rien en mouvement ; sans intellect, le désir reste aveugle.
Dans l{{'}}''Éthique à Nicomaque'', Aristote inscrit le désir dans la théorie du bonheur (''eudaimonia''). Le désir humain se distingue du simple appétit animal par sa capacité à être informé par la raison et à se soumettre à la délibération (''bouleusis''). L'homme vertueux n'est pas celui qui supprime ses désirs, mais celui qui, par l'habitude et l'éducation, parvient à désirer ce que la raison juge bon : « L'homme tempérant désire les choses qu'il faut, comme il faut, et quand il faut »<ref>Aristote, ''Éthique à Nicomaque'', III, 12, 1119b15-18, trad. J. Tricot, Paris, Vrin, 1994, p. 164.</ref>. La vertu (''aretê'') n'est donc pas la négation du désir mais sa juste mesure, sa mise en forme par la raison pratique. L'incontinent (''akratês''), celui qui agit contre son meilleur jugement sous la pression du désir, constitue un cas philosophique crucial qui révèle la complexité des rapports entre raison et désir<ref>Aristote, ''Éthique à Nicomaque'', VII, 1-10, 1145a15-1152a35, trad. J. Tricot, op. cit., p. 338-372.</ref>.
=== Les sagesses hellénistiques : maîtriser ou éradiquer le désir ===
==== Épicure : la classification des désirs et le calcul des plaisirs ====
Épicure élabore une théorie du bonheur fondée sur une classification rigoureuse des désirs. Il distingue trois catégories : les désirs naturels et nécessaires (boire, manger, se protéger du froid), les désirs naturels mais non nécessaires (les plaisirs raffinés de la table, les plaisirs sexuels), et les désirs ni naturels ni nécessaires (la gloire, le pouvoir, la richesse illimitée)<ref>Épicure, ''Lettre à Ménécée'', 127-128, trad. J.-F. Balaudé, Paris, Le Livre de Poche, 2009, p. 44-46 ; voir aussi Diogène Laërce, ''Vies et doctrines des philosophes illustres'', X, 149.</ref>. Seuls les premiers méritent d'être satisfaits sans réserve ; les seconds peuvent être satisfaits avec modération ; les troisièmes doivent être éliminés, car ils engendrent un désir infini, source de trouble (''tarakhê'') et de souffrance.
Le bonheur épicurien réside dans l'ataraxie (absence de trouble de l'âme) et l'aponie (absence de douleur du corps). Contrairement à une interprétation courante, Épicure ne prône pas la multiplication des plaisirs, mais leur sélection rationnelle : « Tout plaisir, parce qu'il a une nature appropriée à la nôtre, est un bien ; cependant tout plaisir n'est pas à choisir »<ref>Épicure, ''Lettre à Ménécée'', 129, trad. J.-F. Balaudé, Paris, Le Livre de Poche, 2009, p. 47.</ref>. Le sage épicurien pratique un ''calcul des plaisirs'' (''logismos'') qui met en balance le plaisir attendu et les douleurs susceptibles de suivre. Le désir n'est pas mauvais en lui-même, mais il doit être borné par la compréhension de la nature : le corps se satisfait de peu, et c'est l'opinion fausse qui crée les désirs démesurés.
==== Le stoïcisme : le désir comme passion et le consentement rationnel ====
Pour les stoïciens, le désir (''epithumia'') figure parmi les quatre passions fondamentales (avec la crainte, le plaisir et la peine), et il se définit comme un « élan irrationnel » ou un « mouvement de l'âme contraire à la raison »<ref>Diogène Laërce, ''Vies et doctrines des philosophes illustres'', VII, 110-116, trad. M.-O. Goulet-Cazé (dir.), Paris, Le Livre de Poche, 1999, p. 880-885.</ref>. Les passions résultent de jugements erronés sur la valeur des choses : elles consistent à prendre pour des biens ou des maux ce qui n'est en réalité qu'indifférent (''adiaphoron''). Désirer la richesse ou la santé, c'est leur attribuer une valeur qu'elles n'ont pas et se condamner au malheur.
Épictète pousse cette position à son terme en faisant de la distinction entre « ce qui dépend de nous » (nos jugements, nos impulsions) et « ce qui ne dépend pas de nous » (le corps, la fortune, la réputation) le fondement de toute sagesse : « Ne demande pas que les choses arrivent comme tu le désires, mais désire qu'elles arrivent comme elles arrivent, et tu couleras des jours heureux »<ref>Épictète, ''Manuel'', VIII, trad. É. Bréhier, dans ''Les Stoïciens'', Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1962, p. 1113.</ref>. L'idéal stoïcien n'est pas, à proprement parler, l'éradication de toute impulsion, mais la substitution aux passions irrationnelles de mouvements conformes à la raison (''eupatheia'') : la joie rationnelle au lieu du plaisir passionnel, la vigilance raisonnable au lieu de la crainte, la volonté rationnelle (''boulêsis'') au lieu du désir aveugle<ref>Cicéron, ''Tusculanes'', IV, 6, 12-14, trad. J. Humbert, Paris, Les Belles Lettres, 1960, p. 14-16.</ref>.
Marc Aurèle, dans ses ''Pensées pour moi-même'', met en pratique ce que le commentateur Pierre Hadot a nommé la « discipline du désir » (à côté de la discipline de l'assentiment et de la discipline de l'action), en l'articulant étroitement à la physique stoïcienne<ref>Hadot, Pierre, ''La Citadelle intérieure. Introduction aux Pensées de Marc Aurèle'', Paris, Fayard, 1992, p. 101-124.</ref>. Puisque tout obéit au ''logos'' universel et que chaque événement s'insère dans l'enchaînement nécessaire des causes cosmiques, le sage ne peut raisonnablement désirer que les choses soient autrement qu'elles ne sont. Marc Aurèle s'exerce ainsi à accueillir chaque événement — maladie, ingratitude d'autrui, menace de mort — comme l'expression d'un ordre qui le dépasse : « Tout ce qui arrive, arrive justement »<ref>Marc Aurèle, ''Pensées pour moi-même'', IV, 10, trad. É. Bréhier, dans ''Les Stoïciens'', op. cit., p. 1159.</ref>. La discipline du désir ne consiste pas en un renoncement morne, mais en une conversion du regard : ce que le profane subit comme un malheur, le sage l'accueille comme un fragment de l'ordre universel auquel il consent librement. Il s'agit, au sens propre, de vouloir ce qui arrive, c'est-à-dire de faire coïncider son désir particulier avec le mouvement de la nature universelle, de sorte que rien ne puisse troubler l'âme<ref>Marc Aurèle, ''Pensées pour moi-même'', V, 8 et VIII, 7, trad. É. Bréhier, dans ''Les Stoïciens'', op. cit., p. 1166, 1190.</ref>.
== Pensée médiévale : le désir entre concupiscence et charité ==
=== Augustin : le désir comme amour détourné ===
Augustin d'Hippone hérite de la pensée platonicienne du désir comme manque, mais la transforme profondément dans un cadre chrétien. Tout désir humain est, en son fond, désir de Dieu : « Tu nous as faits pour toi, Seigneur, et notre cœur est inquiet jusqu'à ce qu'il repose en toi »<ref>Augustin, ''Confessions'', I, 1, 1, trad. P. de Labriolle, Paris, Les Belles Lettres, 1996, p. 1.</ref>. Mais ce désir fondamental est corrompu par le péché originel, qui détourne l'amour de Dieu vers les créatures. Augustin distingue ainsi la ''cupiditas'' (concupiscence, amour désordonné des biens terrestres) de la ''caritas'' (charité, amour de Dieu et des créatures en Dieu)<ref>Augustin, ''De Doctrina Christiana'', III, 10, 16, trad. M. Moreau, Paris, Institut d'Études Augustiniennes, coll. « Bibliothèque augustinienne », vol. 11/2, 1997, p. 256-259 ; voir aussi ''La Cité de Dieu'', XIV, 28, trad. G. Combès, Paris, Desclée de Brouwer, coll. « Bibliothèque augustinienne », 1959, vol. 35, p. 461-463.</ref>. Le désir n'est pas mauvais en son essence, mais dans son orientation : c'est le même amour qui, dirigé vers Dieu, sauve, et qui, dirigé vers les biens périssables, damne.
La pensée augustinienne du désir est ainsi traversée par une tension entre la reconnaissance de la positivité du désir (le désir de Dieu est le mouvement le plus profond de l'âme) et l'expérience de sa corruption (la concupiscence de la chair, la concupiscence des yeux, l'orgueil de la vie). Le récit autobiographique des ''Confessions'' illustre magistralement ce drame intérieur : le jeune Augustin, prisonnier de ses désirs charnels, ne peut se convertir par la seule force de sa volonté. La libération à l'égard du désir désordonné ne s'obtient que par la grâce divine.
=== Thomas d'Aquin : l'intégration scolastique du désir ===
Thomas d'Aquin élabore, dans la ''Somme théologique'', une synthèse entre l'héritage aristotélicien et la théologie chrétienne. Il distingue l'appétit naturel (l'inclination de toute chose vers sa fin propre, commune à tous les êtres), l'appétit sensible (propre aux animaux et aux hommes, lié à la connaissance sensible, et comprenant deux puissances distinctes : le ''concupiscible'', qui porte vers le bien sensible plaisant et fuit le mal pénible — c'est par lui que l'on désire la nourriture ou que l'on fuit la douleur — et l{{'}}''irascible'', qui permet d'affronter les obstacles et les difficultés qui s'opposent à l'obtention du bien ou à la fuite du mal — c'est par lui que l'on se met en colère ou que l'on fait preuve d'audace face au danger) et l'appétit rationnel ou volonté (''voluntas''), propre à l'homme, qui désire le bien universel tel que l'intellect le représente<ref>Thomas d'Aquin, ''Somme théologique'', Ia, q. 80, a. 1-2 et q. 82, a. 1, trad. A.-M. Roguet (dir.), Paris, Cerf, 1984, vol. 1, p. 694-697, 704-706.</ref>.
Les passions ne sont pas, pour Thomas, intrinsèquement mauvaises : ce sont des mouvements de l'appétit sensible qui précèdent le jugement rationnel et qui peuvent être orientés vers le bien par la vertu. Le désir (''desiderium'' ou ''concupiscentia'' au sens neutre) est le mouvement de l'appétit vers un bien absent ; le plaisir (''delectatio'') est le repos dans un bien obtenu. L'amour (''amor'') est la complaisance originelle dans le bien, qui précède et fonde le désir<ref>Thomas d'Aquin, ''Somme théologique'', Ia-IIae, q. 25-27, trad. A.-M. Roguet (dir.), op. cit., vol. 2, p. 184-206.</ref>. La béatitude, fin ultime de tout désir humain, consiste dans la vision de Dieu, qui seule peut combler l'appétit rationnel tourné vers le bien infini.
== De l'âge classique aux Lumières : le désir entre mécanisme et puissance ==
=== Descartes : les passions de l'âme et la générosité ===
Descartes propose, dans ''Les Passions de l'âme'' (1649), une théorie à la fois physiologique et morale du désir. Les passions sont des « perceptions, ou des sentiments, ou des émotions de l'âme, qu'on rapporte particulièrement à elle, et qui sont causées, entretenues et fortifiées par quelque mouvement des esprits »<ref>Descartes, ''Les Passions de l'âme'', art. 27, dans ''Œuvres philosophiques'', éd. F. Alquié, Paris, Garnier, 1973, t. III, p. 979.</ref>. Les « esprits » dont il est ici question sont les ''esprits animaux'', c'est-à-dire, dans la physiologie cartésienne, des particules très fines du sang qui, portées au cerveau par les artères, se meuvent dans les nerfs et les muscles et agissent sur l'âme par l'intermédiaire de la glande pinéale. Les passions ne sont donc pas des événements purement spirituels : elles ont une assise corporelle, et leur force tient à la vigueur des mouvements qui les causent dans le corps. Le désir est l'une des six passions primitives (avec l'admiration, l'amour, la haine, la joie et la tristesse) et se définit comme une « agitation de l'âme causée par les esprits qui la dispose à vouloir pour l'avenir les choses qu'elle se représente lui être convenables »<ref>Descartes, ''Les Passions de l'âme'', art. 86, éd. F. Alquié, op. cit., t. III, p. 1026.</ref>. Le désir est ainsi la seule passion orientée vers l'avenir : là où l'amour et la haine portent sur un objet présent, le désir vise ce qui n'est pas encore obtenu ou ce qu'on veut éviter.
La position cartésienne est remarquable en ce qu'elle refuse de condamner les passions en bloc : « Elles sont toutes bonnes de leur nature, et nous n'avons rien à éviter que leurs mauvais usages ou leurs excès »<ref>Descartes, ''Les Passions de l'âme'', art. 211, éd. F. Alquié, op. cit., t. III, p. 1091.</ref>. La maîtrise du désir ne procède pas de sa suppression mais de l'exercice de la ''générosité'', que Descartes tient pour « la clef de toutes les autres vertus »<ref>Descartes, ''Les Passions de l'âme'', art. 161, éd. F. Alquié, op. cit., t. III, p. 1068.</ref>. La générosité comporte deux composantes : d'une part, la connaissance que rien ne nous appartient véritablement sinon la libre disposition de nos volontés ; d'autre part, la résolution ferme de n'user de cette liberté que pour ce que nous jugeons être le meilleur. Le généreux ne désire que ce qui est en son pouvoir, ne s'afflige pas de ce qui ne l'est pas, et ne méprise jamais personne, car il sait que chacun possède la même liberté de volonté — position qui rapproche Descartes, sur ce point, du stoïcisme, tout en s'en distinguant par la confiance dans le bon usage des passions plutôt que dans leur éradication.
=== Hobbes : le désir comme mouvement vital ===
Thomas Hobbes développe, dans le ''Léviathan'' (1651), une conception intégralement mécaniste du désir. Hobbes applique aux mouvements de l'âme le modèle de la physique galiléenne : de même qu'un corps en mouvement continue de se mouvoir indéfiniment tant que rien ne l'arrête, de même l'organisme humain est traversé par de petits mouvements internes, imperceptibles, que Hobbes nomme ''endeavour'' (conatus, effort). Quand ce mouvement est dirigé vers un objet dont on se représente qu'il contribuera à notre conservation et à notre bien-être, il s'appelle ''désir'' ou ''appétit'' ; quand il s'éloigne de ce que nous jugeons nuisible, il s'appelle ''aversion''. Le plaisir et la douleur ne sont rien d'autre que l'expérience de ces mouvements d'approche et de fuite<ref>Hobbes, ''Léviathan'', chap. VI, trad. G. Mairet, Paris, Gallimard, coll. « Folio essais », 2000, p. 127-132.</ref>.
Hobbes refuse l'idée d'un souverain bien (''summum bonum'') : il n'existe pas de fin dernière qui mettrait un terme au désir. « La félicité de cette vie ne consiste pas dans le repos d'un esprit satisfait. Car il n'existe en réalité ni ce ''finis ultimus'' (fin dernière), ni ce ''summum bonum'' (bien suprême) dont il est question dans les ouvrages des anciens moralistes »<ref>Hobbes, ''Léviathan'', chap. XI, trad. G. Mairet, op. cit., p. 189.</ref>. Le désir est donc perpétuel : la vie humaine est une course ininterrompue où s'arrêter, c'est être dépassé. La puissance — capacité présente de satisfaire ses désirs futurs — devient l'objet principal du désir, car chacun doit s'assurer les moyens de ses satisfactions à venir.
Cette dynamique sans fin a des conséquences politiques décisives. Dans l{{'}}''état de nature'' — situation hypothétique où les hommes vivent sans autorité commune —, les désirs de chacun entrent inévitablement en compétition avec ceux des autres. Hobbes identifie trois causes de conflit inhérentes à la nature humaine : la compétition (pour les biens matériels), la défiance (chacun craignant que l'autre ne le devance) et la gloire (chacun voulant être reconnu et respecté)<ref>Hobbes, ''Léviathan'', chap. XIII, trad. G. Mairet, op. cit., p. 222-225.</ref>. L'état de nature est ainsi une « guerre de chacun contre chacun » (''bellum omnium contra omnes''), non pas au sens d'un combat permanent, mais d'une disposition constante au conflit. C'est pour échapper à cette condition misérable que les hommes acceptent de transférer leurs droits à un souverain absolu — le Léviathan — capable de contenir les désirs par la crainte d'une puissance commune. La philosophie politique hobbesienne naît ainsi directement d'une anthropologie du désir illimité.
=== Spinoza : le désir comme essence de l'homme ===
L'entreprise spinoziste opère une révolution conceptuelle dans la pensée du désir. Dans l{{'}}''Éthique'' (1677), Spinoza définit le désir (''cupiditas'') comme « l'essence même de l'homme, en tant qu'elle est conçue comme déterminée, par une quelconque affection d'elle-même, à faire quelque chose »<ref>Spinoza, ''Éthique'', III, Définitions des affects, 1, trad. B. Pautrat, Paris, Seuil, coll. « Points », 2010, p. 303.</ref>. Le désir n'est pas un accident de la nature humaine, il en est le fond même. Spinoza identifie le désir au ''conatus'' — l'effort par lequel chaque chose persévère dans son être : « L'effort par lequel chaque chose s'efforce de persévérer dans son être n'est rien en dehors de l'essence actuelle de cette chose »<ref>Spinoza, ''Éthique'', III, prop. 7, trad. B. Pautrat, op. cit., p. 219.</ref>. Rapporté à l'âme seule, ce ''conatus'' s'appelle volonté ; rapporté à l'âme et au corps ensemble, il s'appelle appétit (''appetitus'') ; quand l'appétit est accompagné de conscience, il s'appelle désir (''cupiditas'').
La formule la plus célèbre de Spinoza sur le désir renverse de fond en comble la perspective platonicienne et scolastique : « Nous ne désirons pas une chose parce que nous la jugeons bonne, mais au contraire nous la jugeons bonne parce que nous la désirons »<ref>Spinoza, ''Éthique'', III, prop. 9, scolie, trad. B. Pautrat, op. cit., p. 223.</ref>. Le désir n'est plus un manque qui aspire à un bien préexistant ; il est une puissance affirmative qui constitue les valeurs par son mouvement même. Le bien et le mal ne sont pas des qualités intrinsèques des choses, mais des expressions de l'augmentation ou de la diminution de notre puissance d'agir (''potentia agendi'').
L'éthique spinoziste ne consiste donc pas à réprimer les désirs, mais à comprendre leur genèse et à transformer les affects passifs en affects actifs. Spinoza distingue en effet deux régimes du désir. Dans le régime passif, nous sommes déterminés par des causes extérieures que nous ne comprenons pas : nous désirons tel objet, nous haïssons telle personne, nous craignons tel événement sans percevoir l'enchaînement des causes qui produit ces affects en nous. Nous croyons agir alors que nous sommes agis — c'est ce que Spinoza nomme la ''servitude'' (titre de la quatrième partie de l{{'}}''Éthique''). Dans le régime actif, nous comprenons les causes qui nous déterminent, et cette compréhension même transforme la nature de l'affect : la crainte aveugle, une fois comprise dans ses causes, cesse d'être une passion subie et devient un mouvement de l'esprit dont nous sommes la cause adéquate. « Un affect qui est une passion cesse d'être une passion sitôt que nous en formons une idée claire et distincte »<ref>Spinoza, ''Éthique'', V, prop. 3, trad. B. Pautrat, op. cit., p. 487.</ref>. La tristesse, par exemple, qui résulte de la perte d'un bien, peut être atténuée et transformée dès lors que nous comprenons la nécessité de la nature qui a produit cette perte : elle ne disparaît pas entièrement, mais elle perd son emprise tyrannique sur l'esprit.
Spinoza distingue trois genres de connaissance qui correspondent à autant de rapports au désir. Le premier genre (l'imagination, l'opinion, l'expérience vague) nous livre des idées confuses et mutilées : c'est le régime des affects passifs, où nous sommes le jouet de nos passions. Le deuxième genre (la raison) nous donne accès aux notions communes et aux lois générales de la nature : il permet de comprendre les causes de nos affects et d'en diminuer l'emprise. Le troisième genre (la « science intuitive ») saisit l'essence singulière de chaque chose comme découlant de la nature divine : il produit un affect actif suprême, l{{'}}''amour intellectuel de Dieu'' (''amor Dei intellectualis''), béatitude dans laquelle le sage ne cesse pas de désirer mais désire à partir d'une compréhension pleine de sa propre nature et de celle de Dieu<ref>Spinoza, ''Éthique'', V, prop. 25-36, trad. B. Pautrat, op. cit., p. 519-541.</ref>. Le sage spinoziste n'est pas sans désir : il est celui dont le désir est devenu pleinement actif, c'est-à-dire dont la puissance d'agir et de penser s'accroît par la connaissance plutôt que d'être diminuée par l'ignorance.
=== Hume : le désir et la raison esclave des passions ===
David Hume établit, dans le ''Traité de la nature humaine'' (1739-1740), une thèse provocatrice sur le rapport entre raison et désir. La raison, soutient-il, est et ne peut être que l'esclave des passions : « La raison est, et ne doit qu'être, l'esclave des passions ; elle ne peut jamais prétendre à d'autre fonction qu'à les servir et à leur obéir »<ref>Hume, ''Traité de la nature humaine'', II, III, 3, trad. P. Baranger et P. Saltel, Paris, GF-Flammarion, 1991, p. 271.</ref>.
L'argument de Hume repose sur une analyse des opérations respectives de la raison et des passions. La raison, telle que Hume la conçoit, n'a que deux fonctions : découvrir les relations entre les idées (comme en mathématiques et en logique) et établir des faits concernant l'existence réelle des choses (comme dans les sciences de la nature). Or, ni l'une ni l'autre de ces opérations ne peuvent, à elles seules, mettre en mouvement la volonté. La démonstration qu'un triangle possède certaines propriétés ne me pousse à rien ; la constatation que le feu brûle ne me fait reculer que parce que j'ai un désir préalable de ne pas souffrir. La raison peut me dire ''que'' telle chose est le cas et ''comment'' atteindre un objectif donné, mais elle ne peut jamais me fournir l'objectif lui-même : celui-ci vient toujours d'une passion, d'un désir, d'une inclination<ref>Hume, ''Traité de la nature humaine'', II, III, 3, trad. P. Baranger et P. Saltel, op. cit., p. 266-272.</ref>. Il s'ensuit qu'il n'est pas « contraire à la raison de préférer la destruction du monde entier à une égratignure de mon doigt », formule volontairement choquante par laquelle Hume veut montrer que la raison seule ne peut condamner aucune préférence, car les préférences relèvent du domaine des passions, non de celui du vrai et du faux<ref>Hume, ''Traité de la nature humaine'', II, III, 3, trad. P. Baranger et P. Saltel, op. cit., p. 272.</ref>.
Cette position, connue comme la « théorie humienne de la motivation », exercera une influence considérable sur la philosophie morale analytique contemporaine. Elle établit un modèle que l'on peut résumer ainsi : toute action suppose un état conatif (un désir, une préférence, un souhait) qui lui fournit sa direction, et un état cognitif (une croyance) qui lui fournit ses moyens. Sans désir, pas de motivation à agir, quelle que soit la quantité de savoir dont on dispose.
== La philosophie allemande : le désir entre raison, reconnaissance et volonté ==
=== Kant : le désir et la loi morale ===
La philosophie pratique de Kant se construit, d'un certain point de vue, contre le désir, ou plus exactement contre la prétention du désir à fonder la moralité. Dans la ''Critique de la raison pratique'' (1788), Kant définit la faculté de désirer (''Begehrungsvermögen'') comme « la faculté d'être, par ses représentations, cause de la réalité des objets de ces représentations »<ref>Kant, ''Critique de la raison pratique'', Préface, note, trad. J.-P. Fussler, Paris, GF-Flammarion, 2003, p. 83.</ref>. Mais il opère une distinction fondamentale entre les mobiles pathologiques (fondés sur le désir, l'inclination, le plaisir) et le mobile moral (le respect pour la loi). Une action n'a de valeur morale que si elle est accomplie par devoir, c'est-à-dire par respect pour la loi morale universelle, et non par inclination ou pour satisfaire un désir, fût-il le plus noble.
Kant distingue les impératifs hypothétiques (qui commandent sous la condition d'un désir : « si tu veux X, fais Y ») de l'impératif catégorique (qui commande inconditionnellement : « agis de telle sorte que la maxime de ton action puisse être érigée en loi universelle »). Toute éthique fondée sur le désir est, pour Kant, une éthique ''hétéronome'' : elle soumet la volonté à un objet extérieur (le plaisir, le bonheur) au lieu de la laisser se déterminer par sa propre loi<ref>Kant, ''Critique de la raison pratique'', I, I, chap. 1, § 8, théorème IV, trad. J.-P. Fussler, op. cit., p. 117-119.</ref>. Le bonheur (la satisfaction complète de toutes nos inclinations) reste cependant un objet légitime de la raison pratique, mais il ne peut fonder la moralité : il en est la récompense espérée dans le cadre du ''souverain bien'' (l'union de la vertu et du bonheur).
Toutefois, Kant reconnaît que la loi morale elle-même produit un affect : le ''respect'' (''Achtung''), qui est un sentiment suscité par la raison et non par la sensibilité. Le respect est, paradoxalement, le seul « sentiment moral » compatible avec l'autonomie : il est l'effet de la loi sur la sensibilité, l'humiliation de l'amour-propre devant l'exigence inconditionnelle du devoir<ref>Kant, ''Critique de la raison pratique'', I, I, chap. 3, « Des mobiles de la raison pure pratique », trad. J.-P. Fussler, op. cit., p. 183-207.</ref>.
=== Hegel : le désir, la reconnaissance et la dialectique du maître et du serviteur ===
La pensée hégélienne du désir (''Begierde'') s'inscrit dans le mouvement de la ''Phénoménologie de l'esprit'' (1807), où elle constitue un moment décisif de l'itinéraire de la conscience. Hegel introduit le désir au seuil de la section sur la « conscience de soi » (chapitre IV) : la conscience de soi, explique-t-il, est d'abord désir en général (''Begierde überhaupt'')<ref>Hegel, ''Phénoménologie de l'esprit'', chap. IV, « La vérité de la certitude de soi-même », trad. B. Bourgeois, Paris, Vrin, 2018, p. 191-195.</ref>. Pour devenir certaine de soi, la conscience doit nier l'objet extérieur qui se présente à elle : elle le consomme, le détruit, l'assimile. Mais cette négation de l'objet naturel échoue à satisfaire durablement la conscience de soi, car l'objet consommé est immédiatement remplacé par un autre. Le désir naturel est donc pris dans un cercle : il nie l'objet, mais l'objet renaît sans cesse.
La véritable satisfaction du désir exige que la conscience soit reconnue par une autre conscience de soi. Le désir se transforme alors en désir de reconnaissance (''Begehren nach Anerkennung''). C'est dans ce cadre que s'inscrit la célèbre dialectique du maître et du serviteur (''Herrschaft und Knechtschaft''). Deux consciences de soi s'affrontent dans une « lutte pour la reconnaissance » où chacune cherche à faire reconnaître sa liberté par l'autre. L'une, le maître, risque sa vie et soumet l'autre ; celle-ci, le serviteur, choisit la vie et se soumet. Mais cette relation se renverse dialectiquement : le maître, qui jouit par l'intermédiaire du travail du serviteur, dépend en réalité de lui ; le serviteur, par le travail, transforme la nature et acquiert une conscience de soi effective à travers ses œuvres<ref>Hegel, ''Phénoménologie de l'esprit'', chap. IV, B, « Domination et servitude », trad. B. Bourgeois, op. cit., p. 199-210.</ref>.
Alexandre Kojève, dans son ''Introduction à la lecture de Hegel'' (1947), a donné à ces pages une interprétation anthropologique qui a profondément marqué la philosophie française du XXe siècle. Le désir humain, soutient Kojève, diffère du désir animal en ce qu'il est ''désir d'un désir'' : l'homme ne désire pas simplement des objets naturels, il désire être désiré et reconnu par un autre homme. Le désir humain est essentiellement social, et l'histoire est le déploiement de la lutte pour la reconnaissance<ref>Kojève, ''Introduction à la lecture de Hegel'', Paris, Gallimard, coll. « Tel », 1979 [1947], p. 11-34.</ref>.
=== Schopenhauer : le Vouloir-vivre et la souffrance du désir ===
Arthur Schopenhauer, dans ''Le Monde comme volonté et comme représentation'' (1818/1844), élabore la métaphysique du désir la plus sombrement pessimiste de la tradition occidentale. Derrière le monde des phénomènes (le monde comme représentation), Schopenhauer identifie une réalité unique et fondamentale : la Volonté (''Wille''), impulsion aveugle et sans fin, qui se manifeste dans toute la nature, de la force de gravitation aux passions humaines. Le désir humain n'est qu'une expression individuée de ce Vouloir-vivre cosmique<ref>Schopenhauer, ''Le Monde comme volonté et comme représentation'', trad. A. Burdeau, revue par R. Roos, Paris, PUF, coll. « Quadrige », 2014, livre II, § 17-29, p. 141-212.</ref>.
La Volonté est, par essence, insatisfaite : elle est effort sans but, tension sans terme. « Tout vouloir procède d'un besoin, c'est-à-dire d'une privation, c'est-à-dire d'une souffrance »<ref>Schopenhauer, ''Le Monde comme volonté et comme représentation'', livre IV, § 57, trad. A. Burdeau, revue par R. Roos, op. cit., p. 394.</ref>. L'existence humaine oscille entre la douleur du désir insatisfait et l'ennui qui suit la satisfaction — car le désir satisfait cède immédiatement la place à un nouveau désir. La vie est ainsi comparée à un pendule oscillant entre souffrance et ennui. Les échappatoires sont la contemplation esthétique (qui suspend momentanément le désir dans la vision désintéressée des Idées), la compassion morale (qui brise l'illusion de l'individualité) et, de manière plus décisive, la négation ascétique du Vouloir-vivre, que Schopenhauer rapproche de la sagesse bouddhiste et du mysticisme chrétien<ref>Schopenhauer, ''Le Monde comme volonté et comme représentation'', livre IV, § 68-71, trad. A. Burdeau, revue par R. Roos, op. cit., p. 464-516.</ref>.
=== Nietzsche : le désir comme volonté de puissance ===
Nietzsche s'oppose frontalement au pessimisme schopenhauerien en affirmant la positivité du désir et de la vie. Là où Schopenhauer voyait dans la Volonté une impulsion aveugle dont il fallait se libérer, Nietzsche y reconnaît la puissance créatrice qui fait la grandeur de l'existence. Le concept de ''volonté de puissance'' (''Wille zur Macht''), élaboré principalement dans ''Par-delà bien et mal'' (1886) et les fragments posthumes, désigne non pas un simple désir de domination politique ou physique, mais la tendance fondamentale de tout vivant à croître, à se dépasser, à affirmer et à intensifier sa puissance créatrice. « La vie elle-même est essentiellement appropriation, atteinte, conquête de ce qui est étranger et plus faible, oppression, dureté, imposition de ses propres formes, incorporation et, pour le moins et le plus modéré, exploitation »<ref>Nietzsche, ''Par-delà bien et mal'', § 259, trad. P. Wotling, Paris, GF-Flammarion, 2000, p. 256.</ref>. La volonté de puissance traverse le vivant tout entier : elle se manifeste aussi bien dans l'instinct de l'artiste qui crée des formes nouvelles que dans l'effort du penseur qui élabore de nouvelles valeurs, ou dans le courage de celui qui surmonte une épreuve.
Nietzsche critique la tradition philosophique occidentale pour avoir systématiquement dévalué le désir et le corps au profit de l'âme, de la raison et de l'au-delà. Le ''Zarathoustra'' célèbre le corps comme « grande raison » et condamne les « contempteurs du corps » qui trahissent la vie au nom d'idéaux ascétiques<ref>Nietzsche, ''Ainsi parlait Zarathoustra'', I, « Des contempteurs du corps », trad. G.-A. Goldschmidt, Paris, Le Livre de Poche, 1983, p. 49-51.</ref>. L'idéal ascétique — la négation de la vie, du désir, du corps — est l'expression d'une volonté de puissance retournée contre elle-même, d'une vie qui, ne pouvant s'affirmer, préfère vouloir le néant que ne rien vouloir du tout<ref>Nietzsche, ''La Généalogie de la morale'', III, § 28, trad. P. Wotling, Paris, GF-Flammarion, 2002, p. 225-226.</ref>.
La « transvaluation de toutes les valeurs » (''Umwertung aller Werte'') que Nietzsche appelle de ses vœux consiste précisément à renverser cette dépréciation séculaire. Il ne s'agit pas de remplacer une table de valeurs par une autre, mais de substituer à une évaluation fondée sur la négation de la vie (le « non » que l'ascète oppose au désir, au corps, au devenir) une évaluation fondée sur son affirmation (le « oui » que le créateur dit à l'existence dans sa totalité). La doctrine de l{{'}}''éternel retour du même'' constitue l'épreuve suprême de cette affirmation : serais-tu capable de désirer que cette vie, telle qu'elle est, avec toutes ses joies et toutes ses souffrances, revienne éternellement, identique à elle-même, sans que rien n'y soit changé<ref>Nietzsche, ''Le Gai Savoir'', § 341, trad. P. Wotling, Paris, GF-Flammarion, 2007, p. 280.</ref> ? Celui qui peut répondre « oui » à cette question — qui peut vouloir chaque instant de sa vie une infinité de fois — est celui qui a atteint l{{'}}''amor fati'', l'amour du destin, c'est-à-dire le désir affirmatif par excellence : non pas le désir d'autre chose que ce qui est, mais le désir que ce qui est soit exactement ainsi et pas autrement. La sagesse nietzschéenne ne réside donc ni dans la suppression du désir ni dans sa limitation, mais dans son intensification jusqu'à embrasser la totalité de l'existence.
== La philosophie contemporaine : le désir entre manque, production et altérité ==
=== Freud : le désir inconscient et l'économie pulsionnelle ===
L'invention freudienne de la psychanalyse renouvelle en profondeur la question du désir en introduisant la dimension de l{{'}}''inconscient''. Le désir (''Wunsch''), pour Freud, est la tentative de retrouver une satisfaction première, liée à une expérience de plaisir originaire. Le modèle initial est donné dans ''L'Interprétation du rêve'' (1900) : le rêve est un « accomplissement (déguisé) d'un désir (refoulé) »<ref>Freud, ''L'Interprétation du rêve'' [1900], trad. J.-P. Lefebvre, Paris, Seuil, coll. « Points », 2013, p. 197.</ref>. Le désir inconscient est indestructible ; il persiste indéfiniment dans l'inconscient et cherche sans cesse à se frayer un chemin vers la conscience et la satisfaction, en empruntant des voies détournées (rêves, lapsus, symptômes, actes manqués).
Freud distingue le désir du besoin biologique par un mécanisme décisif, qu'il nomme l{{'}}''expérience de satisfaction'' (''Befriedigungserlebnis''). La première fois qu'un besoin (la faim, par exemple) est satisfait, le nourrisson enregistre à la fois la tension déplaisante du besoin et l'image de l'objet qui a procuré la satisfaction (le sein maternel, le lait). Dès lors, chaque retour de la tension fait resurgir la trace mnésique de cette première satisfaction : l'appareil psychique tente de retrouver la perception originaire en la ''réinvestissant'' de l'intérieur, c'est-à-dire en produisant une image hallucinatoire de l'objet satisfaisant. Le désir, au sens freudien, est précisément ce mouvement qui cherche à rétablir la situation de la satisfaction première en réactivant ses traces dans la mémoire<ref>Freud, ''L'Interprétation du rêve'' [1900], trad. J.-P. Lefebvre, Paris, Seuil, coll. « Points », 2013, chap. VII, section C, p. 598-604.</ref>. C'est pourquoi le désir n'est jamais totalement satisfait par un objet réel : il vise moins un objet présent qu'un objet perdu, la répétition d'une expérience originaire qui, en tant que telle, ne peut être reproduite à l'identique.
Le concept de ''pulsion'' (''Trieb'') doit être soigneusement distingué du désir (''Wunsch''). La pulsion désigne la poussée constante, d'origine somatique, qui exige un travail psychique : elle se caractérise par une source (une zone corporelle), un but (la satisfaction), un objet (ce par quoi la satisfaction est atteinte, objet éminemment variable et substituable) et une poussée (sa force motrice)<ref>Freud, « Pulsions et destins de pulsions » [1915], dans ''Métapsychologie'', trad. J. Laplanche et J.-B. Pontalis, Paris, Gallimard, coll. « Folio essais », 1986, p. 18-22.</ref>. La pulsion se situe à la frontière du psychique et du somatique : elle est la représentation psychique d'une excitation corporelle. Le désir, lui, est le scénario psychique dans lequel la pulsion cherche sa satisfaction — scénario qui emprunte des voies détournées (condensation, déplacement) et qui peut être refoulé sans que la pulsion disparaisse. La théorie freudienne des pulsions connaît une évolution majeure avec l'introduction, dans ''Au-delà du principe de plaisir'' (1920), de la dualité entre pulsions de vie (Éros, qui tendent à lier, à unifier, à conserver) et pulsion de mort (Thanatos, qui tend à délier, à détruire, à ramener au niveau de tension zéro), qui complexifie considérablement la théorie en montrant que le désir ne tend pas toujours vers la conservation et le plaisir, mais peut aussi tendre vers la répétition compulsive, la destruction et le retour à l'inanimé<ref>Freud, ''Au-delà du principe de plaisir'' [1920], trad. J. Laplanche et J.-B. Pontalis, dans ''Essais de psychanalyse'', Paris, Payot, coll. « Petite Bibliothèque Payot », 2001, p. 43-115.</ref>.
=== Sartre : le désir et le projet de liberté ===
Jean-Paul Sartre, dans ''L'Être et le Néant'' (1943), inscrit le désir dans sa phénoménologie de la conscience et de la liberté. Sartre distingue deux modes d'être fondamentaux : l{{'}}''en-soi'' (le mode d'être des choses, plein, massif, identique à lui-même — une pierre est une pierre, rien de plus) et le ''pour-soi'' (le mode d'être de la conscience humaine, qui se caractérise par une fissure interne, une distance à soi). La conscience humaine, en effet, n'est jamais purement et simplement ce qu'elle est : le serveur de café qui joue à être serveur n'est pas serveur comme l'encrier est encrier — il peut toujours prendre du recul par rapport à son rôle, l'interroger, le refuser. Inversement, la conscience est toujours déjà engagée vers ce qu'elle n'est pas encore : elle se projette vers des possibles, des situations à venir, des versions d'elle-même qu'elle n'a pas réalisées. C'est le sens de la formule célèbre : le pour-soi « est ce qu'il n'est pas et n'est pas ce qu'il est »<ref>Sartre, ''L'Être et le Néant'', Paris, Gallimard, coll. « Tel », 1976 [1943], p. 33.</ref>.
Ce décalage constitutif de la conscience est précisément ce que Sartre appelle le ''manque''. Le pour-soi est traversé par un défaut d'être : il aspire à la plénitude de l'en-soi (être quelque chose de défini, de stable, de complet) tout en étant condamné à ne jamais l'atteindre, puisque la conscience est par définition ce qui se dépasse sans cesse. Le désir est la manifestation de ce manque ontologique. Désirer, c'est se projeter vers ce qui nous manque, nier le donné au profit du possible. Mais Sartre refuse de penser le désir comme une simple tendance naturelle : le désir est toujours repris et assumé dans un ''projet'' existentiel libre, c'est-à-dire dans un choix fondamental par lequel chaque homme donne un sens à son existence. « Le désir est manque d'être. Il est hanté en son être le plus intime par l'être dont il est désir »<ref>Sartre, ''L'Être et le Néant'', op. cit., p. 127.</ref>. Tout désir particulier (désirer un métier, un amour, une reconnaissance) est l'expression d'un projet plus fondamental par lequel le pour-soi tente — en vain — de combler son manque d'être.
Le désir d'autrui occupe une place centrale dans la phénoménologie sartrienne. Le désir sexuel, analysé dans la troisième partie de ''L'Être et le Néant'' (chapitre 3, « Les relations concrètes avec autrui »), est la tentative de saisir la liberté de l'autre à travers son corps, de s'emparer de sa subjectivité. Mais cette tentative est vouée à l'échec : l'autre, en tant que liberté, m'échappe toujours. Les relations humaines oscillent entre le sadisme (tenter de réduire l'autre à un objet) et le masochisme (se faire objet pour l'autre), sans jamais atteindre la réciprocité parfaite. Cette dialectique tragique du désir intersubjectif illustre la formule célèbre : « L'enfer, c'est les autres »<ref>Sartre, ''Huis clos'', scène 5, Paris, Gallimard, coll. « Folio », 2000 [1944], p. 93.</ref>.
=== Lacan : le désir comme désir de l'Autre ===
Jacques Lacan, dans son retour à Freud à travers les outils de la linguistique structurale et de la philosophie hégélienne, élabore une théorie du désir qui le distingue rigoureusement du besoin et de la demande. Cette distinction tripartite constitue l'un des apports les plus originaux de la pensée lacanienne.
Le ''besoin'' est d'ordre biologique : il porte sur un objet déterminé et se satisfait par cet objet (la faim se satisfait par la nourriture). La ''demande'' apparaît dès lors que le besoin doit passer par le langage pour s'exprimer : le nourrisson qui crie pour obtenir le sein ne formule pas seulement un besoin physiologique, il s'adresse à un autre (la mère) et réclame, au-delà de l'objet nourricier, une preuve d'amour — une présence, une attention inconditionnelle. Or cette dimension d'amour, par nature absolue (on demande d'être aimé sans condition), ne peut jamais être pleinement satisfaite par aucun objet particulier. Le ''désir'' est précisément ce qui reste dans l'écart entre le besoin (qui peut être comblé) et la demande d'amour (qui ne peut pas l'être) : il est « la marge qui se creuse entre la demande de satisfaction du besoin et la demande d'amour »<ref>Lacan, « La signification du phallus » [1958], dans ''Écrits'', Paris, Seuil, 1966, p. 690-691.</ref>. Le désir est donc, par structure, indestructible et insatisfait : il naît de l'impossibilité pour le langage de coïncider avec ce qui le dépasse.
La formule « le désir de l'homme est le désir de l'Autre » constitue le noyau de la théorie lacanienne<ref>Lacan, ''Le Séminaire, livre XI, Les quatre concepts fondamentaux de la psychanalyse'' [1964], Paris, Seuil, coll. « Points », 1990, p. 209.</ref>. L'« Autre » (avec une majuscule) ne désigne pas simplement une autre personne, mais le lieu du langage, de la loi et de la culture — ce grand réservoir symbolique dans lequel le sujet humain est plongé dès sa naissance et qui le précède. La formule signifie au moins deux choses : d'une part, que nous désirons ce que l'Autre (les parents, la société, la culture) valorise et désire — notre désir est modelé par le discours qui nous entoure ; d'autre part, que nous désirons être reconnus, aimés, désirés par cet Autre — nous voulons être l'objet de son désir.
Le désir est en outre structuré par le langage selon le mécanisme de la ''métonymie''. En rhétorique, la métonymie consiste à désigner une chose par une autre qui lui est contiguë (dire « boire un verre » pour « boire le contenu du verre »). De même, le désir glisse indéfiniment d'un objet à un autre par contiguïté : je désire cette voiture, puis ce voyage, puis cette reconnaissance, sans que jamais aucun de ces objets ne satisfasse le désir lui-même. Chaque objet obtenu en appelle un autre, parce qu'aucun n'est le « vrai » objet du désir. Lacan nomme ''objet a'' (prononcé « objet petit a ») ce reste irréductible qui cause le désir sans jamais se laisser saisir. L{{'}}''objet a'' n'est pas un objet réel ni un objet imaginaire : il est ce qui, dans l'expérience du sujet, a été irrémédiablement perdu lors de l'entrée dans le langage (le sein, la voix, le regard, les fèces sont des figures de cet objet), et dont l'absence creuse dans le sujet un vide que rien ne vient combler. C'est ce vide qui relance indéfiniment le mouvement du désir<ref>Lacan, ''Le Séminaire, livre X, L'angoisse'' [1962-1963], Paris, Seuil, 2004, p. 99-120.</ref>. L'angoisse surgit précisément lorsque le sujet se trouve confronté à l{{'}}''objet a'' sans la médiation protectrice du langage et du fantasme.
=== Levinas : le Désir métaphysique et l'altérité absolue ===
Emmanuel Levinas, dans ''Totalité et Infini'' (1961), opère une distinction fondamentale entre le ''besoin'' et le ''Désir'' (avec une majuscule) qui rompt avec l'ensemble de la tradition philosophique antérieure.
Le besoin part de moi et se dirige vers un objet qui peut le combler : j'ai faim, je mange, le besoin est satisfait. Dans le besoin, le sujet se rapporte au monde pour se l'assimiler, pour le ramener à soi : la nourriture ingérée devient mon corps, le savoir acquis devient ma connaissance. Le besoin est donc un mouvement circulaire — il part du Même et y revient. Levinas montre que la plus grande partie de la tradition philosophique a pensé le désir sur ce modèle du besoin : chez Platon, Éros désire le Beau parce qu'il en manque, et la contemplation du Beau comble ce manque ; chez Hegel, la conscience de soi désire l'autre pour s'assurer de sa propre identité ; même chez Freud, le désir cherche à retrouver un objet perdu. Dans tous ces cas, le mouvement vers l'autre aboutit à un retour au même : l'autre est réduit, assimilé, compris (au sens étymologique de « pris avec soi »).
Le Désir métaphysique, au contraire, se porte vers l'absolument Autre (''Autrui''), qui ne peut jamais être assimilé, englobé ni réduit au Même. Ce Désir n'est pas un manque à combler — il ne naît pas d'une privation — mais une ouverture à ce qui excède toute capacité de compréhension et de possession : « Le Désir métaphysique tend vers tout autre chose, vers l'absolument autre »<ref>Levinas, ''Totalité et Infini'', La Haye, Martinus Nijhoff, 1961 ; rééd. Paris, Le Livre de Poche, coll. « Biblio essais », 1990, p. 21.</ref>. Levinas compare ce Désir à celui qu'éprouve l'homme « qui ne manque de rien » pour un pays qu'il n'a jamais connu et dont il ne peut se faire aucune image<ref>Levinas, ''Totalité et Infini'', op. cit., p. 22.</ref>. Ce Désir ne se nourrit pas de ce qu'il atteint ; au contraire, il grandit à mesure qu'il s'approche de l'Autre, parce que l'Autre demeure toujours au-delà de ce que je peux en saisir.
Le lieu par excellence de cette rencontre avec l'absolument Autre est le ''visage'' (''visage d'autrui''). Par « visage », Levinas n'entend pas les traits physiques d'un individu — un ensemble de caractéristiques que je pourrais décrire, comparer, classer — mais la manière dont autrui se présente à moi dans sa nudité et sa vulnérabilité, en excédant toute image que je pourrais m'en former. Le visage ne se laisse pas contenir dans une représentation : il « déborde » toute idée que j'en ai. C'est pourquoi il commande éthiquement : le visage d'autrui, dans sa fragilité exposée, me dit « tu ne tueras point » avant toute parole et ouvre la dimension éthique comme responsabilité infinie pour l'autre homme<ref>Levinas, ''Totalité et Infini'', op. cit., p. 211-214.</ref>. Le Désir levinassien n'est donc pas un affect psychologique parmi d'autres, mais une structure éthique fondamentale : il est le rapport à l'infini, l'impossibilité de se refermer sur soi, l'appel de l'autre qui précède et fonde toute subjectivité. Avant même que je me constitue comme sujet autonome, je suis déjà requis par le visage d'autrui.
=== Girard : le désir mimétique ===
René Girard, dans ''Mensonge romantique et vérité romanesque'' (1961) puis dans ''La Violence et le Sacré'' (1972), développe la théorie du ''désir mimétique''. Contre l'illusion romantique d'un désir spontané et autonome — l'idée que nos désirs naîtraient du fond de notre moi authentique, sans influence extérieure —, Girard soutient que le désir humain est toujours médiatisé par un tiers : nous ne désirons jamais directement un objet pour ses qualités propres, mais nous désirons ce qu'un autre — le ''médiateur'' ou le ''modèle'' — désire ou semble désirer. Le désir est essentiellement ''triangulaire'' : il suppose un sujet, un objet et un modèle<ref>Girard, ''Mensonge romantique et vérité romanesque'', Paris, Grasset, 1961 ; rééd. Paris, Hachette, coll. « Pluriel », 2011, p. 15-68.</ref>. C'est parce qu'un collègue admiré convoite une promotion que celle-ci nous apparaît soudain comme désirable ; c'est parce qu'un ami vante un lieu de vacances que nous commençons à en rêver ; c'est parce qu'un enfant voit un autre enfant saisir un jouet que ce jouet, jusque-là ignoré, devient l'objet d'un désir intense. Dans tous ces cas, l'objet ne tient pas sa valeur de ses propriétés intrinsèques, mais du désir que le modèle lui porte.
Girard distingue la ''médiation externe'' de la ''médiation interne'', et cette distinction gouverne les conséquences du désir mimétique. Dans la médiation externe, le modèle est trop éloigné du sujet — socialement, géographiquement ou temporellement — pour que la rivalité soit possible : Don Quichotte imite Amadis de Gaule, le lecteur passionné admire un auteur qu'il ne rencontrera jamais. Le désir imité peut alors prendre la forme d'une émulation inoffensive, voire féconde. Dans la médiation interne, en revanche, le modèle est un proche, un pair, un semblable : un collègue, un ami, un voisin. Parce que le sujet et le modèle évoluent dans le même espace social et convoitent les mêmes biens, le désir engendre inévitablement la rivalité. Le modèle se transforme en obstacle — et l'obstacle en modèle : plus la résistance de l'autre est grande, plus l'objet paraît désirable. Le désir s'emballe dans une surenchère réciproque que Girard nomme « rivalité mimétique », et qui peut conduire à la haine et à la violence<ref>Girard, ''Mensonge romantique et vérité romanesque'', op. cit., p. 69-120.</ref>.
Dans ''La Violence et le Sacré'' (1972), Girard prolonge cette analyse en montrant que la rivalité mimétique, lorsqu'elle se généralise à l'ensemble d'une communauté, engendre une crise indifférenciée où chacun devient le rival de tous. La résolution de cette crise passe, selon Girard, par le mécanisme du ''bouc émissaire'' : la violence de tous se concentre sur une victime unique, arbitrairement choisie, dont la mise à mort ou l'expulsion restaure la paix sociale. Le sacré, le sacrifice et les institutions religieuses archaïques sont, dans cette perspective, autant de dispositifs qui canalisent la violence née du désir mimétique<ref>Girard, ''La Violence et le Sacré'', Paris, Grasset, 1972 ; rééd. Paris, Hachette, coll. « Pluriel », 2010, p. 204-247.</ref>. La théorie girardienne a des implications considérables pour l'anthropologie, la sociologie et la critique littéraire, en montrant que l'objet du désir a moins d'importance que le rapport au modèle, et que l'autonomie du désir — la conviction que nous désirons par nous-mêmes, indépendamment de tout modèle — est le « mensonge romantique » que les grands romanciers (Cervantès, Stendhal, Flaubert, Proust, Dostoïevski) ont su démasquer.
=== Deleuze et Guattari : le désir comme production ===
Gilles Deleuze et Félix Guattari, dans ''L'Anti-Œdipe. Capitalisme et schizophrénie'' (1972), entreprennent une critique de part en part de la conception du désir comme manque, qu'ils attribuent à la tradition platonicienne reprise et consolidée par la psychanalyse. Leur thèse centrale est que le désir n'est pas manque mais ''production'' : il est un processus affirmatif, une force qui engendre du réel, et non une aspiration vers un objet absent. « Si le désir produit, il produit du réel. Si le désir est producteur, il ne peut l'être qu'en réalité, et de réalité »<ref>Deleuze et Guattari, ''L'Anti-Œdipe. Capitalisme et schizophrénie'', Paris, Minuit, 1972, p. 34.</ref>.
Pour penser cette productivité du désir, Deleuze et Guattari forgent le concept de « machines désirantes ». L'idée est que le désir ne réside pas dans un sujet qui manquerait d'un objet, mais dans des ''connexions'' entre éléments hétérogènes qui produisent quelque chose de nouveau. Le modèle n'est plus celui du sujet qui tend vers l'objet absent, mais celui du branchement : une machine se connecte à une autre, un flux est émis et coupé par une autre machine qui le recueille et en émet un autre à son tour. Le nourrisson au sein, par exemple, n'est pas un sujet désirant un objet (le lait) dont il manque ; il est une bouche-machine branchée sur un sein-machine : la bouche coupe le flux de lait que le sein produit, et produit à son tour un flux de succion<ref>Deleuze et Guattari, ''L'Anti-Œdipe'', op. cit., p. 7-14.</ref>. Le désir est ce processus de connexion et de production, et non le manque qui précéderait la connexion. Ce modèle vaut à tous les niveaux : social, politique, artistique — partout le désir connecte, branche, produit.
La cible principale de ''L'Anti-Œdipe'' est l'interprétation psychanalytique, et singulièrement œdipienne, du désir. Deleuze et Guattari reprochent à la psychanalyse freudienne de réduire systématiquement le désir aux coordonnées familiales du complexe d'Œdipe — le père, la mère, l'enfant — et de soumettre le désir à la logique du manque et de la castration. Le petit garçon désirerait la mère et craindrait la castration par le père : toute la vie désirante serait ainsi rabattue sur ce triangle familial. Deleuze et Guattari y voient une opération de « territorialisation » du désir : le désir, qui est par nature proliférant, multiple, capable de connexions illimitées, est capturé et enfermé dans un territoire clos (la famille, la structure œdipienne) qui le rend docile et gérable par les institutions sociales<ref>Deleuze et Guattari, ''L'Anti-Œdipe'', op. cit., p. 38-50.</ref>.
À cette territorialisation, Deleuze et Guattari opposent un processus de « déterritorialisation » par lequel le désir échappe aux codes sociaux établis et invente de nouvelles connexions, de nouveaux agencements. La déterritorialisation n'est pas un simple désordre : elle est la capacité créatrice du désir à tracer des lignes de fuite, à produire du nouveau en dehors des cadres assignés. L'enjeu est proprement politique : le désir n'est pas une affaire privée cantonnée au divan du psychanalyste, il est une force sociale et historique. La question fondamentale de la politique, reformulée par Deleuze et Guattari à la suite de Spinoza et de Wilhelm Reich, est de comprendre pourquoi les hommes « désirent leur propre servitude » — pourquoi le désir peut être capturé, réprimé et retourné contre lui-même par les formations de pouvoir, et comment il peut s'en libérer. Deleuze reprend ici l'héritage spinoziste du désir comme puissance d'agir (''conatus'') et l'oppose frontalement à la tradition du désir-manque qui court de Platon à Lacan.
== Problèmes transversaux ==
=== Désir et bonheur : peut-on être heureux en désirant ? ===
La question du rapport entre désir et bonheur traverse toute l'histoire de la philosophie. Deux grandes orientations se dessinent. La première, qu'on peut appeler ''ascétique'' au sens large, considère que le bonheur exige une maîtrise, une limitation ou une suppression du désir. C'est la voie stoïcienne (ne désirer que ce qui dépend de nous), épicurienne (ne désirer que le nécessaire), schopenhauerienne (nier le Vouloir-vivre) et, dans une certaine mesure, kantienne (subordonner le désir à la loi morale). La seconde orientation, qu'on peut appeler ''affirmative'', soutient que le bonheur ne consiste pas à se délivrer du désir mais à l'accomplir, à augmenter sa puissance de désirer et d'agir. C'est la voie spinoziste (la joie comme augmentation de la puissance d'agir), nietzschéenne (l'affirmation tragique de la vie) et deleuzienne (le désir comme production).
Ces deux orientations ne sont d'ailleurs pas toujours aussi opposées qu'il y paraît. L'épicurisme ne vise pas la suppression du plaisir mais sa sélection intelligente ; le stoïcisme ne supprime pas l'impulsion mais la rend rationnelle ; Spinoza ne refuse pas toute modération mais hiérarchise les affects selon leur caractère actif ou passif. La question reste cependant ouverte : le bonheur est-il compatible avec le caractère essentiellement insatisfait du désir, ou exige-t-il un rapport d'apaisement au manque ?
=== Désir et liberté : le désir est-il une servitude ? ===
Le problème de la liberté du désir comporte deux faces. D'une part, le désir peut être compris comme aliénation : dans la mesure où nous ne choisissons pas nos désirs, où ils s'imposent à nous de manière involontaire (Spinoza, Freud, Girard), le désir semble être une forme de détermination extérieure. « Les hommes se croient libres pour la seule raison qu'ils sont conscients de leurs actions mais ignorants des causes par lesquelles ils sont déterminés »<ref>Spinoza, ''Éthique'', III, prop. 2, scolie, trad. B. Pautrat, op. cit., p. 211.</ref>. L'homme qui croit choisir librement un objet de désir obéit en réalité à un enchaînement de causes (éducation, tempérament, rencontres) qu'il ignore. Girard approfondit ce diagnostic : si nos désirs sont toujours empruntés à un modèle, si nous désirons ce qu'un autre désire sans le savoir, alors l'autonomie du sujet désirant est une illusion. Le consommateur qui croit exprimer ses goûts personnels en achetant un produit à la mode ne fait que reproduire le désir d'un modèle social qu'il admire sans se l'avouer.
D'autre part, le désir peut être pensé comme la manifestation même de la liberté. Pour Sartre, c'est par le désir que nous nous projetons vers le possible, que nous nions le donné, que nous nous arrachons au monde tel qu'il est : la conscience humaine est libre précisément parce qu'elle désire ce qui n'est pas encore, et refuse de coïncider avec ce qui est. L'esclave qui désire sa libération, l'artiste qui désire créer une œuvre qui n'existe pas encore, le résistant qui désire un autre ordre politique : dans chacun de ces cas, le désir est l'agent même de la liberté, la force par laquelle l'homme se soustrait à la pesanteur du donné.
Plusieurs philosophes proposent des voies de réconciliation entre désir et liberté, qui ne passent ni par l'abolition du désir ni par la simple obéissance à ses impulsions. Pour Kant, la liberté s'exerce contre le désir, mais au nom d'une exigence plus haute : l'homme est libre non pas quand il satisfait ses inclinations, mais quand il leur résiste au nom de la loi morale qu'il se donne à lui-même. La liberté kantienne est autonomie — la capacité de la volonté à se déterminer par sa propre loi, indépendamment de tout désir sensible. Pour Spinoza, au contraire, la liberté ne s'oppose pas au désir mais le traverse et le transforme : elle consiste à comprendre les causes de nos affects pour devenir la cause adéquate de nos propres actions. L'homme libre, au sens spinoziste, n'est pas celui qui a supprimé ses désirs, mais celui qui les comprend assez pour que ses désirs procèdent de sa propre nature et non de causes extérieures subies passivement. La connaissance ne supprime pas le désir, elle le rend actif.
La psychanalyse complique encore le problème en montrant que le sujet peut être aliéné par ses propres désirs inconscients, qui le déterminent à son insu. Le névrosé, par exemple, répète des schémas de désir (choix amoureux, conduites d'échec, symptômes) sans comprendre qu'il obéit à des scénarios infantiles refoulés. Lacan, en particulier, montre que le désir est structuré par le discours de l'Autre (la famille, la culture, le langage), de sorte que le sujet ne sait pas, le plus souvent, ce qu'il désire vraiment : il prend le désir de l'Autre pour le sien. La liberté, dans cette perspective, ne consiste pas à « faire ce qu'on veut » — car ce que l'on veut est souvent le désir d'un autre — mais à reconnaître et assumer la vérité de son propre désir, à se dégager de l'emprise du discours de l'Autre pour accéder à ce que Lacan appelle le « désir décidé », c'est-à-dire un désir dont le sujet accepte de répondre.
=== Désir et altérité : l'autre comme objet ou comme source du désir ===
Le rapport entre désir et altérité constitue l'un des nœuds les plus féconds de la réflexion contemporaine. Hegel montre que le désir proprement humain est désir de reconnaissance, c'est-à-dire qu'il ne peut se satisfaire que dans un rapport à un autre sujet. Sartre durcit cette intuition en montrant que le désir d'autrui est irréductiblement conflictuel, car chaque conscience cherche à s'affirmer aux dépens de l'autre. Levinas renverse la perspective en montrant que le désir authentique n'est pas désir de posséder l'autre, mais ouverture éthique à l'altérité irréductible d'autrui. Girard complète le tableau en révélant que nous ne désirons jamais sans modèle, que l'autre est toujours déjà présent dans la genèse même de notre désir.
Ces approches dessinent un spectre de positions sur la relation entre désir et altérité : l'autre comme objet du désir (possession, consommation), comme condition du désir (reconnaissance, imitation), comme source du désir (le Désir métaphysique de l'absolument Autre), et comme matrice du désir (le désir comme effet du discours de l'Autre). Le dialogue entre ces perspectives constitue l'un des chantiers les plus vivants de la philosophie contemporaine.
=== Le désir dans la philosophie analytique contemporaine ===
La philosophie analytique contemporaine a développé, à partir de Hume, une réflexion importante sur le rôle du désir dans l'explication de l'action et la fondation de la morale. La ''théorie humienne de la motivation'' (''Humean theory of motivation'') soutient que toute action requiert un état conatif (un désir, un souhait, une préférence) et un état cognitif (une croyance sur les moyens de satisfaire ce désir). Sans désir, pas de motivation à agir ; la raison seule est « inerte ». Cette position, défendue notamment par Donald Davidson et Michael Smith, implique que les jugements moraux, pour être capables de motiver, doivent être liés à des désirs<ref>Smith, Michael, ''The Moral Problem'', Oxford, Blackwell, 1994, p. 7-12, 92-129.</ref>.
Des philosophes anti-humiens, tels que Thomas Nagel et John McDowell, contestent cette thèse en soutenant que la raison peut être par elle-même une source de motivation et que certaines considérations normatives engendrent directement des désirs, plutôt que l'inverse<ref>Nagel, Thomas, ''The Possibility of Altruism'', Princeton, Princeton University Press, 1970, p. 27-32, 47-51.</ref>. Ce débat, qui prolonge sous une forme analytique la controverse entre Kant et Hume, reste l'un des plus actifs de la méta-éthique contemporaine.
Derek Parfit, dans ''On What Matters'' (2011), a proposé une critique influente du subjectivisme du désir en éthique : l'idée que le bien pour une personne est ce qui satisfait ses désirs (théorie du « désir informé ») se heurte à des objections décisives, car les désirs peuvent être irrationnels, mal informés ou autodestructeurs. Le bien ne peut se réduire à ce que nous désirons<ref>Parfit, Derek, ''On What Matters'', Oxford, Oxford University Press, 2011, vol. 1, p. 41-82.</ref>.
== Conclusion ==
Le désir constitue l'une des catégories les plus riches et les plus disputées de la philosophie. Son histoire conceptuelle dessine un champ de tensions irréductibles : entre le manque et la puissance, entre la servitude et la liberté, entre l'individu et l'autre, entre la nature et la culture. La tradition platonicienne, augustinienne et psychanalytique le pense comme manque orienté vers un objet absent — la Forme, Dieu, l'objet perdu. La tradition spinoziste, nietzschéenne et deleuzienne le pense comme puissance affirmative, effort de persévérer et de croître. La tradition hégélienne, sartrienne et lacanienne le pense comme rapport intersubjectif, désir de reconnaissance ou désir de l'Autre. La tradition stoïcienne, kantienne et bouddhiste le pense comme obstacle au bonheur et à la vertu, qu'il s'agit de maîtriser ou de dépasser.
Aucune de ces perspectives ne suffit à elle seule à épuiser le phénomène du désir. Peut-être la philosophie du désir est-elle travaillée par la structure même qu'elle analyse : elle désire comprendre ce qui, dans le désir, échappe toujours partiellement à la compréhension. C'est ce qui fait du désir une notion à la fois incontournable et inépuisable, qui ne cesse de relancer la réflexion philosophique.
== Notes et références ==
{{references|colonnes=2}}
== Bibliographie sélective ==
=== Sources primaires ===
* Aristote, ''De l'âme'', trad. R. Bodéüs, Paris, GF-Flammarion, 1993.
* Aristote, ''Éthique à Nicomaque'', trad. J. Tricot, Paris, Vrin, 1994.
* Augustin, ''Confessions'', trad. P. de Labriolle, Paris, Les Belles Lettres, 1996.
* Augustin, ''De Doctrina Christiana'', trad. M. Moreau, Paris, Institut d'Études Augustiniennes, coll. « Bibliothèque augustinienne », vol. 11/2, 1997.
* Deleuze, G. et Guattari, F., ''L'Anti-Œdipe. Capitalisme et schizophrénie'', Paris, Minuit, 1972.
* Descartes, R., ''Les Passions de l'âme'', dans ''Œuvres philosophiques'', éd. F. Alquié, Paris, Garnier, 1973, t. III.
* Épicure, ''Lettres et Maximes'', trad. J.-F. Balaudé, Paris, Le Livre de Poche, 2009.
* Épictète, ''Manuel'', trad. É. Bréhier, dans ''Les Stoïciens'', Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1962.
* Freud, S., ''L'Interprétation du rêve'' [1900], trad. J.-P. Lefebvre, Paris, Seuil, coll. « Points », 2013.
* Freud, S., ''Essais de psychanalyse'', trad. J. Laplanche et J.-B. Pontalis, Paris, Payot, coll. « Petite Bibliothèque Payot », 2001.
* Girard, R., ''Mensonge romantique et vérité romanesque'', Paris, Grasset, 1961 ; rééd. Paris, Hachette, coll. « Pluriel », 2011.
* Hegel, G.W.F., ''Phénoménologie de l'esprit'', trad. B. Bourgeois, Paris, Vrin, 2018.
* Hobbes, T., ''Léviathan'', trad. G. Mairet, Paris, Gallimard, coll. « Folio essais », 2000.
* Hume, D., ''Traité de la nature humaine'', trad. P. Baranger et P. Saltel, Paris, GF-Flammarion, 1991.
* Kant, I., ''Critique de la raison pratique'', trad. J.-P. Fussler, Paris, GF-Flammarion, 2003.
* Lacan, J., ''Écrits'', Paris, Seuil, 1966.
* Lacan, J., ''Le Séminaire, livre XI, Les quatre concepts fondamentaux de la psychanalyse'', Paris, Seuil, coll. « Points », 1990.
* Levinas, E., ''Totalité et Infini'', La Haye, Martinus Nijhoff, 1961 ; rééd. Paris, Le Livre de Poche, coll. « Biblio essais », 1990.
* Nietzsche, F., ''Le Gai Savoir'', trad. P. Wotling, Paris, GF-Flammarion, 2007.
* Nietzsche, F., ''Par-delà bien et mal'', trad. P. Wotling, Paris, GF-Flammarion, 2000.
* Nietzsche, F., ''La Généalogie de la morale'', trad. P. Wotling, Paris, GF-Flammarion, 2002.
* Platon, ''Le Banquet'', trad. L. Brisson, Paris, GF-Flammarion, 2007.
* Platon, ''Phèdre'', trad. L. Brisson, Paris, GF-Flammarion, 2012.
* Platon, ''République'', trad. G. Leroux, Paris, GF-Flammarion, 2016.
* Sartre, J.-P., ''L'Être et le Néant'', Paris, Gallimard, coll. « Tel », 1976 [1943].
* Schopenhauer, A., ''Le Monde comme volonté et comme représentation'', trad. A. Burdeau, revue par R. Roos, Paris, PUF, coll. « Quadrige », 2014.
* Spinoza, B., ''Éthique'', trad. B. Pautrat, Paris, Seuil, coll. « Points », 2010.
* Thomas d'Aquin, ''Somme théologique'', trad. A.-M. Roguet (dir.), Paris, Cerf, 1984.
=== Études ===
* Bréhier, É., ''Les Stoïciens'', Paris, Gallimard, coll. « Bibliothèque de la Pléiade », 1962.
* Deleuze, G., ''Spinoza. Philosophie pratique'', Paris, Minuit, 1981.
* Ernout, A. et Meillet, A., ''Dictionnaire étymologique de la langue latine. Histoire des mots'', 4{{e}} éd., Paris, Klincksieck, 2001.
* Hadot, P., ''La Citadelle intérieure. Introduction aux Pensées de Marc Aurèle'', Paris, Fayard, 1992.
* Kojève, A., ''Introduction à la lecture de Hegel'', Paris, Gallimard, coll. « Tel », 1979.
* Laplanche, J. et Pontalis, J.-B., ''Vocabulaire de la psychanalyse'', Paris, PUF, coll. « Quadrige », 2007.
* Nagel, T., ''The Possibility of Altruism'', Princeton, Princeton University Press, 1970.
* Parfit, D., ''On What Matters'', Oxford, Oxford University Press, 2011, vol. 1.
* Rabaté, J.-M. (dir.), ''The Cambridge Companion to Lacan'', Cambridge, Cambridge University Press, 2003.
* Smith, M., ''The Moral Problem'', Oxford, Blackwell, 1994.
== Articles connexes ==
* [[Dictionnaire de philosophie/Amour|Amour]]
* [[Besoin]]
* [[Bonheur]]
* [[Conatus]]
* [[Éros]]
* [[Liberté]]
* [[Manque]]
* [[Passion]]
* [[Plaisir]]
* [[Pulsion]]
* [[Reconnaissance]]
* [[Volonté]]
* [[Volonté de puissance]]
160s6cwdy7929bi20ibmw2uo7yjzg4z
Dictionnaire de philosophie/Définition
0
83681
768385
761557
2026-06-23T03:57:45Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768385
wikitext
text/x-wiki
{{DicoPhilo|Définition|lecture=oui}}
La '''définition''' (du latin ''definitio'', dérivé de ''definire'', « délimiter », « borner », composé de ''de-'' et ''finis'', « limite ») est l'opération intellectuelle par laquelle on détermine le contenu d'un concept en énonçant les caractères essentiels de la chose désignée, ou le sens d'un mot. Définir, c'est, au sens étymologique, tracer les frontières d'une notion, la circonscrire pour la distinguer de toute autre. Loin d'être un simple préliminaire technique, la définition constitue l'un des problèmes fondamentaux de la philosophie : elle engage une conception de la connaissance, du langage, de l'essence des choses, et de la nature même de la pensée rationnelle. De Socrate à la philosophie analytique contemporaine, la question « qu'est-ce que définir ? » n'a cessé d'être reprise, approfondie et contestée.
L'enjeu central de la définition est double. D'un côté, elle remplit une fonction ''logique'' : elle permet de fixer la signification des termes employés dans un raisonnement, garantissant ainsi la rigueur et la communicabilité du discours. De l'autre, elle porte une ambition ''métaphysique'' : définir une chose, c'est en énoncer la nature, dire ce qu'elle est véritablement. La tension entre ces deux dimensions — la définition comme convention linguistique et la définition comme saisie de l'essence — traverse l'ensemble de l'histoire de la philosophie.
== La définition dans la philosophie antique ==
=== Socrate et la recherche de la définition ===
La pratique philosophique de la définition commence véritablement avec Socrate, tel que Platon le met en scène dans ses dialogues. Aristote lui-même attribue à Socrate le mérite d'avoir été le premier à rechercher systématiquement des définitions universelles<ref>Aristote, ''Métaphysique'', M, 4, 1078b27-30, trad. J. Tricot, Paris, Vrin, 1991, p. 733-734.</ref>. La méthode socratique consiste à demander à un interlocuteur : « Qu'est-ce que le courage ? », « Qu'est-ce que la piété ? », « Qu'est-ce que la justice ? » — et à montrer, par un examen critique, que les réponses initialement proposées sont insuffisantes.
Dans l'''Euthyphron'', par exemple, Socrate demande à Euthyphron de lui dire ce qu'est la piété. Euthyphron répond d'abord en donnant un exemple particulier : est pieux celui qui poursuit l'impie en justice, comme lui-même le fait contre son propre père. Socrate refuse cette réponse : il ne demande pas un exemple de conduite pieuse, mais ce qui fait que toutes les actions pieuses sont pieuses, autrement dit la forme commune (''eidos'') que partagent tous les cas de piété<ref>Platon, ''Euthyphron'', 6d-e, trad. L. Brisson, dans ''Platon, Œuvres complètes'', Paris, Flammarion, 2008, p. 69.</ref>. La définition doit donc exprimer non pas un cas singulier, mais un caractère universel.
Ce que Socrate exige, c'est une définition qui remplisse plusieurs conditions : elle doit s'appliquer à ''tous'' les cas relevant du concept (condition d'universalité) ; elle ne doit s'appliquer ''qu'à'' ces cas (condition d'exclusivité) ; et elle doit exprimer ce qui explique ''pourquoi'' ces cas appartiennent au concept (condition d'explication). C'est précisément parce que ces conditions sont rarement satisfaites que la plupart des dialogues socratiques se terminent dans l'aporie : l'interlocuteur découvre qu'il ne sait pas ce qu'il croyait savoir.
La démarche socratique illustre ainsi un premier aspect important de la définition : elle n'est pas un simple enregistrement de l'usage courant d'un mot, mais une enquête rationnelle qui vise à atteindre l'essence d'une chose. Ce faisant, la définition se distingue de la simple description (qui énumère des propriétés observables) et de l'exemplification (qui se contente de montrer des cas).
=== Platon : définition et dialectique ===
Platon prolonge et approfondit la démarche socratique en l'inscrivant dans sa théorie des Formes (ou Idées). Pour Platon, définir une chose, c'est saisir la Forme intelligible dont les réalités sensibles participent et dont elles ne sont que des copies imparfaites. La définition véritable n'est donc pas une opération portant sur les mots, mais un accès à une réalité supérieure, stable et éternelle.
Dans les dialogues de maturité et de vieillesse, Platon élabore une méthode spécifique pour parvenir aux définitions : la ''dialectique'', qui procède par ''rassemblement'' (''sunagôgè'') et ''division'' (''diairesis''). Le rassemblement consiste à réunir sous une unité générique une multiplicité de cas dispersés ; la division consiste à partager ce genre en espèces selon des articulations naturelles. Le ''Phèdre'' compare le bon dialecticien à un découpeur habile qui tranche « selon les articulations naturelles » (''kat'arthra hè pephyken''), en veillant à ne briser aucune partie<ref>Platon, ''Phèdre'', 265d-266b, trad. L. Brisson, dans ''Platon, Œuvres complètes'', Paris, Flammarion, 2008, p. 1270-1271.</ref>.
Le ''Sophiste'' offre l'un des exemples les plus développés de cette méthode. Pour définir le sophiste, l'Étranger d'Élée procède par divisions successives à partir de genres englobants : la première tentative part de l'art de l'acquisition (''ktètikè''), la dernière de l'art de la production (''poiètikè''), chaque étape distinguant deux sous-genres, jusqu'à isoler l'espèce recherchée<ref>Platon, ''Le Sophiste'', 218b-232a (premières définitions) et 264d-268d (définition finale), trad. N.-L. Cordero, Paris, GF-Flammarion, 1993.</ref>. La définition obtenue est alors l'enchaînement de toutes les différences parcourues, depuis le genre le plus élevé jusqu'à l'espèce la plus basse.
Cette méthode soulève toutefois un problème fondamental : comment savoir si les divisions opérées correspondent bien à la structure réelle des choses et ne sont pas de simples découpages arbitraires ? Platon tente d'y répondre en soutenant que la dialectique suit les « articulations naturelles » du réel, mais la question restera ouverte dans toute la tradition philosophique ultérieure.
=== Aristote : la théorie classique de la définition ===
C'est Aristote qui formule la théorie de la définition la plus systématique de l'Antiquité, et sans doute la plus influente de toute l'histoire de la philosophie. La définition (''horismos'' ou ''horos'') occupe une place centrale dans l'ensemble de sa logique, de sa métaphysique et de sa biologie.
==== Le genre prochain et la différence spécifique ====
La formule canonique de la définition aristotélicienne est bien connue : définir, c'est énoncer le ''genre prochain'' (''genos'') et la ''différence spécifique'' (''diaphora''). Le genre est la classe plus large à laquelle appartient l'objet défini ; la différence spécifique est le trait qui distingue cet objet de tous les autres membres du même genre. L'exemple classique est celui de l'être humain : son genre prochain est « animal » et sa différence spécifique est « rationnel » ; la définition de l'être humain est donc « animal rationnel »<ref>Aristote, ''Topiques'', I, 8, 103b15-19, trad. J. Brunschwig, Paris, Les Belles Lettres, 2007, t. I, p. 8-9 ; voir aussi VI, 3-4, t. II, p. 50-64.</ref>.
Cette structure n'est pas un simple procédé formel : elle exprime, pour Aristote, la structure métaphysique de la chose elle-même. Le genre correspond à la matière (ce à partir de quoi la chose est faite, en un sens large) et la différence correspond à la forme (ce qui fait que la chose est ce qu'elle est et non autre chose)<ref>Aristote, ''Métaphysique'', Z, 12, 1037b29-1038a35, trad. J. Tricot, Paris, Vrin, 1991, p. 412-415.</ref>. Définir, c'est donc énoncer la forme substantielle d'un être, ce qui constitue son essence.
==== Définition et essence ====
Aristote lie étroitement la définition à la notion d'essence (''to ti èn einai'', littéralement « ce que c'était qu'être » telle chose). La définition véritable, qu'il appelle ''horismos'', est l'énoncé qui exprime l'essence d'une chose<ref>Aristote, ''Seconds Analytiques'', II, 10, 93b29, trad. P. Pellegrin, Paris, GF-Flammarion, 2005, p. 371.</ref>. Il existe cependant d'autres types de formules définitionnelles, qui n'atteignent pas ce niveau d'exigence.
Dans les ''Seconds Analytiques'', Aristote distingue ainsi entre la définition au sens strict (qui énonce l'essence), la définition ''nominale'' (qui indique la signification du nom et sert de point de départ à la recherche) et la définition ''causale'' (qui exprime la cause ou la raison d'être de la chose)<ref>Aristote, ''Seconds Analytiques'', II, 8-10, 93a1-94a19, trad. P. Pellegrin, Paris, GF-Flammarion, 2005, p. 361-377.</ref>. Par exemple, la définition nominale du tonnerre serait « un certain bruit dans les nuages » ; sa définition causale et complète serait « un bruit produit dans les nuages par l'extinction du feu », car elle intègre l'explication du phénomène.
Un point capital est qu'Aristote soutient qu'on ne peut définir, au sens strict, que les ''espèces'' (''eidos'') : les individus singuliers (Socrate, ce cheval-ci), parce qu'ils sont soumis au changement et à la contingence, ne sont pas définissables ; les genres les plus élevés de la classification (l'être, l'un) ne le sont pas non plus, car il n'existe pas de genre plus large qui puisse servir de genre prochain dans leur définition<ref>Aristote, ''Métaphysique'', Z, 15, 1039b27-1040a7, trad. J. Tricot, Paris, Vrin, 1991, p. 423-425.</ref>.
==== Les règles de la bonne définition ====
Dans les ''Topiques'', Aristote établit un ensemble de règles que doit respecter toute définition correcte. La définition doit être ''convertible'' avec le défini : elle doit s'appliquer à tout ce que désigne le terme et à rien d'autre. Elle ne doit pas être ''circulaire'', c'est-à-dire contenir le terme à définir dans sa propre formulation. Elle doit employer des termes ''plus clairs'' que le terme défini, sous peine de n'éclairer en rien. Elle ne doit être ni trop large (s'appliquant à des choses qui ne sont pas du type défini) ni trop étroite (excluant des choses qui en relèvent). Elle ne doit pas être ''négative'' là où une formulation positive est possible, car dire ce qu'une chose n'est pas ne suffit pas à dire ce qu'elle est<ref>Aristote, ''Topiques'', VI, 1-4, 139a-142b, trad. J. Brunschwig, Paris, Les Belles Lettres, 2007, t. II, p. 44-67.</ref>.
Ces règles sont restées fondamentales dans la tradition logique occidentale et continuent d'organiser la réflexion sur les critères d'une bonne définition.
== La définition dans la tradition médiévale et classique ==
=== Porphyre et la classification des prédicables ===
L'héritage aristotélicien est transmis au Moyen Âge principalement par l'intermédiaire de l'''Isagogè'' de Porphyre (IIIe siècle), une introduction aux ''Catégories'' d'Aristote qui devint l'un des textes les plus commentés de la tradition philosophique. Porphyre y distingue cinq « prédicables » (''quinque voces''), c'est-à-dire cinq manières dont un attribut peut être rapporté à un sujet : le genre, l'espèce, la différence spécifique, le propre et l'accident<ref>Porphyre, ''Isagogè'', trad. A. de Libera et A.-Ph. Segonds, Paris, Vrin, 1998, p. 1-10.</ref>. La définition, dans ce cadre, est l'énoncé qui combine le genre et la différence spécifique ; le « propre » (''proprium''), en revanche, est un attribut qui appartient nécessairement à l'espèce mais ne fait pas partie de son essence (par exemple, la capacité de rire chez l'être humain).
Le célèbre « Arbre de Porphyre », reconstruit par les commentateurs ultérieurs (notamment Boèce) à partir de la description textuelle de l'''Isagogè'', constitue une classification hiérarchique des genres et des espèces, partant de la catégorie la plus générale (la substance) et descendant par différences successives jusqu'aux espèces les plus basses et aux individus. Ce schéma a durablement structuré la conception occidentale de la définition comme insertion d'un concept dans une hiérarchie classificatoire.
=== Définitions nominales et définitions réelles ===
Le Moyen Âge latin voit se développer une distinction qui deviendra importante pour la théorie de la définition : la distinction entre ''definitio realis'' (définition réelle) et ''definitio nominalis'' (définition nominale). Si cette distinction a des racines chez Aristote, elle prend une forme explicite et systématique chez les logiciens médiévaux.
La définition ''nominale'' a pour objet de fixer la signification d'un mot : elle indique ce que l'on entend lorsqu'on emploie un certain terme, indépendamment de la question de savoir si le mot désigne réellement quelque chose. La définition ''réelle'' prétend, en outre, énoncer la nature ou l'essence de la chose désignée par le mot. Ainsi, une définition nominale du phénix (« oiseau fabuleux qui renaît de ses cendres ») est possible même si aucun phénix n'existe, tandis qu'une définition réelle suppose l'existence de son objet.
Guillaume d'Ockham reprend cette distinction dans le cadre de sa philosophie ''nominaliste''. Contestant l'existence d'universaux réels, il soutient que les termes universels (comme « homme » ou « animal ») ne désignent pas des natures réellement distinctes existant dans les choses, mais sont des signes qui tiennent lieu, dans le discours mental, de tous les individus singuliers auxquels ils s'appliquent<ref>Guillaume d'Ockham, ''Somme de logique'', I, ch. 14-15, trad. J. Biard, Mauvezin, T.E.R., 1993, p. 60-72.</ref>. La définition ne peut donc plus prétendre exprimer une essence universelle réellement présente dans les choses : elle se limite à expliciter le contenu d'un concept mental, ou la signification conventionnelle d'un mot.
=== La ''Logique de Port-Royal'' ===
La ''Logique ou l'art de penser'' d'Antoine Arnauld et Pierre Nicole (1662), communément appelée ''Logique de Port-Royal'', constitue un moment important dans l'histoire de la théorie de la définition. Les auteurs y distinguent deux grands types de définition : la définition de ''nom'' et la définition de ''chose''.
La définition de nom consiste à « déterminer les idées qu'on attache à un mot » : elle est purement conventionnelle et ne saurait être contestée, puisqu'elle relève d'un libre choix du locuteur. Toute personne est en droit de décider d'appeler « triangle » une figure de trois côtés ; cette convention n'est ni vraie ni fausse, elle est simplement posée<ref>A. Arnauld et P. Nicole, ''La Logique ou l'art de penser'' (1662), I, ch. 12, éd. P. Clair et F. Girbal, Paris, Vrin, 1981, p. 89-93.</ref>. La définition de chose, en revanche, porte sur la nature de l'objet lui-même et non sur l'usage d'un mot : elle est donc susceptible d'être vraie ou fausse, puisqu'elle prétend énoncer ce que la chose est réellement.
Les auteurs insistent sur une règle essentielle : il ne faut jamais confondre ces deux types de définition. En particulier, il est illégitime de déduire des conséquences réelles d'une simple convention de langage. Cette mise en garde anticipe des débats qui continueront d'animer la philosophie moderne et contemporaine.
=== Pascal et la rigueur géométrique ===
Blaise Pascal, dans ''De l'esprit géométrique'' (rédigé vers 1658), élabore une théorie de la définition inspirée par l'idéal de rigueur des mathématiques. Pour Pascal, la définition est un instrument de clarté et de précision qui permet de substituer, au cours d'un raisonnement, une expression abrégée à la description complète qu'elle résume. La définition n'est donc rien d'autre qu'une « imposition de nom » : elle ne prétend pas dire ce qu'est la chose, mais seulement fixer un usage linguistique<ref>B. Pascal, ''De l'esprit géométrique'', dans ''Œuvres complètes'', éd. M. Le Guern, Paris, Gallimard, « Bibliothèque de la Pléiade », 2000, t. II, p. 155-162.</ref>.
Pascal distingue cette définition « de nom », seule légitime en science, de la définition « de chose », qui est à ses yeux toujours contestable. Il soutient que certains termes primitifs, comme « temps », « espace », « mouvement » ou « être », ne peuvent pas être définis sans circularité, car toute tentative de les expliquer par d'autres mots ramène à des notions tout aussi primitives ou plus obscures encore. Ces termes sont compris par une « lumière naturelle » qui précède toute définition<ref>B. Pascal, ''De l'esprit géométrique'', dans ''Œuvres complètes'', éd. M. Le Guern, Paris, Gallimard, « Bibliothèque de la Pléiade », 2000, t. II, p. 157-158.</ref>.
== Définition et philosophie moderne ==
=== Locke : définition et idées ===
John Locke, dans l'''Essai sur l'entendement humain'' (1689), inscrit la question de la définition dans le cadre de sa théorie des idées. Locke opère une distinction fondamentale entre les ''essences nominales'' et les ''essences réelles''. L'essence nominale est l'idée abstraite qu'un groupe de locuteurs attache à un mot : elle résulte de l'opération mentale par laquelle nous sélectionnons certains traits observables et les réunissons sous un nom commun. L'essence réelle est la constitution interne (la « microstructure », dirions-nous aujourd'hui) qui produit les propriétés observables de la chose<ref>J. Locke, ''Essai sur l'entendement humain'' (1689), III, ch. 3, § 15-18, trad. J.-M. Vienne, Paris, Vrin, 2006, p. 63-70.</ref>.
Pour les substances naturelles (l'or, l'eau, un cheval), Locke soutient que nous ne connaissons que l'essence nominale : notre définition de l'or (« métal jaune, lourd, malléable, fusible ») ne fait qu'énumérer les propriétés sensibles que nous avons choisi de retenir. Nous ignorons l'essence réelle qui produit ces propriétés. Nos définitions sont donc toujours provisoires, révisables, et dépendantes de l'état de nos connaissances. En revanche, pour les « modes mixtes » — c'est-à-dire les idées complexes que l'esprit forme librement, comme les concepts juridiques ou moraux —, l'essence nominale et l'essence réelle coïncident, puisque la chose n'est rien d'autre que l'idée que nous en avons<ref>J. Locke, ''Essai sur l'entendement humain'' (1689), III, ch. 5, § 3-6, trad. J.-M. Vienne, Paris, Vrin, 2006, p. 99-105.</ref>.
Cette position de Locke engage une conception ''antiessentialiste'' de la définition : pour les objets naturels, il n'existe pas de définition unique et nécessaire, mais une pluralité de définitions possibles, correspondant aux différents critères de classification que les êtres humains peuvent adopter.
=== Leibniz : définitions et analyse des concepts ===
Gottfried Wilhelm Leibniz propose, dans les ''Nouveaux Essais sur l'entendement humain'' (rédigés en 1703-1704, publiés en 1765), une réponse directe à Locke. Contre le scepticisme lockéen quant à la possibilité de connaître les essences réelles, Leibniz maintient que les définitions peuvent progresser vers une connaissance véritable de la nature des choses. Il distingue pour cela plusieurs degrés de définition, formant une hiérarchie de clarté et de profondeur.
Au niveau le plus bas se trouve la définition ''nominale'', qui permet simplement de reconnaître la chose et de la distinguer des autres, par l'énumération de caractères observables. Au-dessus se situe la définition ''causale'' ou ''génétique'', qui indique comment la chose peut être produite : par exemple, la définition du cercle comme « figure engendrée par le mouvement d'un segment autour de l'une de ses extrémités ». Au sommet se trouve la définition ''réelle adéquate'', qui pousse l'analyse jusqu'aux notions primitives et permet de démontrer la possibilité de l'objet défini<ref>G. W. Leibniz, ''Nouveaux Essais sur l'entendement humain'', III, ch. 3, § 15 et ch. 4, § 5-6, éd. J. Brunschwig, Paris, GF-Flammarion, 1990, p. 250-260.</ref>.
Pour Leibniz, l'idéal de la connaissance est de parvenir à des définitions parfaitement analysées, dans lesquelles chaque composante est elle-même définie jusqu'à ce que l'on atteigne des concepts simples et indéfinissables. Ce programme d'analyse complète est au fondement de son projet de ''characteristica universalis'', une langue symbolique parfaite dans laquelle toutes les vérités pourraient être calculées à partir de définitions.
=== Kant : les limites de la définition ===
Emmanuel Kant opère un tournant important dans la théorie de la définition en distinguant rigoureusement les conditions de la définition selon les domaines de connaissance. Dans la ''Critique de la raison pure'' (1781/1787), il soutient que seuls les concepts mathématiques sont véritablement définissables, car ils sont ''construits'' par l'esprit : le mathématicien crée lui-même le concept de cercle ou de triangle et peut donc en donner une définition parfaitement exacte et complète.
Les concepts empiriques (comme celui de l'or ou de l'eau), en revanche, ne peuvent jamais être définis de manière définitive, car l'expérience peut toujours révéler de nouvelles propriétés ou en invalider d'anciennes. Et les concepts philosophiques purs (comme ceux de substance, de causalité ou de justice) ne sont pas non plus définissables au sens strict, car le philosophe ne construit pas son concept mais cherche à analyser un concept déjà donné dans l'usage, et cette analyse demeure toujours incertaine<ref>E. Kant, ''Critique de la raison pure'', « Doctrine transcendantale de la méthode », ch. 1, sect. 1, A 727-A 732 / B 755-B 760, trad. A. Renaut, Paris, GF-Flammarion, 2006, p. 618-621.</ref>.
Kant propose donc de réserver le terme de « définition » (''Definition'') aux mathématiques et de parler, pour la philosophie, d{{'}}''exposition'' (''Exposition'') ou d{{'}}''explication'' (''Explikation'') : ces termes indiquent que le travail d'analyse conceptuelle est toujours provisoire, approximatif, et susceptible d'être révisé<ref>E. Kant, ''Critique de la raison pure'', A 729 / B 757, trad. A. Renaut, Paris, GF-Flammarion, 2006, p. 619.</ref>. Cette prudence kantienne exercera une influence durable sur toute la réflexion ultérieure relative aux limites de la définition.
== La définition dans la logique et la philosophie contemporaines ==
=== Frege et la révolution logique ===
Gottlob Frege, fondateur de la logique mathématique moderne, accorde à la définition un rôle important dans son entreprise de fondation de l'arithmétique. Dans ''Les Fondements de l'arithmétique'' (1884), il critique sévèrement l'absence de rigueur des définitions courantes du concept de nombre et entreprend de fournir une définition purement logique du nombre cardinal.
Pour Frege, une définition doit satisfaire à deux exigences fondamentales : elle doit fixer de manière ''univoque'' la référence (''Bedeutung'') du terme défini, de telle sorte que pour tout objet, on puisse déterminer s'il tombe ou non sous le concept ; et elle doit être ''féconde'', c'est-à-dire permettre de dériver des connaissances nouvelles que la simple analyse du terme n'aurait pas révélées<ref>G. Frege, ''Les Fondements de l'arithmétique'' (1884), § 62-69, trad. C. Imbert, Paris, Seuil, 1969, p. 178-191.</ref>.
Frege introduit en outre la distinction entre ''sens'' (''Sinn'') et ''référence'' (''Bedeutung'') dans son article « Sens et référence » (1892), qui a des conséquences profondes pour la théorie de la définition. Deux expressions peuvent avoir la même référence (désigner le même objet) tout en ayant un sens différent (en le présentant de manières distinctes) : « l'étoile du matin » et « l'étoile du soir » désignent toutes deux la planète Vénus, mais la donnent à penser différemment<ref>G. Frege, « Sens et référence » (1892), trad. C. Imbert, dans ''Écrits logiques et philosophiques'', Paris, Seuil, 1971, p. 102-126.</ref>. La définition fixe donc non seulement l'objet désigné, mais aussi la manière de le concevoir.
=== Russell et les définitions contextuelles ===
Bertrand Russell apporte une contribution majeure à la théorie de la définition en introduisant la notion de ''définition contextuelle'' (ou « en usage »). Dans sa théorie des descriptions définies (1905), Russell montre qu'une expression comme « le roi actuel de la France » peut être parfaitement analysée et comprise sans qu'on soit obligé de supposer l'existence d'un objet correspondant. La définition de cette expression ne se donne pas en isolant un objet qu'elle désignerait, mais en montrant comment elle fonctionne dans le contexte d'une proposition complète<ref>B. Russell, « De la dénotation » (1905), trad. J.-M. Roy, dans ''Écrits de logique philosophique'', Paris, PUF, 1989, p. 201-218.</ref>.
Plus largement, dans les ''Principia Mathematica'' (1910-1913), Russell et Whitehead distinguent entre les ''définitions explicites'', qui introduisent un symbole abréviatif pour une expression plus complexe (et que l'on pourrait en principe toujours éliminer en substituant l'expression complète au symbole), et les ''définitions en usage'' (''definitions in use''), qui fixent la signification d'un symbole non pas en l'isolant, mais en spécifiant les conditions de vérité des propositions qui le contiennent<ref>A. N. Whitehead et B. Russell, ''Principia Mathematica'' (1910), Cambridge, Cambridge University Press, 2e éd. 1925, vol. I, p. 11-12, 66-68.</ref>. Les définitions en usage se distinguent des ''définitions implicites'' au sens strict, qui sont celles données indirectement par un système d'axiomes (les axiomes de la géométrie, par exemple, définissent implicitement les termes « point » et « droite »).
=== Carnap et l'explication ===
Rudolf Carnap, figure majeure du positivisme logique, développe dans ''Logical Foundations of Probability'' (1950) la notion d{{'}}''explication'' (''explication''), qui constitue l'une des contributions les plus fécondes du XXe siècle à la théorie de la définition. Pour Carnap, de nombreux concepts philosophiques et scientifiques sont d'abord formulés de manière vague et imprécise (ce qu'il appelle l{{'}}''explicandum''), et le travail du philosophe ou du savant consiste à leur substituer un concept plus exact et mieux défini (l{{'}}''explicatum'').
L'explication n'est donc ni une pure convention arbitraire, ni une prétendue saisie d'une essence éternelle : c'est une ''reconstruction rationnelle'' d'un concept préexistant, guidée par des critères pratiques et théoriques. Carnap énumère quatre conditions qu'un bon explicatum doit remplir : il doit être (1) ''similaire'' à l'explicandum (couvrir approximativement les mêmes cas), (2) ''exact'' (formulé de manière rigoureuse dans un cadre conceptuel précis), (3) ''fécond'' (permettre de formuler des lois et des généralisations), et (4) ''simple'' (aussi économique que possible)<ref>R. Carnap, ''Logical Foundations of Probability'', Chicago, University of Chicago Press, 1950, p. 5-8.</ref>.
L'explication carnapienne reconnaît ainsi qu'il peut y avoir plusieurs explicata acceptables pour un même concept vague, et que le choix entre eux dépend des objectifs de la recherche. Cette position marque l'abandon de l'idée selon laquelle chaque concept possède une unique « vraie » définition.
=== Wittgenstein et la critique de la définition classique ===
Ludwig Wittgenstein, dans les ''Recherches philosophiques'' (publiées en 1953), formule l'une des critiques les plus fortes de la conception classique de la définition. Il conteste l'idée, centrale depuis Socrate, selon laquelle les choses réunies sous un même concept partagent nécessairement une propriété commune qui constitue l'essence de ce concept et que la définition devrait énoncer.
Wittgenstein propose l'exemple fameux des ''jeux'' (''Spiele''). Qu'y a-t-il de commun entre les jeux de cartes, les jeux de balle, les jeux olympiques, les jeux de mots ? Si l'on cherche une propriété unique partagée par tous les jeux, on ne la trouve pas : certains jeux sont compétitifs, d'autres non ; certains impliquent un gagnant, d'autres non ; certains suivent des règles strictes, d'autres sont libres. Ce que l'on observe, c'est un réseau de ''ressemblances de famille'' (''Familienähnlichkeiten'') : les différents jeux se ressemblent les uns aux autres de diverses manières, sans qu'aucun trait commun ne les réunisse tous<ref>L. Wittgenstein, ''Recherches philosophiques'' (1953), § 65-71, trad. F. Dastur, M. Élie et al., Paris, Gallimard, 2004, p. 64-69.</ref>.
Si cette analyse est correcte, la forme classique de la définition par genre et différence est inapplicable à de nombreux concepts courants. Wittgenstein ne soutient pas pour autant que ces concepts sont confus ou mal formés : ils fonctionnent parfaitement bien dans la pratique linguistique, précisément parce que la compréhension d'un mot ne suppose pas la maîtrise d'une définition explicite. Comprendre un mot, c'est savoir l'employer correctement dans des contextes variés, et non posséder une formule définitionnelle.
Wittgenstein distingue par ailleurs entre plusieurs modes d'explication de la signification d'un mot. Outre la définition ''analytique'' classique, il accorde une place importante à la ''définition ostensive'' — celle qui consiste à montrer un échantillon en disant « ceci est du rouge », « ceci s'appelle un chat ». Or la définition ostensive, loin d'être un geste simple et transparent, est toujours ambiguë : lorsque l'on montre un objet rouge, on peut vouloir désigner la couleur, la forme, la matière, ou l'objet lui-même. Le geste de montrer ne se suffit pas à lui-même ; il présuppose déjà un cadre d'interprétation<ref>L. Wittgenstein, ''Recherches philosophiques'' (1953), § 28-38, trad. F. Dastur, M. Élie et al., Paris, Gallimard, 2004, p. 37-45.</ref>.
=== Quine et la critique de l'analyticité ===
Willard Van Orman Quine, dans l'article « Deux dogmes de l'empirisme » (1951), formule une critique importante de la distinction entre vérités analytiques (vraies en vertu de la seule signification des termes, et donc des définitions) et vérités synthétiques (vraies en vertu de l'expérience). L'enjeu pour la théorie de la définition est considérable.
Si une définition fixe la signification d'un mot, alors un énoncé conforme à cette définition (par exemple « tous les célibataires sont non mariés ») devrait être ''analytiquement'' vrai — vrai en vertu de la seule signification des termes. Or Quine montre que toute tentative de fonder rigoureusement la notion de synonymie (identité de signification) ou d'analyticité tombe dans la circularité : on explique la synonymie par la définition, la définition par la synonymie, et chacune par l'analyticité, sans parvenir à un fondement indépendant<ref>W. V. O. Quine, « Deux dogmes de l'empirisme » (1951), dans ''Du point de vue logique'', trad. S. Laugier, Paris, Vrin, 2003, p. 49-81.</ref>.
Quine propose à la place une conception ''holiste'' de la signification : les termes et les énoncés n'ont pas de contenu isolé que la définition pourrait énoncer, mais tirent leur sens de leur place dans un réseau global de croyances et de théories. Aucun énoncé n'est à l'abri de la révision au nom de l'expérience, même ceux qui semblent les plus « définitionnels ». La différence entre une définition et une hypothèse empirique n'est donc qu'une différence de degré, non de nature.
Quine reconnaît néanmoins que la définition ''stipulative'' constitue le seul cas où la notion de définition est parfaitement claire, car elle ne présuppose aucune synonymie préalable : un savant peut décider d'employer un terme dans un sens précis dans le cadre d'une théorie donnée, et cette convention est opératoire sans qu'il soit nécessaire de lui attribuer un fondement métaphysique<ref>W. V. O. Quine, « Deux dogmes de l'empirisme » (1951), dans ''Du point de vue logique'', trad. S. Laugier, Paris, Vrin, 2003, p. 58-61.</ref>.
=== Kripke : nécessité et définition ===
Saul Kripke, dans ''La Logique des noms propres'' (''Naming and Necessity'', 1972/1980), renouvelle profondément la question de la définition en distinguant entre propriétés ''essentielles'' (appartenant nécessairement à une chose) et propriétés qui servent à ''fixer la référence'' d'un terme.
Kripke soutient que pour les termes désignant des espèces naturelles (comme « or », « eau », « tigre »), la définition courante (par exemple « métal jaune, malléable, etc. ») ne fait que fixer la référence : elle identifie la substance à laquelle on donne le nom. Mais une fois la référence fixée, c'est la ''nature interne'' de la substance qui détermine si un objet donné appartient ou non à l'espèce. Ainsi, si les chimistes découvrent que l'or est l'élément de numéro atomique 79, cela ne constitue pas une convention linguistique, mais la découverte d'une propriété essentielle : toute substance qui ne possède pas cette structure interne n'est ''pas'' de l'or, même si elle présente toutes les apparences sensibles de l'or<ref>S. Kripke, ''La Logique des noms propres'' (1980), trad. P. Jacob et F. Récanati, Paris, Minuit, 1982, p. 108-121.</ref>.
Kripke distingue ainsi entre les propriétés qui sont découvertes ''a posteriori'' par la recherche empirique et les propriétés qui sont ''nécessaires'' (ne pourraient pas être autrement). Contre l'identification traditionnelle de l'a priori et du nécessaire, il montre que certaines vérités sont ''nécessaires'' mais connues ''a posteriori'' : « l'eau est H₂O » est une telle vérité. La définition des espèces naturelles n'est donc pas une simple convention : elle vise à découvrir la nature réelle de la chose.
Hilary Putnam aboutit à des conclusions voisines avec sa célèbre expérience de pensée de la « Terre jumelle ». Imaginons une planète identique en tout point à la Terre, sauf que le liquide incolore, inodore, potable, qui remplit les lacs et les rivières n'est pas H₂O mais un composé chimiquement différent (que Putnam appelle XYZ). Putnam soutient que le mot « eau » ne désigne pas la même chose sur les deux planètes, même si les locuteurs en donnent la même description superficielle<ref>H. Putnam, « The Meaning of 'Meaning' » (1975), dans ''Mind, Language and Reality. Philosophical Papers'', vol. 2, Cambridge, Cambridge University Press, 1975, p. 215-271.</ref>. La signification d'un terme d'espèce naturelle n'est donc pas entièrement déterminée par ce que les locuteurs ont « dans la tête » : elle dépend aussi de la structure du monde.
== Types de définitions : une typologie ==
La tradition philosophique et logique a progressivement distingué un grand nombre de types de définitions. Les principales distinctions sont les suivantes.
=== Définition analytique et définition par synonyme ===
La '''définition analytique''' est la forme la plus classique : elle décompose le concept défini en ses éléments constitutifs, idéalement selon le modèle aristotélicien du genre et de la différence. Elle est dite « par analyse » parce qu'elle explicite le contenu implicite du concept. Par exemple : « un triangle est un polygone ayant trois côtés ».
La '''définition par synonyme''' est le cas le plus simple : elle propose un mot ou une expression équivalente au terme à définir (par exemple, « ophtalmologue » signifie « médecin spécialiste des yeux »). Elle est utile pour le lexique mais ne constitue pas un véritable travail d'analyse.
=== Définition stipulative et définition descriptive ===
La '''définition stipulative''' est celle par laquelle un auteur ou un locuteur décide d'employer un mot dans un sens déterminé, sans prétendre décrire un usage préexistant. Le scientifique qui définit un terme technique nouveau, le législateur qui fixe le sens juridique d'un mot, le philosophe qui précise le sens dans lequel il emploiera une expression, pratiquent la définition stipulative. Comme le notait déjà la ''Logique de Port-Royal'', elle n'est ni vraie ni fausse : elle est seulement plus ou moins utile ou commode.
La '''définition descriptive''' (ou ''lexicale''), à l'inverse, cherche à rendre compte de l'usage effectif d'un mot dans une langue donnée, tel qu'un dictionnaire le consigne. Elle peut être exacte ou inexacte, selon qu'elle restitue fidèlement ou non la manière dont les locuteurs emploient le terme.
=== Définition ostensive ===
La '''définition ostensive''' consiste à indiquer la signification d'un terme en montrant un ou plusieurs exemplaires de ce qu'il désigne. Elle joue un rôle important dans l'apprentissage du langage : c'est en montrant des objets rouges que l'on enseigne à un enfant le sens du mot « rouge ». Comme Wittgenstein l'a montré, la définition ostensive a ses limites et ses ambiguïtés propres, mais elle demeure indispensable pour les termes qui désignent des qualités sensibles ou des objets concrets.
=== Définition opérationnelle ===
La '''définition opérationnelle''', développée par le physicien Percy Bridgman dans ''The Logic of Modern Physics'' (1927), définit un concept par l'ensemble des opérations (mesures, expériences, procédures) qui permettent de l'identifier ou de le quantifier. Par exemple, la longueur d'un objet est définie par l'ensemble des opérations de mesure que l'on effectue pour la déterminer<ref>P. W. Bridgman, ''The Logic of Modern Physics'', New York, Macmillan, 1927, p. 5-9.</ref>. Ce type de définition a exercé une influence considérable dans les sciences expérimentales et en psychologie, mais a été critiqué pour sa tendance à réduire la signification d'un concept à ses conditions de vérification empirique.
=== Définition récursive ===
La '''définition récursive''' (ou ''par récurrence'', ou ''inductive'') définit un concept en deux étapes : d'abord une ''clause de base'', qui indique les cas les plus simples tombant sous le concept ; puis une ''clause de récurrence'', qui montre comment, à partir de cas déjà reconnus, on peut construire de nouveaux cas. Par exemple, on peut définir les nombres naturels de la façon suivante : (1) 0 est un nombre naturel ; (2) si ''n'' est un nombre naturel, alors ''n'' + 1 est un nombre naturel ; (3) rien d'autre n'est un nombre naturel. Ce type de définition est fondamental en logique et en mathématiques<ref>E. Mendelson, ''Introduction to Mathematical Logic'', 4e éd., Londres, Chapman & Hall, 1997, p. 20-23.</ref>.
== Problèmes philosophiques de la définition ==
=== Le cercle de la définition ===
L'un des problèmes les plus anciens et les plus persistants de la théorie de la définition est celui de la circularité. Toute définition utilise des termes qui, eux-mêmes, devraient être définis ; ces définitions utilisent d'autres termes, et ainsi de suite. La régression menace d'être infinie. Or, si l'on arrête la chaîne à un certain point, on accepte des termes non définis — ce qui semble ruiner l'idéal d'une fondation complète de la connaissance par la définition.
Plusieurs solutions ont été proposées. Pascal soutient qu'il faut accepter des termes primitifs, compris par « lumière naturelle ». Aristote affirme que certains principes sont saisis par l'intellection (''noûs'') sans avoir besoin de démonstration<ref>Aristote, ''Seconds Analytiques'', II, 19, 100b5-17, trad. P. Pellegrin, Paris, GF-Flammarion, 2005, p. 411-413.</ref>. Les logiciens formels modernes admettent explicitement des termes primitifs non définis à la base de tout système axiomatique. Le problème de la circularité n'est donc pas résolu mais ''aménagé'' : on reconnaît que la définition ne peut pas tout fonder et qu'elle s'appuie nécessairement sur un socle de termes et de compréhensions antérieurs.
=== L'indéfinissable ===
Certains philosophes ont soutenu que les concepts les plus fondamentaux sont par nature ''indéfinissables''. George Edward Moore, dans ses ''Principia Ethica'' (1903), avance que le concept de « bien » (''good'') est une notion simple, non analysable, qui ne peut pas être décomposée en éléments plus fondamentaux. Toute tentative de définir le bien par une autre propriété (le plaisir, l'utilité, la conformité à la nature) commet ce que Moore appelle le « sophisme naturaliste » (''naturalistic fallacy'') : elle confond le bien avec quelque chose qui n'est pas le bien<ref>G. E. Moore, ''Principia Ethica'' (1903), § 10-14, Cambridge, Cambridge University Press, 1993, p. 57-69.</ref>.
Henri Bergson, de son côté, soutient que la durée vécue et, plus généralement, les réalités auxquelles on accède par l'expérience intérieure, échappent par nature à la définition conceptuelle. Toute définition procède par analyse, c'est-à-dire par décomposition en éléments distincts et juxtaposés ; or la durée est un flux continu et indivisible que l'analyse déforme nécessairement en le figeant. Pour accéder à ces réalités, il faut une « intuition » irréductible au travail discursif de la définition<ref>H. Bergson, « Introduction à la métaphysique » (1903), dans ''La Pensée et le mouvant'', Paris, PUF, « Quadrige », 2013, p. 177-227.</ref>.
=== Définition et pouvoir ===
La philosophie sociale et politique a mis en lumière la dimension ''normative'' et ''politique'' de la définition. Définir un terme, ce n'est pas seulement fixer un usage linguistique : c'est tracer des frontières entre catégories, distinguer le normal de l'anormal, le licite de l'illicite. Le pouvoir de définir est un pouvoir sur le réel social. Comme l'a souligné Michel Foucault, les pratiques discursives qui déterminent les catégories du savoir — et donc les définitions — ne sont pas neutres mais traversées par des rapports de force : toute société contrôle et sélectionne la production du discours, et le pouvoir de nommer et de classer est indissociable de l'exercice du pouvoir social<ref>M. Foucault, ''L'Ordre du discours'', Paris, Gallimard, 1971, p. 10-23 ; voir aussi ''L'Archéologie du savoir'', Paris, Gallimard, 1969, p. 44-54.</ref>.
On peut illustrer cet enjeu par les débats autour de la définition de concepts comme « maladie mentale », « handicap », « réfugié » ou « terrorisme ». La manière dont ces termes sont définis dans le discours juridique, médical ou politique a des conséquences directes sur la vie des personnes concernées : elle détermine qui a droit à la protection, au soin, à la reconnaissance, et qui en est exclu.
== Conclusion ==
La définition, loin d'être une opération anodine, apparaît comme l'un des gestes fondamentaux de la pensée philosophique. De l'exigence socratique de dire l'essence à la critique wittgensteinienne des ressemblances de famille, du réalisme aristotélicien à l'antiessentialisme quinien, la question de savoir si l'on peut — et comment — fixer le contenu d'un concept reste ouverte et féconde. Chaque grande position philosophique sur la définition engage une conception du langage, de la connaissance et de la réalité.
Si la philosophie contemporaine a renoncé pour l'essentiel à l'idée d'une définition parfaite et définitive, elle n'a pas renoncé à l'exigence de clarté et de rigueur que porte le travail définitionnel. Qu'il s'agisse de l'explication carnapienne, de l'analyse conceptuelle ou de la stipulation scientifique, la définition reste un outil indispensable de la pensée, à condition que l'on prenne la mesure de ses limites et de ses présupposés.
== Notes et références ==
{{references}}
== Bibliographie indicative ==
* Aristote, ''Seconds Analytiques'', trad. P. Pellegrin, Paris, GF-Flammarion, 2005.
* Aristote, ''Topiques'', trad. J. Brunschwig, Paris, Les Belles Lettres, 2 vol., 2007.
* A. Arnauld et P. Nicole, ''La Logique ou l'art de penser'' (1662), éd. P. Clair et F. Girbal, Paris, Vrin, 1981.
* H. Bergson, « Introduction à la métaphysique » (1903), dans ''La Pensée et le mouvant'', Paris, PUF, « Quadrige », 2013.
* R. Carnap, ''Logical Foundations of Probability'', Chicago, University of Chicago Press, 1950.
* J. H. Fetzer, D. Shatz et N. Schlesinger (dir.), ''Definitions and Definability. Philosophical Perspectives'', Dordrecht, Kluwer, 1991.
* M. Foucault, ''L'Ordre du discours'', Paris, Gallimard, 1971.
* G. Frege, ''Les Fondements de l'arithmétique'' (1884), trad. C. Imbert, Paris, Seuil, 1969.
* E. Kant, ''Critique de la raison pure'', trad. A. Renaut, Paris, GF-Flammarion, 2006.
* S. Kripke, ''La Logique des noms propres'' (1980), trad. P. Jacob et F. Récanati, Paris, Minuit, 1982.
* J. Locke, ''Essai sur l'entendement humain'' (1689), trad. J.-M. Vienne, Paris, Vrin, 2006.
* G. E. Moore, ''Principia Ethica'' (1903), Cambridge, Cambridge University Press, 1993.
* B. Pascal, ''De l'esprit géométrique'', dans ''Œuvres complètes'', éd. M. Le Guern, Paris, Gallimard, « Bibliothèque de la Pléiade », 2000, t. II.
* H. Putnam, « The Meaning of 'Meaning' » (1975), dans ''Mind, Language and Reality'', Cambridge, Cambridge University Press, 1975.
* W. V. O. Quine, « Deux dogmes de l'empirisme » (1951), dans ''Du point de vue logique'', trad. S. Laugier, Paris, Vrin, 2003.
* R. Robinson, ''Definition'', Oxford, Clarendon Press, 1950.
* B. Russell, « De la dénotation » (1905), trad. J.-M. Roy, dans ''Écrits de logique philosophique'', Paris, PUF, 1989.
* L. Wittgenstein, ''Recherches philosophiques'' (1953), trad. F. Dastur, M. Élie et al., Paris, Gallimard, 2004.
== Voir aussi ==
* [[Concept]]
* [[Essence]]
* [[Universel]]
* [[Langage]]
* [[Signification]]
[[Catégorie:Logique]]
[[Catégorie:Philosophie du langage]]
[[Catégorie:Épistémologie]]
[[Catégorie:Métaphysique]]
02qiw9v6huzs84a82ugh0vcsqpc00sj
Dictionnaire de philosophie/René Descartes
0
83728
768381
766789
2026-06-23T03:57:05Z
PandaMystique
119061
Bot : ajout du paramètre lecture=oui au modèle {{DicoPhilo}}
768381
wikitext
text/x-wiki
{{DicoPhilo|René Descartes|lecture=oui}}
La pensée de René Descartes constitue un tournant majeur dans l'histoire de la philosophie occidentale. Son ambition est de refonder l'édifice entier du savoir sur des bases inébranlables, en soumettant à l'examen de la raison toutes les autorités héritées et en cherchant, dans les opérations mêmes de l'esprit, les conditions de la certitude.
== Vie et œuvres ==
René Descartes naît le 31 mars 1596 à La Haye, en Touraine, dans une famille de petite noblesse. Envoyé à l'âge de dix ans au collège jésuite de La Flèche, il y reçoit, jusque vers 1614, un enseignement encyclopédique qui le confronte à la philosophie scolastique, aux mathématiques, à la physique et aux lettres. Après une licence en droit obtenue à l'université de Poitiers, il s'engage en 1618 dans l'armée de Maurice de Nassau, prince d'Orange, puis l'année suivante dans celle du duc Maximilien de Bavière, voyageant à travers l'Europe. Dans la nuit du 10 au 11 novembre 1619, alors qu'il hiverne dans le sud de l'Allemagne, il rapporte avoir eu trois songes qui lui révèlent sa vocation : fonder une science universelle sur des bases entièrement nouvelles<ref>Ces songes ne nous sont pas connus directement par Descartes lui-même, qui les évoque seulement de manière allusive dans le ''Discours de la méthode'' (II, AT VI, 11), mais par le récit qu'en a transcrit son biographe Adrien Baillet, ''La Vie de Monsieur Des-Cartes'', Paris, 1691, à partir d'un cahier perdu intitulé ''Olympica''.</ref>.
Installé en Hollande à partir de 1628 pour y jouir de la [[Manuel de terminale de philosophie/Liberté|liberté]] intellectuelle, Descartes consacre les deux décennies suivantes à l'élaboration de son système philosophique. Il rédige d'abord, vraisemblablement entre 1626 et 1628, les ''Regulae ad directionem ingenii'' ([[s:Règles pour la direction de l’esprit|Règles pour la direction de l'esprit]]), qu'il laisse inachevées et qui ne paraîtront qu'après sa mort. Il rédige ensuite ''Le Monde ou Traité de la lumière'', qu'il renonce à publier après la condamnation de Galilée en 1633. En 1637 paraît le ''[[s:Discours de la méthode|Discours de la méthode]]'', suivi de trois essais scientifiques (''La Dioptrique'', ''Les Météores'', ''La Géométrie''). Les ''[[Méditations métaphysiques|Meditationes de prima philosophia]]'' paraissent en 1641 à Paris, accompagnées de six séries d'objections et de réponses ; une septième série sera ajoutée à la seconde édition de 1642, publiée à Amsterdam. Le titre de la première édition annonçait que l'ouvrage démontrait « l'existence de Dieu et l'immortalité de l'âme » ; celui de la seconde l'a remplacé par « l'existence de Dieu et la distinction réelle de l'âme et du corps de l'homme ». Les ''Principia philosophiae'' de 1644 offrent un exposé systématique de l'ensemble de la philosophie cartésienne. Enfin, ''[[s:Les Passions de l’âme|Les Passions de l'âme]]'' paraissent en 1649, fruit d'une longue réflexion alimentée par la correspondance avec la princesse Élisabeth de Bohême. Ayant rejoint la cour de la reine Christine de Suède à Stockholm, Descartes y meurt le 11 février 1650.
Dans la célèbre lettre-préface à la traduction française des ''Principes'' (1647), il compare la philosophie à un arbre dont les racines sont la [[Dictionnaire de philosophie/Métaphysique|métaphysique]], le tronc la physique et les branches les sciences particulières : la médecine, la mécanique et la [[Dictionnaire de philosophie/Morale|morale]]. Cette image exprime la conviction cartésienne que la métaphysique fonde la physique, laquelle rend à son tour possibles les sciences appliquées. Comprendre Descartes exige donc de parcourir l'ensemble de cet arbre, depuis ses racines métaphysiques jusqu'à ses prolongements pratiques.
== La méthode ==
Le projet cartésien s'enracine dans une insatisfaction profonde à l'égard du savoir hérité. Dès le ''Discours de la méthode'', Descartes fait le récit de sa formation intellectuelle pour en exposer les limites : hormis les mathématiques, aucune discipline ne lui a fourni de certitudes véritables. La philosophie des écoles, malgré des siècles de culture, n'a produit que des controverses interminables. Le constat est sans appel : il faut reprendre les choses par le commencement et se doter d'une méthode rigoureuse capable de conduire l'esprit à la vérité.
Les ''Regulae ad directionem ingenii'' constituent la première formulation de cette méthode. Descartes y identifie deux opérations fondamentales de l'esprit : l'intuition et la déduction. L'intuition est la saisie immédiate, par un esprit attentif, d'une proposition si simple et si claire qu'aucun doute ne peut s'y glisser. La déduction est le mouvement par lequel l'esprit progresse d'une intuition à une autre, chaque étape étant elle-même évidente. Toute connaissance certaine se ramène en définitive à une chaîne d'intuitions, et la méthode consiste à organiser le travail de la pensée de manière à ne jamais rompre cette chaîne.
Le ''Discours'' résume cette méthode en quatre préceptes. Le premier, dit d'évidence, commande de ne recevoir aucune chose pour vraie qu'on ne la connaisse évidemment comme telle, c'est-à-dire de n'admettre que ce qui se présente si clairement et si distinctement à l'esprit qu'il est impossible d'en douter. Le deuxième, dit d'analyse, prescrit de diviser chaque difficulté en autant de parcelles qu'il se peut, afin de la résoudre par parties. Le troisième, dit de synthèse, recommande de conduire par ordre ses pensées, en commençant par les objets les plus simples pour s'élever graduellement jusqu'aux plus composés. Le quatrième, dit de dénombrement, exige des revues si complètes qu'on soit assuré de ne rien omettre. Ces quatre règles ne sont pas de simples recommandations pédagogiques : elles décrivent le fonctionnement naturel de l'intellect lorsqu'il est bien conduit, et les mathématiques en constituent le modèle par excellence.
L'originalité de la méthode cartésienne réside dans sa portée universelle. Descartes ne l'envisage pas comme un instrument propre à telle ou telle discipline, mais comme le mode d'exercice de la raison elle-même. L'idée d'une ''mathesis universalis'', science générale de l'ordre et de la mesure, traduit cette ambition : toute question susceptible d'être formulée en termes de rapports et de proportions peut être résolue selon les mêmes procédures. ''La Géométrie'' de 1637, qui pose les fondements de la géométrie analytique en traduisant les figures spatiales en équations algébriques, en fournit la démonstration la plus éclatante.
Il convient toutefois d'éviter de réduire à un dispositif unique les trois principaux textes méthodologiques de Descartes. Les ''Regulae'' développent une théorie de la connaissance fondée sur les natures simples et la ''mathesis universalis'', dans un horizon encore largement scientifique. Le ''Discours de la méthode'' offre, sur le mode de l'autobiographie intellectuelle, un exposé condensé et populaire destiné à un large public cultivé. Les ''Méditations'' déploient enfin une démarche métaphysique qui n'est plus strictement « méthodique » au sens des ''Regulae'', mais qui suit ce que Descartes lui-même appelle l'« ordre des raisons ». L'unité de la pensée cartésienne se manifeste dans la continuité d'un projet, non dans une stricte identité de procédure entre ces trois œuvres. Descartes reconnaîtra d'ailleurs que la méthode, si puissante soit-elle dans le domaine des sciences, ne suffit pas à elle seule à garantir la vérité de nos connaissances sur le monde : cette garantie exige un fondement d'un autre ordre, celui de la métaphysique.
== La physique et la science de la nature ==
La physique cartésienne se construit en rupture déclarée avec la physique d'inspiration aristotélicienne telle qu'elle était enseignée dans les universités depuis le Moyen Âge. Descartes expose sa conception de la nature dans ''Le Monde'' (1633), dans la cinquième partie du ''Discours'' et dans les ''Principes de la philosophie''. Le point de départ est une critique profonde de la connaissance sensible. Contre la conviction ordinaire selon laquelle les qualités perçues (couleurs, sons, odeurs, saveurs, chaleur, froid) existent réellement dans les objets extérieurs, Descartes soutient que ces qualités ne sont que des modifications de notre esprit, produites par le mouvement de la matière sur nos organes sensoriels. De même que les mots du langage n'ont aucune ressemblance avec les choses qu'ils signifient, les sensations n'ont aucune ressemblance avec les propriétés réelles des corps qui les causent.
Si les sens ne nous livrent pas l'essence des choses, seules les idées claires et distinctes de l'entendement, dont les mathématiques offrent le modèle achevé, peuvent nous faire connaître l'essence des corps. La matière, dépouillée de toutes les qualités sensibles, se réduit à l'étendue en longueur, largeur et profondeur : la substance corporelle n'est rien d'autre que l'étendue. Cette identification de la matière et de l'étendue entraîne plusieurs conséquences importantes. Elle exclut d'abord le vide : puisque la matière est l'étendue elle-même, il ne saurait y avoir d'étendue sans matière, et l'espace vide est une contradiction dans les termes. Elle implique ensuite la divisibilité indéfinie de la matière : l'étendue étant divisible à l'infini, la matière l'est aussi, et il n'existe pas d'atomes. Elle réduit enfin tous les phénomènes naturels au mouvement local de parties de matière étendue : il n'y a dans la nature que des figures et des mouvements.
Dans ''Le Monde'', Descartes procède par une fiction ingénieuse : il invite le lecteur à imaginer la genèse d'un monde nouveau à partir d'une matière indifférenciée. Dieu crée la matière, la divise en parties et leur communique des mouvements régis par trois lois fondamentales. La première loi pose que chaque partie de matière conserve son état de repos ou de mouvement tant qu'aucune cause extérieure ne vient le modifier : c'est le principe d'inertie, dont Descartes propose ici l'une des premières formulations générales. Cette formulation s'inscrit dans un mouvement de réflexion plus large amorcé par Galilée et Isaac Beeckman au début du XVIIe siècle, et Descartes en hérite autant qu'il le prolonge ; mais il lui confère une portée systématique nouvelle en l'inscrivant dans un cadre métaphysique d'ensemble. La deuxième loi établit que, dans le choc de deux corps, une certaine quantité de mouvement se conserve. Il faut noter que la « quantité de mouvement » cartésienne, calculée comme produit de la grandeur d'un corps par sa vitesse scalaire, n'est pas encore la grandeur vectorielle (impulsion) que la mécanique classique post-newtonienne fera intervenir : c'est en partie pour cette raison que les lois cartésiennes du choc se révéleront empiriquement inexactes. La troisième loi stipule que tout mouvement tend à se poursuivre en ligne droite. À partir de ces trois lois et des seuls chocs entre les parties de matière, Descartes prétend rendre compte de la formation des astres, des planètes, de la lumière et de l'ensemble des phénomènes naturels, par le biais d'un mécanisme universel de tourbillons de matière subtile.
Descartes fonde ces lois sur l'immuabilité de Dieu : Dieu conserve dans le monde la même quantité de mouvement qu'il y a placée initialement, car il serait contraire à sa perfection d'en changer. Les principes les plus généraux de la physique sont ainsi rattachés à la métaphysique. Il faut cependant se garder de présenter la physique cartésienne comme entièrement déductive : si les lois générales du mouvement sont rattachées à l'immutabilité divine, les explications particulières des phénomènes naturels reposent en fait sur la construction de modèles mécaniques, la formulation d'hypothèses et le recours méthodique à l'expérience. Descartes récuse toute explication faisant appel aux causes finales : chercher à quoi sert un phénomène naturel, c'est prétendre connaître les desseins de Dieu, prétention qu'il juge aussi vaine qu'orgueilleuse. Il refuse également les formes substantielles et les qualités occultes de la physique scolastique, ne reconnaissant d'autres principes explicatifs que la matière étendue et le mouvement. L'expérimentation, dans ce cadre, n'a pas pour fonction de découvrir les principes premiers de la physique, qui sont rattachés à la métaphysique, mais de choisir entre plusieurs hypothèses mécaniques également compatibles avec ces principes.
La physique cartésienne s'étend au domaine du vivant par une physiologie mécaniste. Dans la cinquième partie du ''Discours'' et dans le ''Traité de l'homme'' (publié ''post mortem''), Descartes décrit le corps humain comme une machine hydraulique d'une extrême complexité. La circulation du sang, la digestion, la respiration, le sommeil, les mouvements réflexes ainsi que l'exécution corporelle des mouvements s'expliquent par le seul jeu mécanique des organes, des nerfs, du sang et des esprits animaux (particules très fines du sang acheminées au cerveau par les artères). Les mouvements proprement volontaires, en revanche, supposent l'intervention de la volonté de l'âme, qui agit sur le corps dans le cadre de l'union substantielle. Nul besoin, par ailleurs, d'invoquer une âme végétative ou une âme sensible, comme le faisait la tradition aristotélicienne : la vie organique fonctionne comme un automate. De cette analyse découle la thèse, célèbre et controversée, de l'animal-machine : les animaux, dépourvus de raison et d'un langage propre à exprimer des idées, peuvent être considérés comme des automates. Il convient toutefois de noter que Descartes lui-même, dans une lettre à Henry More du 5 février 1649<ref>Lettre à More, 5 février 1649, AT V, p. 273-279 : « Je ne dis pas que les bêtes sont privées de toute pensée, mais seulement qu'on ne peut le démontrer par raisons probables. »</ref>, reconnaît qu'on ne peut véritablement démontrer qu'il n'y a pas de pensée chez les bêtes ; ce qu'il nie n'est pas la vie ni la sensibilité au sens où l'on peut parler de stimuli mécaniques, mais la pensée au sens strict, c'est-à-dire le pouvoir réflexif et linguistique. L'âme, lorsqu'elle est présente chez l'homme, n'est pas principe de vie mais principe de pensée : elle apporte la conscience, la réflexion, le langage articulé.
== La métaphysique : le projet fondateur ==
Si la physique cartésienne décrit la nature du monde au moyen d'idées claires et distinctes, encore faut-il établir que ces idées sont véridiques, c'est-à-dire qu'elles décrivent effectivement la réalité telle qu'elle est. La méthode, à elle seule, ne peut fournir cette garantie ultime. C'est à la métaphysique qu'il revient de fonder la physique en démontrant deux thèses capitales : d'une part, l'existence et la véracité de Dieu ; d'autre part, la distinction réelle de l'esprit et du corps. La première thèse est nécessaire pour garantir la vérité des idées claires et distinctes ; la seconde permet de justifier la connaissance indépendante de l'expérience sensible.
Descartes expose sa métaphysique principalement dans la quatrième partie du ''Discours de la méthode'', dans les ''Méditations métaphysiques'' (1641) et dans la première partie des ''Principes''. C'est toutefois dans les ''Méditations'' que l'argumentation atteint son plus haut degré de rigueur et de profondeur. L'ouvrage se présente comme un exercice de pensée que le lecteur est invité à pratiquer avec l'auteur, une expérience intérieure de la raison progressant depuis l'incertitude la plus complète jusqu'à la certitude la plus ferme.
=== Le doute méthodique ===
La première ''Méditation'' met en œuvre un doute systématique, volontaire et hyperbolique, dont la finalité n'est pas sceptique mais fondatrice : il s'agit de suspendre l'assentiment à toutes les opinions reçues pour ne retenir que ce qui résiste à l'épreuve du doute le plus poussé. Descartes distingue plusieurs niveaux de doute, chacun plus profond que le précédent.
Le premier niveau concerne la tromperie des sens. Nous savons par expérience que les sens nous abusent parfois : une tour carrée paraît ronde de loin, un bâton plongé dans l'eau semble brisé. Puisque les sens nous ont déjà trompés, la prudence commande de ne jamais s'y fier entièrement. Toutefois, ce doute ne touche que les perceptions de choses éloignées ou très petites ; il semble que certaines données sensibles, comme le fait que je suis ici, assis devant le feu, vêtu d'une robe de chambre, ne puissent être raisonnablement contestées.
Le deuxième niveau est celui de l'argument du rêve. Il m'est arrivé souvent de rêver que j'étais ici même, assis près du feu, alors que j'étais dans mon lit. Il n'existe aucun critère absolument certain permettant de distinguer la veille du sommeil. Dès lors, l'existence même du monde extérieur et de mon propre corps devient incertaine. Cependant, même dans le rêve, les vérités mathématiques et les natures simples (étendue, figure, nombre) semblent subsister : que je dorme ou que je veille, deux et trois font cinq et le carré n'a que quatre côtés.
Le troisième niveau, le plus poussé, est celui de l'hypothèse du Dieu trompeur, transformée ensuite en fiction du malin génie. Si Dieu est tout-puissant, rien n'empêche qu'il ait pu me donner une nature telle que je me trompe même dans les vérités qui me paraissent les plus évidentes. Les vérités mathématiques elles-mêmes tombent sous le coup de ce doute. Pour donner à cette hypothèse toute sa force, Descartes la reformule sous la figure d'un malin génie, aussi puissant que rusé, qui emploierait toute son industrie à me tromper. Ce doute hyperbolique, en suspendant toute certitude, crée les conditions d'un recommencement absolu de la pensée.
L'hypothèse du Dieu trompeur s'inscrit dans un contexte théologique précis. La philosophie scolastique avait longuement discuté la question de savoir si la toute-puissance divine était compatible avec la vérité de la connaissance humaine, et de nombreux théologiens avaient conclu que le savoir humain ne pouvait jamais être que provisoire et conjectural face à l'infinité divine. C'est contre cette résignation épistémologique que Descartes construit sa métaphysique.
=== Le ''cogito'' et la nature du sujet pensant ===
Au cœur du doute le plus poussé surgit une certitude inébranlable. Alors même que je suppose qu'un être tout-puissant s'emploie à me tromper en toutes choses, il est impossible que je n'existe pas au moment même où je pense être trompé. Pour me tromper, il faut bien que je sois. Cette première vérité reçoit chez Descartes plusieurs formulations selon les ouvrages : « je pense, donc je suis » dans la quatrième partie du ''Discours de la méthode'', « je suis, j'existe » (''ego sum, ego existo'') dans la deuxième ''Méditation'', où la formule canonique de la conclusion est en réalité l'affirmation simple de l'existence à chaque fois que je la prononce ou la conçois, et « je pense, donc je suis » (''ego cogito, ergo sum'') dans les ''Principes de la philosophie''. C'est cette dernière formule que la tradition désignera comme « le ''cogito'' », expression elle-même postérieure à Descartes. Quel que soit le libellé, il s'agit du roc sur lequel s'édifiera tout l'édifice du savoir.
Le statut logique exact de cette proposition a suscité d'amples discussions parmi les commentateurs : s'agit-il d'un syllogisme (qui supposerait une prémisse majeure « tout ce qui pense existe »), ou d'une intuition immédiate par laquelle la pensée se saisit elle-même dans l'exercice même de son doute ? Descartes lui-même, dans les ''Secondes Réponses'', insiste sur le caractère non syllogistique de cette certitude : la conclusion « j'existe » est aperçue « par une simple inspection de l'esprit ». Sa vérité est établie par le fait que toute tentative de la nier la confirme : si je pense que je n'existe pas, j'existe ; si je suis trompé, j'existe.
Du ''cogito'', Descartes tire aussitôt un enseignement sur la nature du moi. La certitude d'exister ne dépend que de la pensée : si je cessais de penser, rien ne m'assurerait plus de mon existence. En revanche, je puis concevoir que je n'ai pas de corps tout en restant certain d'exister comme être pensant. La pensée, prise dans toute l'étendue de ses modalités (douter, concevoir, affirmer, nier, vouloir, refuser, imaginer, sentir), constitue donc l'attribut essentiel du moi. Le moi est une « chose qui pense » (''res cogitans''), une substance dont toute l'essence consiste dans la pensée. Cette détermination du moi par la seule pensée, indépendamment de toute référence au corps, marque une rupture profonde avec la tradition aristotélicienne, pour laquelle la connaissance de l'esprit dérivait de sa réflexion sur les objets corporels.
Descartes illustre cette thèse par la célèbre analyse du morceau de cire, dans la deuxième ''Méditation''. Un morceau de cire fraîchement tiré de la ruche possède une couleur, une odeur, une figure, une taille déterminées. Si on l'approche du feu, toutes ces qualités sensibles changent : la couleur disparaît, l'odeur s'évanouit, la figure se modifie. Pourtant, nous jugeons que c'est toujours le même morceau de cire. Ce jugement d'identité ne peut, selon Descartes, venir des sens, puisque toutes les qualités sensibles ont changé. Il résulte d'un acte de l'entendement, qui saisit la cire comme une substance étendue, flexible et muable, propriétés que l'imagination ne peut embrasser dans leur infinité mais que l'esprit seul conçoit. Ainsi, même la connaissance des corps suppose l'intervention de l'entendement et de ses idées, et non la seule réception passive des données sensibles.
Le doute et le ''cogito'' ont donc conjointement établi deux résultats : l'existence certaine du moi pensant et la primauté de la connaissance intellectuelle sur la connaissance sensible. Reste à savoir si cette certitude du moi peut s'étendre à d'autres réalités, et en premier lieu à Dieu.
=== Les preuves de l'existence de Dieu ===
Le ''cogito'' fournit un premier fondement, mais il ne suffit pas à garantir la vérité de toutes nos idées claires et distinctes, car celles-ci restent menacées par l'hypothèse du Dieu trompeur. Pour lever cette menace, il faut démontrer que Dieu existe et qu'il n'est pas trompeur. Descartes propose trois preuves de l'existence de Dieu dans les troisième et cinquième ''Méditations''.
La première preuve, dite preuve par l'effet, part de l'idée de Dieu que l'esprit trouve en lui-même. Descartes distingue dans toute idée deux aspects : sa réalité formelle, c'est-à-dire son être en tant que mode de la pensée, et sa réalité objective, c'est-à-dire le contenu qu'elle représente. Or, la réalité objective d'une idée doit avoir une cause qui possède au moins autant de réalité formelle. L'idée de Dieu est l'idée d'une substance infinie, éternelle, immuable, toute-puissante, omnisciente et créatrice de toutes choses. La réalité objective de cette idée excède de manière incommensurable la réalité formelle du moi, substance finie et imparfaite. Le moi ne peut donc pas être la cause de l'idée de Dieu : seul un être effectivement infini et parfait peut avoir produit en nous cette idée. Donc Dieu existe.
Cette preuve suppose que l'idée d'infini est positive et originaire, et non simplement dérivée de la négation du fini. Descartes s'oppose ici à la position thomiste : loin que l'idée d'infini résulte de la négation des limites du fini, c'est au contraire l'idée du fini qui suppose celle de l'infini, car je ne pourrais pas me reconnaître fini et imparfait si je n'avais en moi l'idée d'un être infini et parfait par comparaison auquel je me juge déficient.
La deuxième preuve, développée également dans la troisième ''Méditation'', cherche la cause de l'existence du moi en tant qu'il possède l'idée de Dieu. Je n'ai pas pu me créer moi-même, car si j'avais eu ce pouvoir, je me serais donné toutes les perfections dont j'ai l'idée. Aucune cause moins parfaite que Dieu ne peut être la cause ultime de mon existence : la régression à l'infini étant impossible, il faut nécessairement aboutir à un être qui a en soi le principe de son existence et qui possède toutes les perfections contenues dans l'idée de Dieu.
La troisième preuve, exposée dans la cinquième ''Méditation'', est la preuve ontologique. Elle procède de la seule définition de Dieu comme être souverainement parfait. Tout comme certaines propriétés appartiennent nécessairement à l'essence d'une figure géométrique (les trois angles d'un triangle valent ensemble deux droits), l'existence nécessaire appartient à l'essence d'un être souverainement parfait. Il serait donc contradictoire de concevoir un tel être auquel manquerait l'existence : sa nature même implique qu'il existe. L'existence appartient ainsi à l'essence de Dieu, et nier son existence reviendrait à se contredire. Kant qualifiera plus tard cet argument de « preuve ontologique », et lui reprochera de traiter l'existence comme un prédicat susceptible d'enrichir le concept d'une chose, alors que, selon lui, l'existence n'ajoute rien au contenu d'un concept. L'objection kantienne ne rend toutefois pas pleinement compte du raisonnement cartésien, qui n'ajoute pas l'existence à une liste de perfections : il infère sa nécessité de la considération de l'essence divine prise en elle-même.
=== La véracité divine et le problème du cercle ===
L'existence de Dieu une fois établie, Descartes en déduit que Dieu, être souverainement parfait, ne saurait être trompeur, car la tromperie suppose un défaut incompatible avec la perfection divine. Si Dieu n'est pas trompeur, alors la lumière naturelle qu'il a mise en nous, c'est-à-dire notre faculté de connaître les choses clairement et distinctement, est fiable. Tout ce que nous concevons clairement et distinctement est vrai. La menace du malin génie est définitivement écartée, et la science humaine reçoit son fondement ultime dans la véracité divine.
On a objecté à Descartes, dès la parution des ''Méditations'', que son raisonnement serait circulaire : il invoque Dieu pour garantir la vérité des idées claires et distinctes, mais il démontre l'existence de Dieu au moyen d'idées claires et distinctes. Ce « cercle cartésien » a suscité d'innombrables commentaires, et les interprètes ne s'accordent pas sur la portée exacte de la réponse de Descartes. Celui-ci distingue entre les intuitions actuelles, dont l'esprit ne peut douter au moment même où il les perçoit, et les résultats de démonstrations passées, dont on pourrait douter si l'on n'avait pas la garantie divine. La véracité de Dieu ne serait donc pas requise pour assurer les évidences présentes, celles-ci s'imposant d'elles-mêmes, mais pour garantir que ce qui a été clairement et distinctement perçu reste vrai même lorsque l'esprit ne se le représente plus actuellement. La garantie divine porterait ainsi sur la mémoire de nos évidences et sur la fiabilité de nos raisonnements longs et complexes.
== La théorie des idées ==
La métaphysique cartésienne repose sur une théorie des idées qui reprend certains thèmes de la tradition platonicienne, en particulier la thèse selon laquelle les connaissances les plus hautes ne proviennent pas des sens. Descartes n'adopte pas pour autant le cadre métaphysique de Platon (il ne postule ni un monde séparé des Formes, ni la réminiscence), mais il partage avec lui la conviction que l'expérience sensible ne fournit pas, à elle seule, de connaissance véritable.
Descartes distingue trois sortes d'idées selon leur origine. Les idées adventices semblent provenir de l'expérience extérieure : ce sont les sensations de couleur, de son, de chaleur, etc. Les idées factices sont fabriquées par l'imagination, comme l'idée de sirène ou de chimère. Les idées innées, enfin, se trouvent en nous indépendamment de toute expérience sensible : ce sont les idées de Dieu, de l'âme, de l'étendue, des figures géométriques, des vérités mathématiques et logiques. Dans les ''Notae in programma'' (1648), réponse au placard de Regius, Descartes précise que les idées innées ne sont pas des contenus présents à l'esprit sous une forme toute faite, mais des dispositions ou des aptitudes que l'esprit possède de produire ces idées par sa propre puissance. L'innéité ne désigne donc pas une présence actuelle de toutes les essences dans la conscience, mais la faculté naturelle de l'esprit de former ces idées sans aide extérieure.
Les idées innées se distinguent des autres par plusieurs caractéristiques. Elles ne sont pas imposées par un objet extérieur, mais produites par la puissance propre de l'entendement ; leur contenu, en revanche, s'impose à l'esprit avec nécessité et ne peut être modifié par la volonté. L'esprit est passif devant ce contenu : les vérités mathématiques ne sont pas des inventions mais des découvertes, comme l'atteste le fait que les progrès mathématiques se font pas à pas, chaque nouvelle vérité s'imposant à l'esprit avec une nécessité que celui-ci ne contrôle pas. Cette nécessité interne du contenu indique, selon Descartes, qu'il y a là plus qu'une simple production subjective : les idées innées correspondent à ce qu'il appelle, dans la cinquième ''Méditation'', des « vraies et immuables natures », objets stables auxquels la pensée se rapporte. Ces natures ne forment cependant pas, chez Descartes, un domaine d'essences absolument indépendantes au sens où l'auraient compris certains platoniciens : ainsi que le précise la doctrine de la libre création des vérités éternelles, elles dépendent entièrement de la volonté divine qui les a librement instituées. L'innéisme cartésien doit donc se comprendre dans cet équilibre subtil : objectivité réelle des idées et des essences qu'elles représentent, garantie par la véracité divine ; absence d'autonomie ontologique de ces essences à l'égard de leur cause créatrice.
La théorie des idées innées, associée à la véracité divine, constitue le fondement de l'anti-empirisme cartésien. La connaissance véritable du monde ne passe pas par les sens, mais par l'entendement pur et ses idées innées. Les idées adventices, quant à elles, ne nous informent pas sur la nature réelle des choses, mais elles remplissent une autre fonction : elles incitent irrésistiblement l'esprit à croire à l'existence d'un monde extérieur. Si les corps n'existaient pas, Dieu serait trompeur, puisqu'il nous a naturellement portés à croire à leur existence sans nous donner aucun moyen de corriger cette croyance. La véracité divine garantit donc l'existence du monde extérieur, mais c'est par les idées innées que nous en connaissons la nature. Il faut souligner le caractère remarquable de cet ordre : Descartes connaît la nature du monde (l'étendue géométrique) avant d'en avoir établi l'existence réelle.
== La théorie de la libre création des vérités éternelles ==
Une dimension essentielle de la métaphysique cartésienne tient à la doctrine de la libre création des vérités éternelles. Formulée pour la première fois dans la lettre à Mersenne du 15 avril 1630<ref>Lettre à Mersenne du 15 avril 1630, AT I, p. 145 : « Les vérités mathématiques, lesquelles vous nommez éternelles, ont été établies de Dieu et en dépendent entièrement, aussi bien que tout le reste des créatures. » Voir aussi les lettres du 6 mai et du 27 mai 1630, AT I, p. 149-153.</ref>, cette doctrine affirme que les vérités éternelles (y compris les vérités mathématiques et les lois logiques) ont été librement instituées par Dieu. Dieu n'est pas soumis aux vérités éternelles comme à des contraintes extérieures ; c'est lui qui les a établies par un acte de volonté libre. Que deux et trois fassent cinq, que le tout soit plus grand que la partie, que les contradictoires ne puissent être vraies ensemble : tout cela ne résulte pas d'une nécessité que Dieu subirait, mais d'un décret divin. Dieu aurait pu faire qu'il en fût autrement.
Cette thèse, d'une grande audace, porte à son comble l'affirmation de la toute-puissance divine. Sans être absolument sans précédent (la tradition scotiste avait, à sa manière, déjà étendu la liberté divine très loin), elle revêt chez Descartes une portée nouvelle et une intensité particulière. Sa portée exacte et son articulation avec le reste de la métaphysique cartésienne font l'objet de discussions persistantes parmi les commentateurs. Bien qu'absente des ''Méditations'' proprement dites, la doctrine n'est pas confinée à la correspondance : Descartes la formule dans les ''Cinquièmes'' et ''Sixièmes Réponses aux Objections'', ainsi que dans certaines parties des ''Principes'' (I, 22-24)<ref>''Principes de la philosophie'', I, art. 22-24, AT VIII-1, p. 13-14 ; AT IX-2, p. 36-37. Sur cette doctrine, voir Jean-Luc Marion, ''Sur la théologie blanche de Descartes'', Paris, PUF, 1981.</ref>. Elle n'est cependant pas explicitement mobilisée dans la construction des preuves métaphysiques de l'existence de Dieu.
== L'erreur et le libre arbitre ==
Si Dieu est vérace et a doté l'homme d'une faculté de connaître fiable, comment se fait-il que celui-ci se trompe ? La quatrième ''Méditation'' est consacrée à cette question. L'erreur résulte du concours de deux facultés : l'entendement, qui est fini, et la volonté, qui est infinie. L'entendement ne conçoit qu'un nombre limité d'idées claires et distinctes. La volonté, en revanche, s'étend à tout : elle peut affirmer ou nier au-delà de ce que l'entendement lui présente clairement. L'erreur survient lorsque la volonté se prononce sur des matières que l'entendement ne conçoit pas clairement et distinctement. Elle n'est donc pas imputable à Dieu, mais au mauvais usage que l'homme fait de sa liberté.
Dieu a créé l'homme avec un entendement fini et une volonté infinie, et cette disproportion n'est pas un défaut mais le signe de la grandeur de l'homme : c'est par la volonté, qui est selon Descartes « la plus grande perfection de l'homme », que nous sommes faits à l'image de Dieu. La liberté humaine occupe ainsi une place centrale dans la métaphysique cartésienne. Descartes la conçoit comme le pouvoir de choisir entre des contraires, mais aussi et surtout comme la capacité de se déterminer par la seule lumière de l'entendement. La plus haute forme de liberté n'est pas l'indifférence, état dans lequel la volonté ne penche vers aucun côté, mais la détermination éclairée par laquelle l'esprit adhère au vrai et au bien qu'il connaît clairement. Plus l'entendement voit clairement, plus la volonté s'y porte infailliblement, et plus la liberté est grande. Ce double visage de la liberté cartésienne, qui oppose liberté d'indifférence et liberté éclairée, fera l'objet de discussions importantes dans la postérité du cartésianisme.
== Le dualisme : distinction et union de l'âme et du corps ==
La sixième ''Méditation'' établit la distinction réelle de l'âme et du corps. Puisque l'esprit peut être conçu clairement et distinctement sans le corps, et le corps sans l'esprit, et puisque Dieu peut réaliser tout ce qui est clairement et distinctement conçu, l'âme et le corps sont deux substances réellement distinctes, capables d'exister séparément. L'âme est une substance pensante (''res cogitans''), dont l'essence est la pensée ; le corps est une substance étendue (''res extensa''), dont l'essence est l'étendue en trois dimensions. Ce dualisme des substances est l'une des thèses fondatrices de la philosophie cartésienne : il fonde la possibilité des idées innées (l'âme, étant indépendante du corps, peut posséder des idées qui ne proviennent pas de l'expérience corporelle), justifie la physique mécaniste (les corps, n'étant qu'étendue, n'ont besoin pour être expliqués que de figures et de mouvements) et prépare la thèse de l'immortalité de l'âme. Sur ce dernier point, il faut toutefois souligner que les ''Méditations'' n'apportent pas une démonstration directe de l'immortalité personnelle ; elles établissent la distinction réelle, dont on peut inférer que l'âme n'est pas naturellement détruite par les mêmes causes que le corps. Descartes lui-même, en réponse à des objections, présente cette distinction comme une condition de l'immortalité plutôt que comme sa preuve achevée, dont l'établissement définitif relève selon lui de la théologie.
Cependant, le dualisme cartésien ne s'en tient pas à la seule distinction. L'expérience quotidienne atteste que l'âme et le corps, bien que réellement distincts, sont étroitement unis. La douleur, le plaisir, la faim, la soif ne sont pas de pures pensées détachées du corps, mais des sentiments confus résultant de l'union de l'âme et du corps. L'âme n'est pas dans le corps comme un pilote en son navire, qui percevrait les avaries du vaisseau de l'extérieur : elle lui est intimement mêlée, de sorte que les affections du corps se traduisent immédiatement en modifications de l'âme. Dans les ''Quatrièmes Réponses aux Objections'', Descartes parle d'une union qui n'est « pas accidentelle, mais substantielle ». L'expression, empruntée au vocabulaire scolastique, est cependant employée par Descartes dans un sens profondément transformé : il ne s'agit plus de l'union d'une forme et d'une matière au sens aristotélicien, mais d'un fait d'expérience irréductible à la seule distinction rationnelle des substances. La princesse Élisabeth lui adressera d'ailleurs, dès 1643, des objections aiguës sur la manière dont deux substances aussi hétérogènes peuvent agir l'une sur l'autre, objections auxquelles Descartes peinera à répondre de manière entièrement satisfaisante.
Descartes cherche ainsi à se frayer une voie entre les modèles platonicien et aristotélicien. Platon avait raison de soutenir que l'âme et le corps sont deux réalités distinctes, mais il n'a pas suffisamment rendu compte de leur union intime. Aristote avait raison de concevoir leur union comme celle d'une forme et d'une matière constituant un seul tout, mais il n'avait pas, aux yeux de Descartes, suffisamment reconnu leur distinction substantielle. L'originalité de la position cartésienne est de maintenir ensemble ces deux thèses apparemment contradictoires. La distinction réelle est établie par la raison ; l'union, quant à elle, est saisie par une notion primitive ''sui generis'' et par l'expérience intérieure que chacun en fait, comme l'explique Descartes dans la lettre à Élisabeth du 21 mai 1643<ref>Lettre à Élisabeth du 21 mai 1643, AT III, p. 663-668. Descartes y distingue trois sortes de notions primitives : celles qui se rapportent à l'âme seule, celles qui se rapportent au corps seul, et celle de l'union, par laquelle nous concevons que l'âme meut le corps et que le corps cause des sentiments dans l'âme.</ref>. Cette union a une finalité pratique : les sensations, bien qu'elles déforment la réalité du point de vue de la connaissance spéculative, informent correctement sur ce qui est utile ou nuisible à la conservation du composé âme-corps. L'homme se trompe non pas en ayant des sensations, mais lorsqu'il utilise ces informations pratiques à des fins de connaissance théorique.
Sur la question du lieu de l'interaction entre l'âme et le corps, Descartes identifie la glande pinéale (ou ''conarium'') comme le siège principal de l'âme, non parce que l'âme y serait enfermée (l'âme étant immatérielle ne saurait être localisée comme un corps), mais parce que c'est la seule partie du cerveau qui ne soit pas double et qui puisse servir de point de convergence entre les mouvements des esprits animaux et les actes de la pensée. Cette hypothèse physiologique, vivement critiquée dès le vivant de Descartes, a le mérite de poser explicitement le problème de l'interaction entre deux substances hétérogènes, problème qui occupera toute la philosophie post-cartésienne.
La question du dualisme ne concerne pas seulement la métaphysique : elle engage directement la morale. Car c'est de l'union de l'âme et du corps que naissent les passions, et c'est en apprenant à régler cette union que l'homme peut espérer bien conduire sa vie.
== La morale ==
La morale, dans l'image de l'arbre des sciences, constitue l'une des branches les plus élevées. Descartes n'a pas eu le temps de rédiger un traité de morale systématique, mais sa pensée éthique se déploie dans le ''Discours de la méthode'', dans la correspondance avec la princesse Élisabeth de Bohême et avec Pierre Chanut, et dans ''Les Passions de l'âme''.
Dans la troisième partie du ''Discours'', Descartes présente une « morale par provision », destinée à guider la conduite pendant que l'esprit est occupé à reconstruire l'édifice du savoir. Cette morale provisoire comporte trois maximes principales. La première prescrit d'obéir aux lois et aux coutumes de son pays, de conserver la religion dans laquelle on a été élevé et de suivre les opinions les plus modérées. La deuxième recommande la fermeté et la résolution dans les actions : une fois qu'on a adopté une opinion, il faut la suivre avec constance, même si elle est incertaine, plutôt que de demeurer irrésolu. La troisième maxime, d'inspiration stoïcienne, conseille de changer ses désirs plutôt que l'ordre du monde, c'est-à-dire de limiter ses aspirations à ce qui est véritablement en notre pouvoir (nos pensées seules le sont), et de considérer tout le reste comme indépendant de notre volonté.
La correspondance avec Élisabeth, entre 1643 et 1649, permet à Descartes de préciser et d'approfondir sa pensée morale au-delà de la morale provisoire. Le souverain bien de l'homme est la béatitude, qui ne se confond pas avec le bonheur dépendant des circonstances extérieures, mais consiste en un contentement intérieur de l'esprit résultant du bon usage de la volonté. Trois conditions sont requises pour y parvenir : connaître ce qui est véritablement bien, c'est-à-dire ce que la raison nous enseigne ; avoir la ferme résolution de faire tout ce que la raison nous conseille ; limiter nos désirs à ce qui dépend de nous. Descartes ajoute à ces principes la méditation de certaines vérités fondamentales : l'existence d'un Dieu dont tout dépend, la distinction de l'âme et du corps qui nous assure de la possibilité de survivre à la mort, l'immensité de l'univers qui relativise nos attachements terrestres, et le sentiment d'appartenir à une communauté humaine dont le bien doit l'emporter sur notre bien particulier.
== Les passions de l'âme ==
Le dernier ouvrage publié du vivant de Descartes, ''Les Passions de l'âme'' (1649), est issu d'une longue réflexion alimentée par la correspondance avec la princesse Élisabeth, à qui Descartes avait envoyé en mai 1646 un premier traité qui constitua l'embryon de l'ouvrage publié. Il s'agit à la fois d'un traité de physiologie et d'un traité de morale. Descartes y entreprend d'étudier les passions « en physicien », c'est-à-dire de les expliquer par leurs causes naturelles et mécaniques, sans visée rhétorique ni moraliste. Les passions sont définies comme des perceptions, sentiments ou émotions de l'âme, causées et entretenues par certains mouvements des esprits animaux. Elles sont causées par le corps, mais ressenties par l'âme, et constituent l'un des effets les plus manifestes de l'union de l'âme et du corps.
Descartes identifie six passions primitives, dont toutes les autres sont des espèces ou des combinaisons : l'admiration, l'amour, la haine, le désir, la joie et la tristesse. L'admiration occupe une place à part, car elle est « la première de toutes » et nous dispose à apprendre et à connaître les choses nouvelles. Les autres passions se rapportent au bien et au mal, présent ou futur. Toutes les passions, considérées en elles-mêmes, sont bonnes et utiles : elles portent l'âme à vouloir les choses que la nature lui enseigne être utiles et à persévérer dans cette volonté. Une vie sans passions serait une vie appauvrie, dépourvue de saveur et de plaisir. Descartes se distingue ici nettement du stoïcisme, qui prônait l'éradication des passions.
Néanmoins, les passions ont besoin d'être réglées, car leurs excès peuvent conduire à des actions nuisibles. Descartes estime cependant que la raison ne peut pas combattre directement les passions par la seule force de ses arguments : les passions procèdent de mouvements physiologiques que seuls des mouvements contraires peuvent contrebalancer. La stratégie consiste donc à susciter des passions contraires à celles que l'on veut maîtriser, en portant l'attention sur les pensées qui leur sont ordinairement associées. L'esprit peut aussi tirer parti du caractère arbitraire de la relation entre mouvements corporels et pensées de l'âme : par l'habitude et l'exercice, il est possible de modifier les associations naturelles et d'obtenir, par exemple, que la vue d'un danger suscite la hardiesse plutôt que la peur. Ce travail sur les passions, que Descartes compare au dressage d'un animal, fait de l'homme l'artisan de sa propre nature.
La vertu cardinale de la morale cartésienne est la générosité, que les ''Passions de l'âme'' présentent comme « la clé de toutes les autres vertus » (art. 161). Elle se définit par deux traits indissociables : la reconnaissance que rien ne nous appartient véritablement que la libre disposition de nos volontés, et la ferme et constante résolution de bien user de ce libre arbitre. L'homme généreux ne s'estime que pour son bon usage de la liberté, ne méprise personne, n'envie rien et affronte les événements avec résolution et tranquillité. La générosité est à la fois une passion et une vertu : c'est le sentiment de notre propre liberté érigé en principe de conduite. Apparue tardivement dans la pensée cartésienne, elle réalise une synthèse remarquable entre plusieurs traditions éthiques : magnanimité aristotélicienne, fermeté stoïcienne, humilité chrétienne et culture épicurienne d'un plaisir épuré. Elle conduit à l'estime de soi fondée sur le bon usage du libre arbitre, et à une bienveillance universelle, puisque celui qui reconnaît que la vraie grandeur réside dans le bon usage de la volonté ne peut manquer de la reconnaître aussi chez autrui.
== L'héritage cartésien ==
L'influence de Descartes sur la philosophie moderne est considérable et multiforme. En fondant la philosophie sur le sujet pensant, il inaugure ce que l'on a pu appeler la « philosophie de la conscience », qui domine la pensée occidentale jusqu'à la fin du {{s|XIX}}.
La réception du cartésianisme commence dès le vivant de Descartes, dans des conditions souvent conflictuelles. Aux Provinces-Unies, le théologien calviniste Gisbert Voet (Voetius) attaque dès 1641 la philosophie cartésienne, soupçonnée d'athéisme, et fait condamner son enseignement à l'université d'Utrecht. La querelle se prolongera durant des années et inspirera à Descartes son ''Épître à Voetius'' (1643)<ref>Sur ces querelles, voir Theo Verbeek, ''Descartes and the Dutch : Early Reactions to Cartesian Philosophy, 1637-1650'', Carbondale, Southern Illinois University Press, 1992.</ref>. En France, l'œuvre cartésienne suscite également des controverses dans les universités, qui restent largement aristotéliciennes, et l'enseignement du cartésianisme y sera plusieurs fois entravé : en 1671 puis en 1691, des interdictions seront prononcées contre la diffusion des thèses cartésiennes dans les collèges. Les œuvres de Descartes seront en partie mises à l'Index par Rome en 1663<ref>Sur ces épisodes, voir Tad M. Schmaltz, ''Radical Cartesianism : The French Reception of Descartes'', Cambridge, Cambridge University Press, 2002. Sur la question particulière de l'eucharistie, voir Jean-Robert Armogathe, ''Theologia cartesiana : l'explication physique de l'Eucharistie chez Descartes et dom Desgabets'', La Haye, Martinus Nijhoff, 1977.</ref>. Un point particulièrement sensible concerne l'eucharistie : la réduction cartésienne de la substance corporelle à l'étendue rend difficile l'explication scolastique de la transsubstantiation, qui supposait la persistance d'accidents sans substance. Descartes, conscient du problème, propose dans les ''Quatrièmes Réponses aux Objections'' et dans la correspondance avec Mesland<ref>Lettre à Mesland du 9 février 1645, AT IV, p. 161-170.</ref> une réinterprétation du dogme à partir de sa propre métaphysique ; ces explications ne convaincront pas tous les théologiens et alimenteront la suspicion d'hétérodoxie.
À Port-Royal, en revanche, le cartésianisme rencontre un accueil largement favorable. Antoine Arnauld, auteur des ''Quatrièmes Objections'' aux ''Méditations'', est l'un des premiers grands défenseurs de la philosophie cartésienne ; il en utilise les éléments dans ''La Logique ou l'Art de penser'' (1662), composée avec Pierre Nicole. Blaise Pascal, plus réservé, prend cependant ses distances à l'égard d'une métaphysique qu'il juge trop ambitieuse et trop indifférente aux questions existentielles : son célèbre jugement, « je ne puis pardonner à Descartes »<ref>Blaise Pascal, ''Pensées'', éd. Lafuma, fragment 1001 (éd. Brunschvicg, fragment 77) : « Je ne puis pardonner à Descartes : il aurait bien voulu, dans toute sa philosophie, se pouvoir passer de Dieu ; mais il n'a pu s'empêcher de lui faire donner une chiquenaude, pour mettre le monde en mouvement ; après cela, il n'a plus que faire de Dieu. »</ref>, exprime une réticence au projet cartésien d'autonomie de la raison.
Sur le plan strictement philosophique, le dualisme cartésien soulève des difficultés que reprendront les principaux successeurs. La question de l'interaction entre deux substances hétérogènes occupera Malebranche, Spinoza et Leibniz. Malebranche, refusant toute action du corps sur l'âme, développe l'occasionalisme : Dieu seul est cause efficiente, et les événements corporels ne sont que l'occasion des modifications de l'âme. Spinoza, récusant le dualisme lui-même, identifie la pensée et l'étendue comme deux attributs d'une substance unique, Dieu ou la Nature. Leibniz propose l'harmonie préétablie, selon laquelle l'âme et le corps suivent chacun leurs propres lois sans interaction réelle, leurs séries d'événements étant coordonnées de toute éternité par Dieu.
Sur le plan scientifique, la physique cartésienne joue un rôle de premier plan dans l'établissement du mécanisme moderne. La théorie des tourbillons offre un modèle cosmologique cohérent qui sera enseigné dans une grande partie de l'Europe pendant près d'un siècle. Mais la publication des ''Principia mathematica'' de Newton en 1687 ouvre une longue confrontation entre cartésiens et newtoniens : la physique des tourbillons, qui prétendait expliquer mécaniquement le mouvement des planètes par les chocs de la matière subtile, se voit progressivement supplantée par la mécanique newtonienne, qui introduit une attraction universelle agissant à distance. Au {{s|XVIII}}, le modèle cartésien est encore défendu en France, notamment par Bernard de Fontenelle, ainsi que dans certains milieux savants des Provinces-Unies ; mais l'autorité de Newton finit par s'imposer dans la communauté savante européenne au milieu du siècle. La géométrie analytique, en revanche, demeure l'une des contributions majeures de Descartes à l'histoire des mathématiques.
La méthode du doute, la primauté accordée à la certitude du ''cogito'', la théorie des idées innées et la distinction du sujet et de l'objet constituent des points de référence obligés de toute la philosophie ultérieure. Locke et Hume contestent l'innéisme en faisant fond sur l'expérience, tandis que Kant entreprend de refonder la métaphysique à partir d'une critique de la raison pure dans laquelle il reproche à Descartes son traitement de l'existence comme prédicat. Au {{s|XX}}, Husserl revendique explicitement l'héritage cartésien dans ses ''Méditations cartésiennes'' (1931), tout en transformant le ''cogito'' en sujet transcendantal de la phénoménologie. Sartre, Merleau-Ponty et plus largement la phénoménologie française entretiendront un rapport complexe à Descartes, fait à la fois de reprise et de critique. Les sciences cognitives et les philosophies analytiques de l'esprit héritent quant à elles, sur le mode souvent polémique, du problème mind-body que Descartes a légué à la modernité.
== Notes et références ==
<references />
== Bibliographie ==
=== Éditions des œuvres de Descartes ===
* Charles Adam et Paul Tannery (éd.), ''Œuvres de Descartes'', 11 vol., Paris, Léopold Cerf, 1897-1913 ; nouvelle présentation augmentée, 11 vol., Paris, Vrin-CNRS, 1964-1974 (référence usuelle, citée AT suivi du tome et de la page).
* Ferdinand Alquié (éd.), ''Œuvres philosophiques de Descartes'', 3 vol., Paris, Garnier, 1963-1973.
* René Descartes, ''Œuvres complètes'', Paris, Gallimard, « Bibliothèque de la Pléiade », vol. I, 2009 (édition dirigée par Jean-Marie et Michelle Beyssade).
=== Études biographiques et générales ===
* Stephen Gaukroger, ''Descartes : une biographie intellectuelle'', traduit de l'anglais, Paris, PUF, 1997 (édition originale Oxford, 1995).
* Geneviève Rodis-Lewis, ''Descartes. Biographie'', Paris, Calmann-Lévy, 1995.
* Geneviève Rodis-Lewis, ''L'Œuvre de Descartes'', 2 vol., Paris, Vrin, 1971.
=== Études sur la métaphysique et la théorie de la connaissance ===
* Ferdinand Alquié, ''La Découverte métaphysique de l'homme chez Descartes'', Paris, PUF, 1950.
* Martial Gueroult, ''Descartes selon l'ordre des raisons'', 2 vol. (''L'âme et Dieu'' ; ''L'âme et le corps''), Paris, Aubier, 1953.
* Jean-Marie Beyssade, ''La Philosophie première de Descartes'', Paris, Flammarion, 1979.
* Harry Frankfurt, ''Démons, rêveurs et fous : la défense de la raison dans les Méditations de Descartes'', traduit de l'anglais, Paris, PUF, 1989 (édition originale 1970).
* Jean-Luc Marion, ''Sur la théologie blanche de Descartes'', Paris, PUF, 1981.
* Jean-Luc Marion, ''Questions cartésiennes'', 2 vol., Paris, PUF, 1991 et 1996.
* Vincent Carraud, ''Causa sive ratio. La raison de la cause, de Suarez à Leibniz'', Paris, PUF, 2002.
* Gary Hatfield, ''Descartes and the Meditations'', Londres, Routledge, 2003.
=== Études sur la physique et la science cartésiennes ===
* Daniel Garber, ''La Physique métaphysique de Descartes'', traduit de l'anglais, Paris, PUF, 1999 (édition originale Chicago, 1992).
* Desmond Clarke, ''Descartes's Theory of Mind'', Oxford, Oxford University Press, 2003.
* Tarek R. Dika, ''Descartes's Method: The Formation of the Subject of Science'', Oxford, Oxford University Press, 2023.
=== Études sur la morale, l'anthropologie et les passions ===
* Geneviève Rodis-Lewis, ''La Morale de Descartes'', Paris, PUF, 1957.
* Denis Kambouchner, ''L'Homme des passions. Commentaires sur Descartes'', 2 vol., Paris, Albin Michel, 1995.
* Denis Kambouchner, ''Descartes et la philosophie morale'', Paris, Hermann, 2008.
=== Études sur le cartésianisme et sa réception ===
* Tad M. Schmaltz, ''Early Modern Cartesianisms : Dutch and French Constructions'', New York, Oxford University Press, 2017.
* Steven Nadler, ''The Cambridge Companion to Malebranche'', Cambridge, Cambridge University Press, 2000.
* Theo Verbeek, ''Descartes and the Dutch : Early Reactions to Cartesian Philosophy, 1637-1650'', Carbondale, Southern Illinois University Press, 1992.
=== Ouvrages de référence ===
* Frédéric de Buzon et Denis Kambouchner, ''Le Vocabulaire de Descartes'', Paris, Ellipses, 2002 (nouvelle édition 2011).
* Jean-François Pradeau (dir.), ''Histoire de la philosophie'', Paris, Seuil, 2009.
=== Sources textuelles citées dans cet article ===
* ''Discours de la méthode'' (1637), parties III à V : morale par provision, métaphysique du ''cogito'', physique et physiologie. AT VI.
* ''Méditations métaphysiques'' (1641, 1642 ; trad. fr. 1647), I à VI. AT VII (latin) ; AT IX-1 (français).
* ''Principes de la philosophie'' (1644 ; trad. fr. 1647), première partie, art. 7-10, 22-24, 39, et passim. AT VIII-1 ; AT IX-2.
* ''Les Passions de l'âme'' (1649), première et troisième parties, en particulier art. 27, 30, 153, 161. AT XI.
* ''Notae in programma'' (1648), réponse au placard de Henricus Regius. AT VIII-2.
* Lettre à [[Marin Mersenne|Mersenne]] du 15 avril 1630 (libre création des vérités éternelles), AT I, p. 145-146.
* Lettre à Mersenne du 6 mai 1630 et du 27 mai 1630 (incompréhensibilité de Dieu et vérités éternelles), AT I, p. 149-153.
* Lettres à la princesse Élisabeth de Bohême, mai-juin 1643 (notions primitives et union de l'âme et du corps) ; août-septembre 1645 (morale et béatitude), AT III et IV.
* Lettre à Henry More du 5 février 1649 (statut de la pensée chez les animaux), AT V, p. 273-279.
* Lettres à Denis Mesland, 2 mai 1644 et 9 février 1645 (libre arbitre, vérités éternelles, eucharistie), AT IV.
{{DEFAULTSORT:Descartes}}
[[Catégorie:Philosophe]]
ie79156r5096b6gfsl9rdoqzc4n6u0i
Dictionnaire de philosophie/Willard Van Orman Quine/Barbe de Platon
0
83960
768380
768293
2026-06-23T03:55:00Z
PandaMystique
119061
768380
wikitext
text/x-wiki
{{DicoPhilo|Barbe de Platon|lecture=oui}}
[[Fichier:Plato Silanion Musei Capitolini MC1377.png|vignette|Buste de Platon (copie romaine d'après Silanion). L'énigme du non-être qu'il explore est ce que Quine surnomme « la barbe de Platon ».]]
« Qu'y a-t-il ? » La question de départ paraît si simple qu'on hésite à la prendre au sérieux. C'est pourtant celle de l'ontologie, cette partie de la philosophie qui se demande [[Dictionnaire de philosophie/Existence|ce qui existe]]. Le mot impressionne, l'idée est ordinaire : faire de l'ontologie, c'est tenter de dresser l'inventaire de ce qu'il y a. Presque tout le monde accordera qu'il y a des pierres, des arbres, des animaux, des villes, des personnes. Les choses se compliquent dès qu'on parle de Pégase, de Sherlock Holmes, du nombre 7, d'une propriété comme la rougeur, d'une espèce animale prise en général (le cheval, et non tel cheval dans un pré), ou d'un président possible qui ne fut jamais élu. Quine ouvre son article « De ce qui est »<ref>Willard Van Orman Quine, « De ce qui est », dans ''Du point de vue logique. Neuf essais logico-philosophiques'', traduction sous la direction de Sandra Laugier, Paris, Vrin, 2003.</ref> par cette observation : à la question « Qu'y a-t-il ? », on peut répondre d'un mot, « tout », mais cette réponse ne règle rien, car le désaccord renaît à chaque exemple. Le problème n'est donc pas un jeu d'école. Il touche notre manière de parler, de raisonner, de faire des sciences, de bâtir des théories, et jusqu'à la question de savoir ce que nous acceptons au juste quand nous tenons une phrase pour [[Dictionnaire de philosophie/Vérité|vraie]].
Quine met l'affaire en scène. Imaginons deux philosophes : l'un, qu'il appelle McX, soutient que certaines choses existent ; l'autre les refuse. Celui qui affirme formule le désaccord sans peine : « mon adversaire, dira-t-il, refuse de reconnaître certaines entités », une entité étant simplement ce que l'on compte comme existant. Mais celui qui nie semble pris à son propre piège. Comment dira-t-il ce qu'il rejette sans se contredire ? S'il déclare « il y a des choses que McX admet et que je refuse », il vient d'accorder qu'il y a ces choses, donc d'admettre ce qu'il voulait nier. Le partisan du « non » paraît condamné au silence.
La difficulté tient à une habitude de pensée : nous parlons souvent comme si nommer une chose suffisait à lui donner une forme d'être. « Pégase n'existe pas », dis-je ; mais je parle bien de Pégase, et comment parler de lui s'il n'était rien du tout ? C'est l'antique problème du non-être, celui que Platon affronte dans le ''[[s:Le Sophiste|Sophiste]]'' : pour dire qu'une chose n'est pas, il semble qu'il faille d'abord la poser comme quelque chose. Quine baptise cette difficulté « la barbe de Platon ». L'image est ironique : une barbe drue s'accroche partout et finit par émousser la lame. La lame, ici, c'est le rasoir d'Occam, ce principe d'économie qui déconseille de multiplier les êtres sans nécessité et invite, entre deux explications, à préférer la plus sobre. Une voiture refuse de démarrer : inutile d'imaginer un lutin sous le capot quand une batterie à plat suffit. Quine veut passer ce rasoir sur le langage, pour qu'il ne nous oblige pas à peupler le monde d'objets douteux.
[[Fichier:Peter Paul Rubens - Bellérophon, monté sur Pégase transperce la Chimère.JPG|vignette|Pégase, le cheval ailé, monté par Bellérophon (Pierre Paul Rubens). Nous comprenons parfaitement le nom sans qu'aucun cheval ailé existe.]]
Restons sur Pégase, le cheval ailé de la mythologie. McX pourrait raisonner ainsi : si le mot « Pégase » ne désignait rien, nous ne dirions rien en l'employant ; or nous disons quelque chose ; donc Pégase possède une forme d'être. Le raisonnement a de l'allure, mais il confond deux choses. Comprendre un nom ne prouve pas qu'un objet lui réponde. Je comprends parfaitement « le père Noël », « la montagne d'or », « le cercle carré » ou « le détective Sherlock Holmes » sans devoir admettre qu'un tel être existe. Pressé, McX se replie sur une parade : Pégase existerait du moins comme idée dans les esprits. Mais c'est déplacer le problème. L'idée de Pégase existe peut-être dans une tête, comme une image ; elle n'est pas Pégase. De même, l'idée du Parthénon n'est pas le Parthénon : celui-ci est un édifice de pierre, à Athènes, que l'on peut visiter et photographier ; celle-là est une représentation que l'on forme les yeux fermés. Quand nous nions Pégase, ce n'est pas l'image des livres ou de nos esprits que nous nions, car cette image existe bel et bien ; c'est un cheval ailé de chair et de sang, que l'on pourrait approcher, nourrir, photographier, et dont nous disons qu'il ne galope nulle part.
[[Fichier:Parthenon from west.jpg|vignette|gauche|Le Parthénon, à Athènes. Quine distingue l'édifice de pierre, que l'on peut visiter, de l'idée que nous en formons.]]
Quine examine alors une position plus fine, qu'il prête à un certain Wyman. Pégase, dit Wyman, n'est pas une simple idée : il est un possible non actualisé. Il aurait pu exister, mais ne s'est pas réalisé. Dire « Pégase n'existe pas » reviendrait alors seulement à dire qu'il ne s'est pas réalisé, comme on dirait que le Parthénon n'est pas rouge : la couleur lui fait défaut sans qu'il cesse d'être. La parade séduit, car nous parlons sans cesse de possibles : un voyage que nous n'avons pas fait, une maison que nous aurions pu construire, une décision qui aurait pu être prise. Mais Wyman fait un pas de trop. S'il change chaque possible en objet, l'univers se peuple aussitôt d'une foule d'êtres fantomatiques : non plus seulement les personnes et les maisons réelles, mais toutes les personnes possibles, toutes les maisons possibles, tout un peuple de presque-choses.
Quine raille cette prolifération par des questions faussement naïves. Combien d'hommes possibles se tiennent en ce moment dans l'embrasure de cette porte ? L'homme possible gros et l'homme possible chauve sont-ils deux, ou un seul qui serait à la fois gros et chauve ? Y a-t-il, dans cette embrasure, plus d'hommes minces possibles que de gros ? Deux possibles qui se ressemblent en tout point font-ils deux, ou bien un ? Ces questions amusent, mais elles touchent un point sérieux : avec ces prétendus objets, nous ne savons plus ni les compter, ni décider quand deux d'entre eux sont identiques ou différents.
Or l'identité est la condition la plus modeste pour parler clairement d'objets. Pour compter des choses, il faut pouvoir dire où l'une finit et où l'autre commence. Je compte les chaises d'une salle : encore faut-il savoir si celle-ci est la même que celle d'à côté. Je range une bibliothèque : je dois distinguer deux exemplaires d'un même livre. Je parle d'une personne : je dois pouvoir dire si celle d'aujourd'hui est celle d'hier. Avec les possibles de Wyman, l'opération se brouille : aucun fait ne décide s'ils sont un ou deux. Ce critère, Quine en fera plus tard une devise, « pas d'entité sans identité » : n'admettons pas dans notre inventaire du monde des objets que nous serions incapables de distinguer ou de dénombrer. Que vaut un domaine d'objets dont on ne peut dire ni qu'ils sont identiques à eux-mêmes ni qu'ils diffèrent les uns des autres ?
De là le mot de « bidonville des possibles » : un quartier bâti sans plan, encombré, sans règles nettes, où l'on a entassé des êtres faute d'avoir su analyser notre façon de parler. Ce que Quine reproche à Wyman n'est pas de parler de possibilités, car nous pouvons toujours dire qu'une chose aurait pu arriver. La faute commence quand on change chaque possibilité en objet, comme si le seul fait de pouvoir dire « cela aurait pu être » obligeait à loger un être possible quelque part. Mieux vaut raser le bidonville ; le rasoir d'Occam retrouve alors son tranchant.
L'enjeu général se laisse maintenant énoncer. Il faut distinguer ce dont nous parlons de ce que nous sommes tenus d'admettre comme existant. Nous pouvons parler de mythes, de fictions, de projets abandonnés, d'hypothèses et de possibilités sans remplir pour autant notre ontologie d'objets fantomatiques : une expression peut être signifiante sans fonctionner comme le nom d'un objet, et c'est de la confusion entre ces deux choses que naissait l'énigme du non-être. Reste à savoir comment nier proprement l'existence d'une chose sans paraître la concéder. La réponse de Quine est nette : ce qui engage une théorie à admettre des objets, ce ne sont pas les noms qu'elle emploie, car les noms embarrassants peuvent être traités comme des descriptions, au besoin grâce à un prédicat construit pour l'occasion, puis analysés à la manière de Russell ; ce sont les tournures du type « il existe quelque chose tel que… ». Dire « Pégase n'existe pas » n'engage alors à rien, tandis que dire « il existe quelque chose qui est un électron » engage bien à admettre des électrons. C'est ce mécanisme que la section suivante développe.
== Notes et références ==
{{références|colonnes=2}}
{{DEFAULTSORT:Barbe de Platon}}
1y2e5z52t9g3yayhz7cm3b8deqnguod
Dictionnaire de philosophie/W
0
83961
768376
2026-06-23T03:29:24Z
PandaMystique
119061
Page créée avec « {{DicoPhilo|W}} <div style="display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:2em; width:100%; margin-bottom:2em;"> <div style="padding:1.5em; background:linear-gradient(135deg, #ffffff40 0%, #e0e4e840 100%); border-radius:10px; box-shadow:0 3px 10px rgba(0,0,0,0.1);"> :[[Dictionnaire de philosophie/Timothy Williamson|Williamson, Timothy]] </div> <div style="padding:1.5em; background:linear-gradient(135deg, #ffffff40 0%, #e0e4e840 100... »
768376
wikitext
text/x-wiki
{{DicoPhilo|W}}
<div style="display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:2em; width:100%; margin-bottom:2em;">
<div style="padding:1.5em; background:linear-gradient(135deg, #ffffff40 0%, #e0e4e840 100%); border-radius:10px; box-shadow:0 3px 10px rgba(0,0,0,0.1);">
:[[Dictionnaire de philosophie/Timothy Williamson|Williamson, Timothy]]
</div>
<div style="padding:1.5em; background:linear-gradient(135deg, #ffffff40 0%, #e0e4e840 100%); border-radius:10px; box-shadow:0 3px 10px rgba(0,0,0,0.1);">
</div>
<div style="padding:1.5em; background:linear-gradient(135deg, #ffffff40 0%, #e0e4e840 100%); border-radius:10px; box-shadow:0 3px 10px rgba(0,0,0,0.1);">
</div>
</div>
{{PhiloRecherche}}
{{autocat}}
8ic5r5m29vfj8gjam2pkr610xt94chb
Dictionnaire de philosophie/Timothy Williamson
0
83962
768377
2026-06-23T03:38:37Z
PandaMystique
119061
Page créée avec « [[Fichier:Professor Timothy Williamson (cropped).JPG|vignette|Timothy Williamson.]] Philosophe britannique né à Uppsala, en Suède, en 1955, Timothy Williamson compte parmi les figures les plus influentes de la [[philosophie analytique]] contemporaine. Titulaire de la chaire Wykeham de logique à l'université d'Oxford de 2000 à 2023, il a exercé une influence majeure sur plusieurs domaines que l'on tenait pour bien distincts : la théorie du [[vague]], l'[... »
768377
wikitext
text/x-wiki
[[Fichier:Professor Timothy Williamson (cropped).JPG|vignette|Timothy Williamson.]]
Philosophe britannique né à Uppsala, en Suède, en 1955, Timothy Williamson compte parmi les figures les plus influentes de la [[philosophie analytique]] contemporaine. Titulaire de la chaire Wykeham de logique à l'université d'Oxford de 2000 à 2023, il a exercé une influence majeure sur plusieurs domaines que l'on tenait pour bien distincts : la théorie du [[vague]], l'[[épistémologie]], la [[métaphysique]] de la [[modalité]] et la réflexion sur la méthode même de la philosophie. Une thèse le rendit d'abord célèbre, et elle prend la forme d'un paradoxe assumé. Nos mots vagues, comme « chauve » ou « tas », ont une extension déterminée : il existe, pour chacun, une frontière qui sépare les cas où le mot s'applique des cas où il ne s'applique pas. Simplement, dans les cas limites, nous sommes hors d'état de savoir où passe cette frontière. Le vague n'est donc pas, pour Williamson, une indétermination des choses ; c'est une certaine forme de notre ignorance<ref>Sur l'[[épistémicisme]] comme théorie de ce en quoi le vague consiste, et non comme négation du vague, voir ''Vagueness'', Londres, Routledge, 1994, chap. 7-8, et la préface.</ref>. De cette idée première, qui réhabilite la [[logique classique]] là où plusieurs approches concurrentes proposaient de la réviser, procède une œuvre d'une rare unité. On y retrouve partout la même conviction : il existe un monde indépendant de nous, la [[connaissance]] en est la pierre angulaire, et la philosophie ne diffère pas en nature des autres formes d'enquête.
== Repères biographiques ==
[[Fichier:New College, Oxford 2011 04.jpg|vignette|New College (Oxford), dont Williamson est fellow depuis 2000.]]
Williamson naît à Uppsala de parents britanniques. Sa formation se fait tout entière à Oxford, au collège de Balliol, où il étudie d'abord les mathématiques et la philosophie, puis prépare un doctorat de philosophie qu'il soutient au tout début des années 1980, sous une direction qui passa successivement de David Bostock à Bill Newton-Smith, puis à [[Michael Dummett]]. Cette double éducation laisse une marque durable. Le goût de la précision formelle, l'aisance dans la logique modale quantifiée, le refus de toute approximation dans la conduite d'un argument tiennent sans doute à cette formation initiale. Ses premiers postes le mènent hors d'Oxford. Il enseigne au Trinity College de Dublin, de 1980 à 1988, avant de revenir comme fellow et tuteur à University College, à Oxford. En 1995, l'université d'Édimbourg lui confie la chaire de logique et de métaphysique, qu'il occupe cinq ans.
L'année 2000 marque sa consécration institutionnelle : il est élu à la chaire Wykeham de logique d'Oxford, une chaire que Dummett avait occupée de 1979 à 1992, et dont il devient ainsi l'un des successeurs<ref>Dummett occupa la chaire Wykeham de logique de 1979 à 1992 ; Williamson y fut élu en 2000 et l'occupa jusqu'en 2023. Williamson ne succéda donc pas immédiatement à Dummett.</ref>. Fellow de New College, il y demeure jusqu'en 2023, date à laquelle il prend le titre de professeur émérite tout en continuant d'y enseigner et d'y diriger des recherches. À cette base oxonienne s'ajoutent, au fil des ans, de nombreux postes de visite, parmi lesquels une charge régulière de professeur invité à Yale, où il se rend quelques semaines chaque année, et une affiliation à l'université de la Suisse italienne. Membre de la British Academy et de la Royal Society of Edinburgh, ancien président de l'Aristotelian Society et de la Mind Association, il a formé ou codirigé un grand nombre de doctorants, dont plusieurs occupent aujourd'hui des positions de premier plan. Il écrit aussi pour un public plus large, dans le Times Literary Supplement comme dans la rubrique de philosophie du New York Times, signe d'une volonté constante de faire descendre les questions abstraites dans la conversation commune.
[[Fichier:Michael Dummett September 2004.jpg|vignette|Michael Dummett, qui dirigea en partie sa thèse et le précéda à la chaire Wykeham.]]
Son parcours épouse, à sa manière, l'histoire de la philosophie analytique des cinquante dernières années. Formé dans le sillage de Dummett et du tournant linguistique, cette idée selon laquelle les problèmes philosophiques seraient au fond des problèmes sur le langage, Williamson s'en est progressivement détaché pour reconstruire une métaphysique et une épistémologie pleinement réalistes. Il représente ainsi le moment où la discipline, après avoir longtemps suspecté ses propres ambitions spéculatives, ose de nouveau parler du monde et non plus seulement de nos façons d'en parler.
== Un tempérament et deux convictions ==
Avant d'entrer dans le détail des thèses, il faut saisir l'esprit qui les anime, car il donne à l'œuvre sa cohérence. Williamson philosophe en homme qui croit que les désaccords se tranchent. Là où une certaine tradition voyait dans la philosophie un exercice d'assouplissement, une thérapie destinée à nous délivrer de fausses questions, il défend l'idée que les questions philosophiques sont de vraies questions, dotées de réponses vraies ou fausses, et que l'on s'en approche par l'argument et par la preuve. Le titre, à demi provocateur, qu'il a donné à son dialogue de 2015, ''Tetralogue: I'm Right, You're Wrong'', dit assez cette humeur : on peut respecter son interlocuteur sans renoncer à penser qu'il se trompe.
Deux fils traversent l'ensemble, et il est utile de les nommer dès maintenant pour ne pas les perdre de vue. Le premier est une découverte de structure, faite très tôt et reprise sans cesse : celle de la connaissance inexacte. Nos capacités de discrimination sont grossières ; entre deux situations imperceptiblement différentes, nous ne saurions dire laquelle nous place du bon côté d'une frontière. De ce fait élémentaire, Williamson tire un principe qu'il nomme, en anglais, ''margin for error'', la marge d'erreur : pour savoir quelque chose par observation, il faut disposer d'une marge de sécurité, sans quoi l'on aurait tout aussi bien pu se tromper. Ce principe, né de l'étude des relations d'indiscernabilité dans son premier livre, irrigue ensuite sa théorie du vague, puis sa théorie de la connaissance. Le second fil est une conviction de méthode : la philosophie n'occupe aucune position d'exception parmi les savoirs, elle ne possède ni faculté propre ni méthode purement [[a priori]], elle progresse, comme les sciences, par inférence vers la meilleure explication. Présente dès ''The Philosophy of Philosophy'', en 2007, cette thèse se déploie jusqu'à ses essais d'éthique de 2025, étendue à des territoires toujours nouveaux ; c'est elle que recouvrira, de façon de plus en plus assumée, le mot d'anti-exceptionnalisme.
Sous ces deux fils court une basse continue : le [[réalisme]]. Il y a une manière dont les choses sont, indépendamment de ce que nous en savons. La [[bivalence]], cette thèse sémantique selon laquelle toute proposition est vraie ou fausse, et la logique classique qui en règle les inférences restent, à ses yeux, les meilleurs instruments pour traiter nos énoncés sur le monde, non qu'elles le décriraient à la façon d'une théorie physique, mais parce qu'elles figurent dans la meilleure théorie d'ensemble de l'inférence et de la signification ; et notre ignorance, si vaste soit-elle, ne doit jamais être confondue avec une indétermination des choses elles-mêmes. Cette distinction, banale en apparence, suffit à départager Williamson de la plupart de ses adversaires.
== Les premiers travaux : identité, indiscernabilité, critères ==
[[Fichier:Young frege.jpg|vignette|Gottlob Frege, dont le critère d'identité des directions sert de point de départ aux premiers travaux de Williamson.]]
On présente parfois l'œuvre comme si elle commençait avec le paradoxe du tas. Ce serait oublier les premiers travaux, où se forge pourtant l'outil dont toute la suite tirera parti. Dès 1986, dans un article au titre austère, « Criteria of Identity and the Axiom of Choice », puis plus amplement dans son premier livre, ''Identity and Discrimination'', paru en 1990, Williamson reprend une question que les philosophes posent depuis [[Gottlob Frege|Frege]] : qu'est-ce qu'un critère d'identité<ref>« Criteria of Identity and the Axiom of Choice », ''The Journal of Philosophy'', vol. 83, n° 7, 1986, p. 380-394 ; ''Identity and Discrimination'', Oxford, Basil Blackwell, 1990. L'analyse établit que, lorsque la relation de base est réflexive, symétrique mais non transitive, aucune relation n'obéit à la contrainte « forte » d'un critère d'identité, et que plusieurs y obéissent au sens « faible », l'existence d'un tel critère étant équivalente à l'[[axiome du choix]].</ref> ? Frege en avait donné l'exemple canonique. Pour penser la direction d'une droite, disait-il, il faut d'abord savoir ce que c'est, pour deux droites, que d'être parallèles : la direction de la droite ''a'' est identique à la direction de la droite ''b'' si et seulement si ''a'' et ''b'' sont parallèles. Un critère d'identité, c'est cela : une relation entre des objets de départ, ici les droites, qui fixe l'identité d'objets dérivés, ici les directions. Et pour faire ce travail, la relation doit posséder une forme bien précise, celle des relations d'équivalence : réflexive, symétrique et transitive, à l'image de l'identité elle-même.
Or Williamson met le doigt sur un cas où le candidat le plus naturel échoue à remplir cette condition. Cherchons un critère d'identité pour la couleur perçue. La relation qui s'impose est l'indiscernabilité : deux échantillons ont la même couleur perçue lorsque l'œil ne parvient pas à les distinguer. Mais cette relation a un défaut qui la disqualifie. Elle n'est pas transitive. Un premier échantillon peut être indiscernable d'un deuxième, le deuxième d'un troisième, et le premier se distinguer pourtant nettement du troisième ; de minuscules écarts, insensibles un à un, finissent par s'additionner. L'indiscernabilité ne peut donc pas tenir lieu de critère d'identité, puisqu'un critère doit être transitif et qu'elle ne l'est pas.
La suite de l'analyse est d'une grande technicité, et c'est là qu'intervient l'axiome du choix, ce principe de la théorie des ensembles qui autorise à prélever un élément dans chacun des membres d'une collection, fût-elle infinie. Williamson démontre un résultat à deux faces. Là où la relation de départ n'est pas transitive, aucune relation ne peut servir de critère d'identité au sens fort ; et si l'on se contente d'un critère au sens faible, l'axiome du choix garantit qu'il en existe, mais plusieurs à la fois, sans qu'aucun ait un meilleur titre que les autres à passer pour le bon. Mieux, l'hypothèse même qu'un tel critère existe toujours s'avère équivalente à l'axiome du choix. La conséquence inquiète notre confiance ordinaire dans l'identité : partout où la transitivité de l'indiscernabilité se brise, nos jugements d'identité perçue perdent toute valeur de vérité déterminée, et le concept lui-même menace de n'être pas bien défini. Williamson illustre la même structure par l'identité personnelle, par ces cas de fission où une personne se scinderait en deux continuateurs : auquel des deux faut-il l'identifier ? Aucune réponse ne s'impose, et le choix paraît arbitraire.
Ce premier livre n'est pas un exercice isolé de logique. Il contient en germe presque tout ce qui suivra. L'idée que des différences imperceptibles s'accumulent jusqu'à devenir perceptibles, que nos capacités de discrimination sont par nature grossières, qu'il faut une certaine marge entre deux situations pour pouvoir les départager en connaissance de cause : voilà déjà le principe de marge d'erreur. Il reparaîtra au cœur de la théorie du vague, puis de la théorie de la connaissance. La structure découverte à propos des couleurs, transposée aux significations, puis aux états de connaissance, deviendra la matrice de toute l'œuvre<ref>Le lien entre l'indiscernabilité non transitive et le principe de marge d'erreur est noué dans ''Identity and Discrimination'', 1990, puis formalisé dans « Inexact Knowledge », ''Mind'', vol. 101, 1992, et dans ''Vagueness'', 1994, chap. 8 (p. 229 et suiv.). La marge d'erreur y est posée comme condition de fiabilité : une croyance ne vaut comme connaissance que si la proposition reste vraie dans tous les cas suffisamment semblables.</ref>.
== Le vague et l'ignorance ==
[[Fichier:Color gradient illustrating a sorites paradox.png|vignette|Un dégradé continu : à partir de quelle nuance le rouge cesse-t-il d'être rouge ? L'absence de frontière visible est au cœur du sorite.]]
Sa notoriété philosophique commence surtout avec un casse-tête vénérable, le [[sorite]], du grec ''sôros'', le tas. Un seul grain de blé ne fait pas un tas ; ajouter un grain à ce qui n'est pas un tas ne saurait le transformer en tas ; donc, de proche en proche, dix mille grains ne font toujours pas un tas. La conclusion est manifestement absurde, et pourtant chacune des prémisses paraît irréprochable. Le paradoxe vaut pour tous les prédicats vagues de notre langue : « chauve », « grand », « mince », « rouge ». Combien de cheveux faut-il perdre pour devenir chauve ? À quel instant précis l'enfant que nous fûmes a-t-il cessé d'être un enfant ? Ces questions semblent n'admettre aucune réponse, et c'est cette absence apparente de frontière nette qui paraît constituer le vague lui-même.
Le premier tiers de ''Vagueness'' est d'ailleurs une histoire, conduite avec une érudition que l'on n'attend pas toujours d'un logicien<ref>''Vagueness'', chap. 1, pour l'histoire du paradoxe, de Chrysippe à Frege et [[Bertrand Russell|Russell]].</ref>. Williamson y exhume la longue carrière du paradoxe, depuis les Mégariques qui l'inventèrent jusqu'aux logiciens modernes qui le redécouvrirent. Il s'attarde sur la réponse de Chrysippe le stoïcien, qui se taisait avant la question embarrassante, comme un cocher retient ses chevaux au bord du précipice, et il note que les stoïciens, loin de nier l'existence d'une coupure nette, l'acceptaient au contraire de bon cœur. Il rappelle que Leibniz, répondant à Locke, discutait déjà du Tas et du Chauve, que Hegel se servait du sorite pour illustrer le passage du quantitatif au qualitatif, l'eau qui se change soudain en vapeur ou en glace. Avec Frege et Russell, le vague redevient une menace pour la logique : Frege le bannissait comme un défaut du langage ordinaire, Russell le rattachait à la non-transitivité de l'indiscernabilité et au seuil de la discrimination. En reconstruisant cette tradition, Williamson ne fait pas seulement œuvre d'historien : il montre que sa propre solution, l'idée d'une frontière nette mais cachée, a des ancêtres, et qu'elle est moins extravagante qu'elle n'en a l'air.
Trois grandes stratégies se partageaient le terrain lorsque Williamson publie ''Vagueness'', en 1994. La première, issue des logiques à valeurs multiples, propose de remplacer le couple vrai-faux par un continuum de degrés de vérité : « Il est chauve » serait vrai à 0,6, ni tout à fait vrai ni tout à fait faux. La deuxième, la méthode des survaluations, conserve le vrai et le faux mais admet que certaines propositions n'ont aucune valeur de vérité dans les cas limites ; une phrase ne devient vraie que si elle l'est sous toutes les façons admissibles de rendre le terme précis. La troisième, le nihilisme, conclut du paradoxe que les prédicats vagues sont tout simplement incohérents, qu'il n'y a ni tas ni chauves. Williamson examine ces trois voies avec une patience d'horloger, et les écarte l'une après l'autre, parce que toutes paient leur solution d'un sacrifice : elles renoncent à la logique classique, ou à la bivalence, ou aux choses mêmes.
La thèse qu'il leur substitue déconcerte au premier abord, et il ne s'en cache pas. Sa préface s'ouvre sur un aveu : ce livre, écrit-il, est né de ses tentatives pour réfuter sa propre thèse principale, à savoir que le vague consiste dans notre ignorance des frontières nettes de nos concepts, et qu'il n'exige donc aucune révision de la logique standard<ref>La préface de ''Vagueness'' présente le livre comme né de tentatives pour réfuter la thèse épistémique : le vague consiste dans notre ignorance des frontières nettes de nos concepts.</ref>. L'idée est la suivante. Il existe bel et bien un nombre de cheveux à partir duquel on est chauve : un homme avec ce nombre de cheveux est chauve, un homme avec un cheveu de plus ne l'est pas. La coupure existe. Simplement, nous ne pouvons pas savoir où elle passe. Le vague n'est pas une propriété du monde, une indétermination des faits ; c'est une variété particulière de notre ignorance. Cette position, que l'on nomme aujourd'hui épistémicisme, permet de tout conserver : la bivalence, le tiers exclu, la logique classique dans son intégrité. Le sorite est résolu d'un mot : sa prémisse inductive, l'idée qu'un grain de plus ne fait jamais la différence, est tout bonnement fausse. Il y a un grain qui la fait. Nous ignorons lequel.
Qu'on ne s'y trompe pas : Williamson ne nie pas que nos mots soient vagues. C'est précisément le vague qu'il entreprend d'expliquer, et son originalité est de proposer une théorie de ce en quoi cette vagueur consiste. Cette théorie l'identifie à une ignorance plutôt qu'à un flou des choses. Reste alors l'objection qui vient aussitôt à l'esprit, et qui faisait jusque-là figure de réfutation : si ces frontières existaient, nous devrions pouvoir les trouver ; or nous ne le pouvons pas ; donc elles n'existent pas. Tout l'effort du livre consiste à désamorcer ce raisonnement en expliquant pourquoi, si elles existaient, elles nous demeureraient par principe inaccessibles. L'explication mobilise deux ressorts. Le premier est la manière dont le sens d'un mot dépend de l'usage que nous en faisons collectivement. La signification de « mince » est fixée par l'immense réseau de nos dispositions à l'employer ou à le refuser ; or aucun de nous ne peut surveiller ce réseau dans tous ses détails, ni rendre l'usage qu'il fait du mot à un instant donné parfaitement sensible à l'ensemble dont il dépend. Le second ressort est la marge d'erreur. Williamson le montre par un exemple où il se prend lui-même pour cobaye. La phrase « TW est mince » est peut-être vraie, mais elle aurait très facilement pu être fausse, sans que ses mensurations changent d'un pouce, pour peu que l'usage du mot « mince » eût été tant soit peu différent, ce qui était parfaitement possible. Et celui qui prononce assertivement cette phrase aurait tout aussi facilement pu la prononcer à faux, car sa décision de l'énoncer n'était pas sensible à tous les menus déplacements d'usage qui l'auraient rendue fausse. Une croyance ne vaut comme connaissance que si elle n'aurait pas pu se tromper aussi aisément. Près de la frontière, cette condition n'est jamais remplie. D'où notre ignorance, non pas accidentelle, mais structurelle.
On reconnaît ici, transposé des couleurs aux significations, le mécanisme étudié dans ''Identity and Discrimination''. Un mot vague est entouré d'autres significations possibles, infinitésimalement proches, que ceux qui les manieraient ne sauraient distinguer de la sienne ; et c'est cette indiscernabilité des sens voisins qui nous voile la frontière. La théorie du vague rejoint enfin l'épistémologie par un autre biais, celui du principe que les logiciens écrivent KK : si l'on sait quelque chose, sait-on que l'on le sait ? Williamson répond non. Reprenons l'exemple de l'arbre devant lequel il passe presque chaque jour depuis des années, sans jamais le mesurer. Sa connaissance de la hauteur de cet arbre est inexacte : sa vue, sa mémoire, son sens des proportions sont imparfaits. On peut construire un modèle où la relation entre situations compatibles avec ce que l'on sait n'est pas transitive, exactement comme l'indiscernabilité des hauteurs ; et le principe KK s'y effondre : on peut savoir sans pour autant savoir que l'on sait. Le sorite ne menace donc pas le prédicat « tas » ; il menacerait, tout au plus, le prédicat « tas connu », et seulement si l'on acceptait KK. Sans ce principe, une itération de savoir se perd à chaque pas, et le paradoxe s'épuise avant d'atteindre sa conclusion fausse<ref>« Inexact Knowledge », ''Mind'', 1992, p. 237-238, et ''Vagueness'', 1994, chap. 8 : le diagnostic du sorite pour la connaissance procède en niant le principe KK, lui-même conséquence du principe de marge d'erreur. L'analyse est reprise dans ''Knowledge and Its Limits'', 2000, chap. 4-5.</ref>.
== La connaissance d'abord ==
Pendant un demi-siècle, l'épistémologie de langue anglaise a tourné autour d'un projet : analyser la connaissance, c'est-à-dire la décomposer en éléments plus simples. La formule héritée de Platon en donnait la première version : connaître, ce serait croire quelque chose de vrai et de justifié. En 1963, un article de trois pages d'Edmund Gettier ruina cette définition par deux contre-exemples, et ouvrit une longue chasse à la condition manquante qui réparerait la formule<ref>Edmund Gettier, « Is Justified True Belief Knowledge? », ''Analysis'', vol. 23, 1963, p. 121-123.</ref>. Toutes les tentatives échouèrent, chacune appelant un nouveau contre-exemple. Williamson propose alors de renverser l'ordre des priorités : et si la connaissance ne se laissait pas analyser, parce qu'elle était première ?
Renversement, donc, plutôt qu'abolition. Williamson ne prétend pas clore une fois pour toutes le projet d'analyse de la connaissance ; il en inverse la direction, de manière influente, et propose d'en faire l'économie. Au lieu de tenir la connaissance pour un composé de croyance, de vérité et d'on ne sait quel ingrédient supplémentaire, il en fait le point de départ, le concept à l'aide duquel on éclaire les autres. ''Knowledge and Its Limits'', paru en 2000, porte ce programme : la connaissance d'abord, ''knowledge first''. La connaissance y est présentée comme un état mental à part entière, et même comme l'état mental factif le plus général, celui qui chapeaute toute la famille des attitudes qui ne peuvent porter que sur du vrai<ref>''Knowledge and Its Limits'', Oxford, Oxford University Press, 2000, chap. 1 : la connaissance est un état mental factif, et le plus général d'entre eux, en ce sens que tout état factif implique la connaissance de son contenu.</ref>. Voir que la porte est ouverte, se souvenir qu'on l'a fermée, s'apercevoir qu'il pleut : autant d'états qui enveloppent la vérité de leur contenu, et qui sont, chacun, une manière de savoir. On ne définit pas la connaissance ; on la situe, au sommet de cette famille.
Pourquoi tenir tant à cette indécomposabilité, que Williamson nomme la primalité ? Parce que la connaissance explique ce que la simple croyance n'explique pas. Il en donne un exemple resté célèbre, celui du cambrioleur. Un voleur qui sait qu'un diamant se trouve dans la maison la fouillera toute la nuit, sans se décourager ; celui qui le croit seulement, même avec raison et de bon droit, risque d'abandonner plus tôt, parce que sa relation au fait est plus fragile. La connaissance, attache plus solide au monde, soutient l'action avec une constance que la croyance n'a pas. Or si l'on décompose le savoir en un noyau interne, la croyance, et un supplément externe, la vérité plus quelque garantie, on perd cette unité explicative : l'explication renvoie à la connaissance prise en bloc, non à une conjonction de deux facteurs indépendants.
À cet état premier, Williamson refuse une propriété que la tradition lui prêtait volontiers : la transparence, ou comme il dit la luminosité. Une condition est lumineuse si, dès qu'elle est remplie, on est en position de savoir qu'elle l'est. On a longtemps cru que nos propres états d'esprit étaient ainsi faits, qu'il suffisait d'éprouver une douleur ou de sentir le froid pour savoir qu'on les éprouve. Williamson construit contre cette idée un argument serré, fondé une fois encore sur la marge d'erreur<ref>''Knowledge and Its Limits'', chap. 4 et 5, pour l'argument contre la luminosité et la notion de sécurité (''safety'').</ref>. La conséquence est une réfutation du principe KK déjà rencontré à propos du vague : on peut savoir sans savoir que l'on sait, parce que la connaissance exige une marge de sécurité, la sécurité que l'on n'aurait pas pu aisément se tromper. Cette notion de sécurité fournit d'ailleurs la caractérisation positive du savoir que Williamson est prêt à concéder, non comme une analyse, mais comme une vérité éclairante : si l'on sait, on n'aurait pas pu facilement avoir tort dans un cas semblable. Une croyance est sûre lorsque, dans tous les cas suffisamment proches où on la formerait sur une base semblable, elle serait vraie. La sécurité n'est pas une condition interne ; elle dépend de la configuration du monde autour de nous. C'est dire combien l'épistémologie de Williamson tourne le dos à l'[[internalisme]], à l'idée que tout ce qui compte pour la justification serait accessible par simple réflexion. La connaissance habite le monde, non l'intériorité d'un sujet replié sur ses états.
De ce primat de la connaissance, Williamson tire une dernière conséquence, qui a fait couler beaucoup d'encre : notre évidence se réduit à ce que nous savons<ref>''Knowledge and Its Limits'', chap. 9 : l'évidence est la connaissance (''E = K'').</ref>. ''E = K'', écrit-il, l'évidence est la connaissance. Ce dont nous disposons pour étayer nos croyances, ce sur quoi nous raisonnons, n'est ni un donné sensoriel ni un ensemble d'impressions privées, mais l'ensemble des propositions que nous connaissons. Le foyer cognitif cartésien, ce lieu intérieur où l'esprit serait chez lui et ne pourrait se tromper, est un mythe : il n'y a pas de retraite à l'abri du monde.
Il faut le dire sans détour : cette thèse demeure l'une des plus débattues de l'épistémologie récente, et l'article ne lui rendrait pas justice en la présentant comme un acquis. Les internalistes lui reprochent de congédier trop vite l'idée d'une justification accessible de l'intérieur ; les partisans d'une théorie de la justification refusent de renoncer au projet d'analyse ; d'autres contestent que l'on puisse traiter la connaissance comme un état mental factif primitif. Ernest Sosa, par exemple, a objecté que « croire sûrement » serait un état factif plus général que la connaissance, ce qui ruinerait la caractérisation ; Williamson a répliqué que « croire sûrement » n'est pas sémantiquement insécable, et ne saurait donc compter parmi les états factifs primitifs. Le débat n'est pas clos ; il a seulement changé de terrain, ce qui est peut-être la meilleure mesure de l'influence du livre.
== La modalité : du possible imaginé au possible réel ==
La modalité, ce domaine du nécessaire et du possible, occupe Williamson sous deux aspects qu'il importe de ne pas confondre : comment connaissons-nous ce qui aurait pu être, et qu'est-ce, au juste, qui aurait pu être ? La première question est épistémologique, la seconde métaphysique, et il leur a donné des réponses également originales.
Sur la connaissance du possible, la conception reçue voulait que nous disposions d'une faculté propre, la conception ou ''conceivability'', qui ferait office de fenêtre sur le possible : ce que je puis concevoir sans contradiction serait possible, ce que je ne puis concevoir serait impossible. Williamson récuse cette image d'une faculté spéciale. Notre savoir des possibilités, soutient-il dans ''The Philosophy of Philosophy'', fait appel à la même aptitude tout ordinaire qui nous sert à évaluer des [[conditionnel contrefactuel|conditionnels contrefactuels]], ces énoncés en « si... alors il en serait allé ainsi » que nous manions à longueur de journée<ref>''The Philosophy of Philosophy'', Oxford, Blackwell, 2007, chap. 5 : la connaissance modale fait appel à la même capacité cognitive que l'évaluation des conditionnels contrefactuels, sans qu'il faille postuler une faculté supplémentaire.</ref>. Pour décider si quelque chose aurait pu se produire, nous développons l'hypothèse et regardons si une contradiction en surgit, exactement comme lorsque nous nous demandons ce qui serait arrivé si nous avions pris l'autre chemin. Or cette aptitude n'a rien d'a priori au sens traditionnel : elle puise abondamment dans notre connaissance du monde, elle est faillible, elle n'est pas transparente. On ne lit pas le possible dans le ciel des idées ; on l'établit, avec les moyens du bord, à partir de ce que l'on sait déjà. Du même coup, les démarches qui prétendent s'appuyer sur un a priori bien net, comme la sémantique à deux dimensions chère à [[David Chalmers]], se trouvent fragilisées dans leurs fondements épistémiques<ref>« Armchair Philosophy, Metaphysical Modality and Counterfactual Thinking », ''Proceedings of the Aristotelian Society'', vol. 105, 2005, p. 1-23, et ''The Philosophy of Philosophy'', 2007, chap. 5. La concevabilité y est tenue pour un test peu fiable du possible tant qu'on ne la définit pas par la possibilité même ; l'aptitude réellement à l'œuvre est celle, ordinaire, qui sert à évaluer les conditionnels contrefactuels, de sorte qu'aucune faculté spéciale n'a besoin d'être postulée.</ref>.
Reste la seconde question, proprement métaphysique : qu'est-ce qui aurait pu être ? Ici Williamson défend, dans ''Modal Logic as Metaphysics'' (2013), une thèse qu'il nomme le [[nécessitisme]], et qui heurte de front le sens commun. On peut l'énoncer en une formule : nécessairement, tout est nécessairement quelque chose<ref>''Modal Logic as Metaphysics'', Oxford, Oxford University Press, 2013, chap. 1 ; et « Necessitism, Contingentism, and Plural Quantification », ''Mind'', vol. 119, n° 475, 2010, p. 657-748, qui formule la thèse (NNE : nécessairement, tout est nécessairement quelque chose) et la distingue du possibilisme comme du meinongianisme. Le terme retenu pour les objets en question est « contingentement non concret » et non « seulement possible ».</ref>. Autrement dit, rien de ce qui est ne pourrait n'avoir absolument rien été ; et rien, non plus, ne pourrait s'ajouter à ce qu'il y a. Le contingentiste, son adversaire, soutient l'inverse : telle table existe, mais aurait pu n'exister pas du tout, et d'autres choses auraient pu exister qui n'existent pas.
L'objection saute aux yeux. Si rien ne peut commencer ni cesser d'être quelque chose, que faire de l'enfant que tel couple aurait pu avoir et n'a pas eu, de la table que ce menuisier aurait pu fabriquer et n'a pas fabriquée ? C'est ici qu'il faut être précis, sous peine de caricaturer la thèse. Le nécessitiste ne dit pas qu'il existe, à côté des choses concrètes, une foule de fantômes seulement possibles. Ce que nous sommes tentés d'appeler un « objet seulement possible », par exemple un enfant possible de Wittgenstein, est en réalité un objet contingentement non concret : il est bel et bien quelque chose, il aurait pu être concret, de chair et d'os, mais il se trouve qu'il ne l'est pas. Il n'est pas un néant, ni un possible flottant entre l'être et le non-être ; il est, sur le mode du non-concret. Williamson prend soin de distinguer cette position de deux autres avec lesquelles on la confond aisément : elle n'est pas le meinongianisme, qui peuplerait le monde d'objets inexistants ; elle n'est pas davantage le possibilisme classique. Le débat embrouillé entre possibilistes et actualistes se laisse, dit-il, reformuler en un débat plus clair et plus maniable, celui du nécessitisme et du [[contingentisme]], qui se joue sur la validité d'une formule logique précise, la [[formule de Barcan]].
Pourquoi soutenir une thèse aussi contre-intuitive ? Non par goût du paradoxe, mais par fidélité à la méthode. Le nécessitisme, montre Williamson, fournit la logique modale quantifiée la plus simple et la plus puissante : il valide la formule de Barcan et sa réciproque, il autorise une sémantique à domaine constant, il évite une foule de complications. Entre deux théories rivales, on choisit comme le physicien choisit entre deux hypothèses : celle qui rend le plus avec le moins. Que la plus simple heurte nos intuitions n'est pas, en soi, un argument contre elle ; nos intuitions sur ce qui aurait pu exister n'ont pas plus d'autorité, sur ce terrain, que le sens commun n'en avait sur la mécanique céleste.
== La méthode : l'anti-exceptionnalisme ==
Tous ces résultats reposent sur une même conception de ce qu'est philosopher, exposée dans ''The Philosophy of Philosophy'' (2007) puis, sous une forme accessible à tous, dans ''Doing Philosophy'' (2018). La thèse y est déjà nette, même si le mot ne s'imposera vraiment que plus tard : c'est ce qu'il appellera, et de plus en plus explicitement, anti-exceptionnalisme<ref>''The Philosophy of Philosophy'', chap. 1 et 7 ; ''Doing Philosophy'', Oxford, Oxford University Press, 2018. La thèse méthodologique est présente dès 2007 ; le qualificatif « anti-exceptionnaliste » ne devient un mot d'ordre explicite que dans les travaux plus récents, du sous-titre de ''Good as Usual'' (2025) à des essais comme « Moral Anti-Exceptionalism ».</ref>. La philosophie, soutient-il, n'occupe aucune position d'exception parmi les savoirs. Elle ne dispose pas d'une faculté spéciale qui lui ouvrirait un accès direct aux essences ; elle ne procède pas par une méthode purement a priori qui la couperait de l'expérience. Elle est de la même famille que les autres enquêtes, simplement plus abstraite et privée de laboratoire.
Le cas le plus discuté est celui des intuitions. On répète volontiers que la philosophie se fonde sur des intuitions, ces jugements spontanés que provoquent en nous les expériences de pensée : le wagon fou que l'on peut dévier sur une autre voie, la chambre chinoise, le village où l'on ne sait plus qui est chauve. Williamson conteste cette description. Ce que nous appelons intuition n'est pas le verdict d'une faculté mystérieuse, ni un donné qu'il faudrait recueillir comme on recueille des réponses à un sondage. C'est un simple jugement, exercé sur un cas hypothétique, et il vaut comme source de connaissance pour autant qu'il est compétent, non parce qu'il serait « intuitif ». La même capacité ordinaire d'évaluer des conditionnels contrefactuels, déjà rencontrée à propos du possible, suffit à en rendre compte : juger ce qui se passerait si telle situation se présentait, voilà ce que nous faisons devant une expérience de pensée, et c'est une chose que nous savons faire.
De là une conséquence qui dérange les habitudes : la distinction même de l'a priori et de l'a posteriori, sur laquelle tant de débats se sont bâtis, lui paraît trop grossière pour un travail théorique sérieux. Nos connaissances modales, par exemple, ne sont ni purement indépendantes de l'expérience ni purement tirées d'elle ; l'expérience y joue un rôle qui n'est ni de simple justification ni de simple déclenchement. La frontière s'estompe. Comment, alors, tranche-t-on une question philosophique ? Par la même méthode que partout : l'inférence vers la meilleure explication, ce que la tradition nomme l'[[abduction]]. On compare des théories rivales, on pèse leur simplicité, leur puissance, leur accord avec ce que l'on tient par ailleurs pour acquis, et l'on retient la meilleure. Rien, en philosophie, n'est gratuit au point de n'imposer aucune contrainte à la réalité : une thèse a des conséquences, et ses conséquences se paient. C'est cette conception qui commande, chaque fois, les choix de Williamson, du nécessitisme à la défense de la logique classique. La question n'est jamais « qu'est-ce qui est évident ? », mais « quelle théorie d'ensemble fait le mieux le travail ? ».
== Le dialogue : ''Tetralogue'' ==
''Tetralogue'', paru en 2015, est un dialogue à la manière antique : quatre voyageurs se trouvent réunis dans un train et discutent jusqu'au terminus. Sarah défend la science et la raison ; Bob, qu'un guérisseur a guéri, en est venu à croire à la sorcellerie ; Roxana, logicienne intransigeante, traque la moindre incohérence ; Zac, conciliant et relativiste, voudrait que chacun ait raison à sa façon. De ce quatuor naît une comédie d'idées où s'affrontent les attitudes que nous adoptons spontanément face au désaccord.
Le propos du livre est de défendre, sans pédantisme, deux thèses jumelles que Williamson tient pour inséparables : la vérité est objective, et nous sommes faillibles. Contre Zac, il s'agit de montrer que la formule « vrai pour moi » ne veut rien dire de cohérent : si une chose est vraie, elle l'est tout court, et croire le contraire à propos du même monde, c'est se tromper, non détenir une autre vérité. Contre une certaine arrogance scientiste, il s'agit de rappeler que reconnaître la possibilité de son erreur n'oblige nullement à renoncer à juger. Le titre, ''I'm Right, You're Wrong'', condense cette double leçon avec une provocation calculée : dans un désaccord véritable, l'un a raison et l'autre tort, et l'admettre n'est pas un manque de tolérance, c'est la condition d'une conversation sérieuse. On respecte mieux autrui en le tenant pour capable de vérité et d'erreur qu'en le confinant poliment dans sa bulle. Le dialogue, sous ses dehors plaisants, est ainsi une défense du réalisme contre le [[relativisme]], ce même réalisme qui gouverne en sous-main toute l'œuvre.
== L'éthique et l'action : ''Good as Usual'' ==
Le dernier grand chantier de Williamson, rassemblé en 2025 sous le titre ''Good as Usual'', dont le sous-titre annonce des essais anti-exceptionnalistes sur les normes, les valeurs et l'action, étend à la philosophie pratique le programme élaboré ailleurs. La thèse directrice est que le normatif ne forme pas un royaume à part. Le bien, la connaissance morale, les normes de la croyance et de l'action ne sont pas plus exceptionnels que le reste ; ils s'étudient avec les mêmes outils, et la connaissance y joue le même rôle central que dans la vie intellectuelle.
La connaissance morale, d'abord. Contre l'argument sceptique qui invoque l'ampleur des désaccords moraux pour conclure à l'absence de savoir éthique, Williamson rappelle que la connaissance n'exige qu'une fiabilité locale. Pourvu que l'on admette qu'il y a des vérités morales, il n'y a, soutient-il, aucun obstacle particulier à les connaître. Que des sociétés divergent sur ce qui est juste ne prouve pas que nul ne sait rien en morale, pas plus que l'existence de désaccords perceptifs ne ruine la perception ; on peut être fiable touchant les actions de son propre milieu sans l'être touchant celles d'un milieu lointain. La capacité de reconnaître le bien et le mal est une capacité de reconnaissance comme une autre, faillible et néanmoins source de savoir.
Ensuite, la connaissance d'abord s'applique à l'action, et c'est ici qu'il faut restituer exactement les termes de l'analogie, qu'on déforme facilement. Connaître se tient à croire comme produire intentionnellement un état de choses se tient à le désirer<ref>L'analogie remonte à « Knowing and Asserting », ''The Philosophical Review'', vol. 105, n° 4, 1996, p. 489-523 (notamment p. 521) : connaître se tient à croire comme produire intentionnellement un état de choses se tient à le désirer ; les deux assurent l'accord du contenu et du monde, mais selon des directions d'ajustement opposées. Elle est reprise et développée dans ''Good as Usual'', 2025.</ref>. Si je sais que P, alors P ; de même, si je fais en sorte que P, alors P. Mais il ne suffit pas, pour savoir que P, de le croire alors que P se trouve vrai, car l'accord pourrait n'être qu'accidentel ; il ne suffit pas davantage, pour avoir produit P, de l'avoir désiré alors que P se trouve réalisé. La connaissance est le bon cas d'une direction d'ajustement, celle de l'esprit au monde : la croyance vise à se conformer au monde, et la connaissance est la croyance qui y parvient sans hasard. L'action est le bon cas de la direction inverse, celle du monde à l'esprit : le désir vise à conformer le monde à lui, et l'action est le désir qui y parvient sans hasard. Ce qui sépare connaissance et action n'est donc pas le degré de réussite, c'est le sens de l'ajustement. La connaissance est l'entrée du raisonnement pratique, son point de départ ; l'action en est la sortie réussie. De là une norme symétrique de celle de l'assertion : n'agis que sur ce que tu sais. Quand la délibération fonctionne bien, on n'emploie comme prémisse que ce que l'on connaît ; une prémisse simplement crue, sans être sue, est un grain de sable qui dérègle la machine. Williamson y intègre une thèse qu'il défend de longue date avec [[Jason Stanley]], l'intellectualisme touchant le savoir-faire : savoir faire quelque chose, c'est savoir une vérité, et non posséder une aptitude d'une autre nature ; le savoir-faire peut donc fournir une prémisse au raisonnement pratique précisément parce qu'il est un savoir-que.
Le même esprit conduit Williamson à reprendre, du côté de la croyance, sa critique de l'internalisme. Il existe plusieurs normes possibles de la croyance : une norme de vérité, une norme d'évidence, une norme de connaissance. Il plaide pour la dernière, sous une forme fonctionnelle : crois seulement ce que tu sais. Et il fait jouer une dernière fois l'argument contre la luminosité pour récuser l'exigence internaliste selon laquelle les fondements de nos jugements devraient nous être accessibles par simple introspection. Le titre du recueil joue d'ailleurs sur les mots : le bien y est traité « comme d'habitude », c'est-à-dire comme le fonctionnement normal, non défectueux, d'êtres engagés dans le monde. Là encore, le geste de Williamson est de ramener la valeur dans le tissu commun de la connaissance et de l'action, au lieu de la reléguer dans une sphère séparée.
== Réception et influence ==
L'œuvre de Williamson a suscité une littérature critique abondante, signe de son importance. Deux volumes collectifs lui ont été consacrés, l'un sur la connaissance, l'autre sur la modalité, chacun accompagné de ses réponses détaillées aux objections<ref>Patrick Greenough et Duncan Pritchard (dir.), ''Williamson on Knowledge'', 2009 ; Mark McCullagh et Juhani Yli-Vakkuri (dir.), ''Williamson on Modality'', 2017.</ref>. Les fronts de discussion sont nombreux. Les internalistes tiennent qu'il a écarté trop vite l'idée d'une justification accessible de l'intérieur. Les défenseurs de la méthode des survaluations, comme [[Delia Graff Fara]], refusent de payer la bivalence au prix de l'intuition qu'aucune coupure nette ne traverse nos prédicats vagues. Les partisans des logiques non classiques rejettent son plaidoyer pour la logique standard. Certains critiques jugent le nécessitisme, avec ses objets contingentement non concrets, d'un coût métaphysique trop lourd. À chacun Williamson répond avec la même rigueur méthodique, en déplaçant le débat sur le terrain qui est le sien, celui de la comparaison des théories ; et c'est souvent cette manière de répondre, autant que les thèses elles-mêmes, qui a marqué ses lecteurs.
Son influence tient aussi à autre chose qu'à ses arguments. Il a contribué à légitimer une certaine façon de faire de la philosophie : technique sans être stérile, ambitieuse sans verser dans la spéculation, attentive à la forme logique des problèmes. Son rayonnement passe enfin par l'enseignement. Il a dirigé un grand nombre de thèses, et plusieurs de ses anciens étudiants comptent aujourd'hui parmi les figures montantes de la discipline. Il s'est aussi adressé au grand public, par ses dialogues, par ses petits livres d'initiation, par ses chroniques de presse, convaincu que la philosophie n'a rien à gagner à se retrancher dans un jargon d'initiés. L'auteur de traités exigeants et le pédagogue ne font chez lui qu'une seule personne, fidèle à l'idée que la difficulté ne doit pas être masquée mais apprivoisée.
== Conclusion ==
Ce qui frappe, au terme de ce parcours, c'est l'unité d'une œuvre que la diversité des sujets pourrait faire croire dispersée. Du vague à la connaissance, de la modalité à la méthode, et jusqu'à l'éthique des derniers travaux, une même sensibilité se reconnaît. Un réalisme constant, d'abord : le réel a ses traits indépendamment de nous, et notre ignorance ne doit jamais être prise pour une indétermination des choses. Un attachement à la logique classique, ensuite, défendu non par dogmatisme mais parce qu'elle figure dans la meilleure théorie globale. La conviction, encore, que la connaissance est la pierre angulaire, le concept premier à partir duquel s'éclairent l'évidence, l'assertion, l'action et la valeur. Et, partout, deux motifs qui donnent à l'ensemble sa signature : la structure de la connaissance inexacte, avec son principe de marge d'erreur, née de l'indiscernabilité non transitive et reparaissant aussi bien dans la théorie du vague que dans l'argument contre la luminosité ; et l'anti-exceptionnalisme, cette idée que la philosophie ne diffère pas en nature des autres enquêtes et procède comme elles par inférence vers la meilleure explication.
Williamson aura beaucoup contribué à une certaine idée de la philosophie analytique : une discipline qui traite ses questions avec autant de sérieux théorique que les sciences, sans pour autant céder à l'obscurité ni au relativisme. On peut discuter chacune de ses thèses, et beaucoup le font ; on peut juger le nécessitisme trop coûteux, l'épistémicisme trop hardi, le primat de la connaissance trop exclusif. Reste, par-delà ces désaccords, une exigence de rigueur et une manière de poser les problèmes dont la philosophie de notre temps porte l'empreinte.
== Notes et références ==
{{références|colonnes=2}}
== Bibliographie ==
=== Sources primaires (œuvres de Timothy Williamson) ===
* « Criteria of Identity and the Axiom of Choice », ''The Journal of Philosophy'', vol. 83, n° 7, 1986, p. 380-394.
* ''Identity and Discrimination'', Oxford, Basil Blackwell, 1990 (édition augmentée, Wiley-Blackwell, 2013).
* ''Vagueness'', Londres, Routledge, 1994.
* « Knowing and Asserting », ''The Philosophical Review'', vol. 105, n° 4, 1996, p. 489-523.
* ''Knowledge and Its Limits'', Oxford, Oxford University Press, 2000.
* ''The Philosophy of Philosophy'', Oxford, Blackwell, 2007 (2e édition augmentée, Wiley-Blackwell, 2021).
* « Necessitism, Contingentism, and Plural Quantification », ''Mind'', vol. 119, n° 475, 2010, p. 657-748.
* ''Modal Logic as Metaphysics'', Oxford, Oxford University Press, 2013.
* ''Tetralogue: I'm Right, You're Wrong'', Oxford, Oxford University Press, 2015.
* ''Doing Philosophy: From Common Curiosity to Logical Reasoning'', Oxford, Oxford University Press, 2018 (réédition en poche sous le titre ''Philosophical Method: A Very Short Introduction'', 2020).
* ''Suppose and Tell: The Semantics and Heuristics of Conditionals'', Oxford, Oxford University Press, 2020.
* (avec Paul Boghossian) ''Debating the A Priori'', Oxford, Oxford University Press, 2020.
* ''Overfitting and Heuristics in Philosophy'', Oxford, Oxford University Press, 2024.
* ''Good as Usual: Anti-Exceptionalist Essays on Norms, Values, and Action'', Oxford, Oxford University Press, 2025.
=== Études critiques consacrées à son œuvre ===
* Patrick Greenough et Duncan Pritchard (dir.), ''Williamson on Knowledge'', Oxford, Oxford University Press, 2009 (avec les « Replies to Critics » de Williamson).
* Mark McCullagh et Juhani Yli-Vakkuri (dir.), ''Williamson on Modality'', Londres, Routledge, 2017.
=== Autres ouvrages et articles cités ===
* Gottlob Frege, ''Les Fondements de l'arithmétique'' (1884).
* Edmund Gettier, « Is Justified True Belief Knowledge? », ''Analysis'', vol. 23, 1963, p. 121-123.
* Saul Kripke, ''Naming and Necessity'', Oxford, Blackwell, 1980.
* David Chalmers, ''The Conscious Mind: In Search of a Fundamental Theory'', Oxford, Oxford University Press, 1996.
* Ernest Sosa, ''Knowing Full Well'', Princeton, Princeton University Press, 2011.
=== Sources biographiques ===
Les données biographiques (dates, postes, distinctions) proviennent des sources institutionnelles suivantes :
* [https://www.philosophy.ox.ac.uk/people/timothy-williamson Page de Timothy Williamson, Faculty of Philosophy, université d'Oxford]
* [https://www.new.ox.ac.uk/timothy-williamson Page de Timothy Williamson, New College, Oxford]
* [https://www.thebritishacademy.ac.uk/fellows/timothy-williamson-FBA/ Notice « Professor Timothy Williamson FBA », The British Academy (élu Fellow en 1997)]
* [https://www.rse.org.uk/fellow/timothy-williamson/ Notice « Professor Timothy Williamson FRSE », The Royal Society of Edinburgh (élu Fellow en 1997)]
* [https://www.philosophy.ox.ac.uk/sitefiles/twcvshortnew-v2.pdf Curriculum vitae officiel (université d'Oxford)]
== Sur Wikisource ==
Deux textes classiques évoqués dans cet article sont disponibles en texte intégral sur Wikisource :
* [[s:fr:Nouveaux Essais sur l’entendement humain|Leibniz, ''Nouveaux Essais sur l'entendement humain'']], où sont discutés le Tas et le Chauve.
* [[s:fr:Essai philosophique concernant l’entendement humain|Locke, ''Essai philosophique concernant l'entendement humain'']], dont Leibniz fait son interlocuteur.
[[Catégorie:Philosophe]]
ebwxl95qu2sahpkieza3i9vh5nvxe1p
768378
768377
2026-06-23T03:40:59Z
PandaMystique
119061
768378
wikitext
text/x-wiki
{{DicoPhilo|Timothy Williamson}}
[[Fichier:Professor Timothy Williamson (cropped).JPG|vignette|Timothy Williamson.]]
Philosophe britannique né à Uppsala, en Suède, en 1955, Timothy Williamson compte parmi les figures les plus influentes de la [[philosophie analytique]] contemporaine. Titulaire de la chaire Wykeham de logique à l'université d'Oxford de 2000 à 2023, il a exercé une influence majeure sur plusieurs domaines que l'on tenait pour bien distincts : la théorie du [[vague]], l'[[épistémologie]], la [[métaphysique]] de la [[modalité]] et la réflexion sur la méthode même de la philosophie. Une thèse le rendit d'abord célèbre, et elle prend la forme d'un paradoxe assumé. Nos mots vagues, comme « chauve » ou « tas », ont une extension déterminée : il existe, pour chacun, une frontière qui sépare les cas où le mot s'applique des cas où il ne s'applique pas. Simplement, dans les cas limites, nous sommes hors d'état de savoir où passe cette frontière. Le vague n'est donc pas, pour Williamson, une indétermination des choses ; c'est une certaine forme de notre ignorance<ref>Sur l'[[épistémicisme]] comme théorie de ce en quoi le vague consiste, et non comme négation du vague, voir ''Vagueness'', Londres, Routledge, 1994, chap. 7-8, et la préface.</ref>. De cette idée première, qui réhabilite la [[logique classique]] là où plusieurs approches concurrentes proposaient de la réviser, procède une œuvre d'une rare unité. On y retrouve partout la même conviction : il existe un monde indépendant de nous, la [[connaissance]] en est la pierre angulaire, et la philosophie ne diffère pas en nature des autres formes d'enquête.
== Repères biographiques ==
[[Fichier:New College, Oxford 2011 04.jpg|vignette|New College (Oxford), dont Williamson est fellow depuis 2000.]]
Williamson naît à Uppsala de parents britanniques. Sa formation se fait tout entière à Oxford, au collège de Balliol, où il étudie d'abord les mathématiques et la philosophie, puis prépare un doctorat de philosophie qu'il soutient au tout début des années 1980, sous une direction qui passa successivement de David Bostock à Bill Newton-Smith, puis à [[Michael Dummett]]. Cette double éducation laisse une marque durable. Le goût de la précision formelle, l'aisance dans la logique modale quantifiée, le refus de toute approximation dans la conduite d'un argument tiennent sans doute à cette formation initiale. Ses premiers postes le mènent hors d'Oxford. Il enseigne au Trinity College de Dublin, de 1980 à 1988, avant de revenir comme fellow et tuteur à University College, à Oxford. En 1995, l'université d'Édimbourg lui confie la chaire de logique et de métaphysique, qu'il occupe cinq ans.
L'année 2000 marque sa consécration institutionnelle : il est élu à la chaire Wykeham de logique d'Oxford, une chaire que Dummett avait occupée de 1979 à 1992, et dont il devient ainsi l'un des successeurs<ref>Dummett occupa la chaire Wykeham de logique de 1979 à 1992 ; Williamson y fut élu en 2000 et l'occupa jusqu'en 2023. Williamson ne succéda donc pas immédiatement à Dummett.</ref>. Fellow de New College, il y demeure jusqu'en 2023, date à laquelle il prend le titre de professeur émérite tout en continuant d'y enseigner et d'y diriger des recherches. À cette base oxonienne s'ajoutent, au fil des ans, de nombreux postes de visite, parmi lesquels une charge régulière de professeur invité à Yale, où il se rend quelques semaines chaque année, et une affiliation à l'université de la Suisse italienne. Membre de la British Academy et de la Royal Society of Edinburgh, ancien président de l'Aristotelian Society et de la Mind Association, il a formé ou codirigé un grand nombre de doctorants, dont plusieurs occupent aujourd'hui des positions de premier plan. Il écrit aussi pour un public plus large, dans le Times Literary Supplement comme dans la rubrique de philosophie du New York Times, signe d'une volonté constante de faire descendre les questions abstraites dans la conversation commune.
[[Fichier:Michael Dummett September 2004.jpg|vignette|Michael Dummett, qui dirigea en partie sa thèse et le précéda à la chaire Wykeham.]]
Son parcours épouse, à sa manière, l'histoire de la philosophie analytique des cinquante dernières années. Formé dans le sillage de Dummett et du tournant linguistique, cette idée selon laquelle les problèmes philosophiques seraient au fond des problèmes sur le langage, Williamson s'en est progressivement détaché pour reconstruire une métaphysique et une épistémologie pleinement réalistes. Il représente ainsi le moment où la discipline, après avoir longtemps suspecté ses propres ambitions spéculatives, ose de nouveau parler du monde et non plus seulement de nos façons d'en parler.
== Un tempérament et deux convictions ==
Avant d'entrer dans le détail des thèses, il faut saisir l'esprit qui les anime, car il donne à l'œuvre sa cohérence. Williamson philosophe en homme qui croit que les désaccords se tranchent. Là où une certaine tradition voyait dans la philosophie un exercice d'assouplissement, une thérapie destinée à nous délivrer de fausses questions, il défend l'idée que les questions philosophiques sont de vraies questions, dotées de réponses vraies ou fausses, et que l'on s'en approche par l'argument et par la preuve. Le titre, à demi provocateur, qu'il a donné à son dialogue de 2015, ''Tetralogue: I'm Right, You're Wrong'', dit assez cette humeur : on peut respecter son interlocuteur sans renoncer à penser qu'il se trompe.
Deux fils traversent l'ensemble, et il est utile de les nommer dès maintenant pour ne pas les perdre de vue. Le premier est une découverte de structure, faite très tôt et reprise sans cesse : celle de la connaissance inexacte. Nos capacités de discrimination sont grossières ; entre deux situations imperceptiblement différentes, nous ne saurions dire laquelle nous place du bon côté d'une frontière. De ce fait élémentaire, Williamson tire un principe qu'il nomme, en anglais, ''margin for error'', la marge d'erreur : pour savoir quelque chose par observation, il faut disposer d'une marge de sécurité, sans quoi l'on aurait tout aussi bien pu se tromper. Ce principe, né de l'étude des relations d'indiscernabilité dans son premier livre, irrigue ensuite sa théorie du vague, puis sa théorie de la connaissance. Le second fil est une conviction de méthode : la philosophie n'occupe aucune position d'exception parmi les savoirs, elle ne possède ni faculté propre ni méthode purement [[a priori]], elle progresse, comme les sciences, par inférence vers la meilleure explication. Présente dès ''The Philosophy of Philosophy'', en 2007, cette thèse se déploie jusqu'à ses essais d'éthique de 2025, étendue à des territoires toujours nouveaux ; c'est elle que recouvrira, de façon de plus en plus assumée, le mot d'anti-exceptionnalisme.
Sous ces deux fils court une basse continue : le [[réalisme]]. Il y a une manière dont les choses sont, indépendamment de ce que nous en savons. La [[bivalence]], cette thèse sémantique selon laquelle toute proposition est vraie ou fausse, et la logique classique qui en règle les inférences restent, à ses yeux, les meilleurs instruments pour traiter nos énoncés sur le monde, non qu'elles le décriraient à la façon d'une théorie physique, mais parce qu'elles figurent dans la meilleure théorie d'ensemble de l'inférence et de la signification ; et notre ignorance, si vaste soit-elle, ne doit jamais être confondue avec une indétermination des choses elles-mêmes. Cette distinction, banale en apparence, suffit à départager Williamson de la plupart de ses adversaires.
== Les premiers travaux : identité, indiscernabilité, critères ==
[[Fichier:Young frege.jpg|vignette|Gottlob Frege, dont le critère d'identité des directions sert de point de départ aux premiers travaux de Williamson.]]
On présente parfois l'œuvre comme si elle commençait avec le paradoxe du tas. Ce serait oublier les premiers travaux, où se forge pourtant l'outil dont toute la suite tirera parti. Dès 1986, dans un article au titre austère, « Criteria of Identity and the Axiom of Choice », puis plus amplement dans son premier livre, ''Identity and Discrimination'', paru en 1990, Williamson reprend une question que les philosophes posent depuis [[Gottlob Frege|Frege]] : qu'est-ce qu'un critère d'identité<ref>« Criteria of Identity and the Axiom of Choice », ''The Journal of Philosophy'', vol. 83, n° 7, 1986, p. 380-394 ; ''Identity and Discrimination'', Oxford, Basil Blackwell, 1990. L'analyse établit que, lorsque la relation de base est réflexive, symétrique mais non transitive, aucune relation n'obéit à la contrainte « forte » d'un critère d'identité, et que plusieurs y obéissent au sens « faible », l'existence d'un tel critère étant équivalente à l'[[axiome du choix]].</ref> ? Frege en avait donné l'exemple canonique. Pour penser la direction d'une droite, disait-il, il faut d'abord savoir ce que c'est, pour deux droites, que d'être parallèles : la direction de la droite ''a'' est identique à la direction de la droite ''b'' si et seulement si ''a'' et ''b'' sont parallèles. Un critère d'identité, c'est cela : une relation entre des objets de départ, ici les droites, qui fixe l'identité d'objets dérivés, ici les directions. Et pour faire ce travail, la relation doit posséder une forme bien précise, celle des relations d'équivalence : réflexive, symétrique et transitive, à l'image de l'identité elle-même.
Or Williamson met le doigt sur un cas où le candidat le plus naturel échoue à remplir cette condition. Cherchons un critère d'identité pour la couleur perçue. La relation qui s'impose est l'indiscernabilité : deux échantillons ont la même couleur perçue lorsque l'œil ne parvient pas à les distinguer. Mais cette relation a un défaut qui la disqualifie. Elle n'est pas transitive. Un premier échantillon peut être indiscernable d'un deuxième, le deuxième d'un troisième, et le premier se distinguer pourtant nettement du troisième ; de minuscules écarts, insensibles un à un, finissent par s'additionner. L'indiscernabilité ne peut donc pas tenir lieu de critère d'identité, puisqu'un critère doit être transitif et qu'elle ne l'est pas.
La suite de l'analyse est d'une grande technicité, et c'est là qu'intervient l'axiome du choix, ce principe de la théorie des ensembles qui autorise à prélever un élément dans chacun des membres d'une collection, fût-elle infinie. Williamson démontre un résultat à deux faces. Là où la relation de départ n'est pas transitive, aucune relation ne peut servir de critère d'identité au sens fort ; et si l'on se contente d'un critère au sens faible, l'axiome du choix garantit qu'il en existe, mais plusieurs à la fois, sans qu'aucun ait un meilleur titre que les autres à passer pour le bon. Mieux, l'hypothèse même qu'un tel critère existe toujours s'avère équivalente à l'axiome du choix. La conséquence inquiète notre confiance ordinaire dans l'identité : partout où la transitivité de l'indiscernabilité se brise, nos jugements d'identité perçue perdent toute valeur de vérité déterminée, et le concept lui-même menace de n'être pas bien défini. Williamson illustre la même structure par l'identité personnelle, par ces cas de fission où une personne se scinderait en deux continuateurs : auquel des deux faut-il l'identifier ? Aucune réponse ne s'impose, et le choix paraît arbitraire.
Ce premier livre n'est pas un exercice isolé de logique. Il contient en germe presque tout ce qui suivra. L'idée que des différences imperceptibles s'accumulent jusqu'à devenir perceptibles, que nos capacités de discrimination sont par nature grossières, qu'il faut une certaine marge entre deux situations pour pouvoir les départager en connaissance de cause : voilà déjà le principe de marge d'erreur. Il reparaîtra au cœur de la théorie du vague, puis de la théorie de la connaissance. La structure découverte à propos des couleurs, transposée aux significations, puis aux états de connaissance, deviendra la matrice de toute l'œuvre<ref>Le lien entre l'indiscernabilité non transitive et le principe de marge d'erreur est noué dans ''Identity and Discrimination'', 1990, puis formalisé dans « Inexact Knowledge », ''Mind'', vol. 101, 1992, et dans ''Vagueness'', 1994, chap. 8 (p. 229 et suiv.). La marge d'erreur y est posée comme condition de fiabilité : une croyance ne vaut comme connaissance que si la proposition reste vraie dans tous les cas suffisamment semblables.</ref>.
== Le vague et l'ignorance ==
[[Fichier:Color gradient illustrating a sorites paradox.png|vignette|Un dégradé continu : à partir de quelle nuance le rouge cesse-t-il d'être rouge ? L'absence de frontière visible est au cœur du sorite.]]
Sa notoriété philosophique commence surtout avec un casse-tête vénérable, le [[sorite]], du grec ''sôros'', le tas. Un seul grain de blé ne fait pas un tas ; ajouter un grain à ce qui n'est pas un tas ne saurait le transformer en tas ; donc, de proche en proche, dix mille grains ne font toujours pas un tas. La conclusion est manifestement absurde, et pourtant chacune des prémisses paraît irréprochable. Le paradoxe vaut pour tous les prédicats vagues de notre langue : « chauve », « grand », « mince », « rouge ». Combien de cheveux faut-il perdre pour devenir chauve ? À quel instant précis l'enfant que nous fûmes a-t-il cessé d'être un enfant ? Ces questions semblent n'admettre aucune réponse, et c'est cette absence apparente de frontière nette qui paraît constituer le vague lui-même.
Le premier tiers de ''Vagueness'' est d'ailleurs une histoire, conduite avec une érudition que l'on n'attend pas toujours d'un logicien<ref>''Vagueness'', chap. 1, pour l'histoire du paradoxe, de Chrysippe à Frege et [[Bertrand Russell|Russell]].</ref>. Williamson y exhume la longue carrière du paradoxe, depuis les Mégariques qui l'inventèrent jusqu'aux logiciens modernes qui le redécouvrirent. Il s'attarde sur la réponse de Chrysippe le stoïcien, qui se taisait avant la question embarrassante, comme un cocher retient ses chevaux au bord du précipice, et il note que les stoïciens, loin de nier l'existence d'une coupure nette, l'acceptaient au contraire de bon cœur. Il rappelle que Leibniz, répondant à Locke, discutait déjà du Tas et du Chauve, que Hegel se servait du sorite pour illustrer le passage du quantitatif au qualitatif, l'eau qui se change soudain en vapeur ou en glace. Avec Frege et Russell, le vague redevient une menace pour la logique : Frege le bannissait comme un défaut du langage ordinaire, Russell le rattachait à la non-transitivité de l'indiscernabilité et au seuil de la discrimination. En reconstruisant cette tradition, Williamson ne fait pas seulement œuvre d'historien : il montre que sa propre solution, l'idée d'une frontière nette mais cachée, a des ancêtres, et qu'elle est moins extravagante qu'elle n'en a l'air.
Trois grandes stratégies se partageaient le terrain lorsque Williamson publie ''Vagueness'', en 1994. La première, issue des logiques à valeurs multiples, propose de remplacer le couple vrai-faux par un continuum de degrés de vérité : « Il est chauve » serait vrai à 0,6, ni tout à fait vrai ni tout à fait faux. La deuxième, la méthode des survaluations, conserve le vrai et le faux mais admet que certaines propositions n'ont aucune valeur de vérité dans les cas limites ; une phrase ne devient vraie que si elle l'est sous toutes les façons admissibles de rendre le terme précis. La troisième, le nihilisme, conclut du paradoxe que les prédicats vagues sont tout simplement incohérents, qu'il n'y a ni tas ni chauves. Williamson examine ces trois voies avec une patience d'horloger, et les écarte l'une après l'autre, parce que toutes paient leur solution d'un sacrifice : elles renoncent à la logique classique, ou à la bivalence, ou aux choses mêmes.
La thèse qu'il leur substitue déconcerte au premier abord, et il ne s'en cache pas. Sa préface s'ouvre sur un aveu : ce livre, écrit-il, est né de ses tentatives pour réfuter sa propre thèse principale, à savoir que le vague consiste dans notre ignorance des frontières nettes de nos concepts, et qu'il n'exige donc aucune révision de la logique standard<ref>La préface de ''Vagueness'' présente le livre comme né de tentatives pour réfuter la thèse épistémique : le vague consiste dans notre ignorance des frontières nettes de nos concepts.</ref>. L'idée est la suivante. Il existe bel et bien un nombre de cheveux à partir duquel on est chauve : un homme avec ce nombre de cheveux est chauve, un homme avec un cheveu de plus ne l'est pas. La coupure existe. Simplement, nous ne pouvons pas savoir où elle passe. Le vague n'est pas une propriété du monde, une indétermination des faits ; c'est une variété particulière de notre ignorance. Cette position, que l'on nomme aujourd'hui épistémicisme, permet de tout conserver : la bivalence, le tiers exclu, la logique classique dans son intégrité. Le sorite est résolu d'un mot : sa prémisse inductive, l'idée qu'un grain de plus ne fait jamais la différence, est tout bonnement fausse. Il y a un grain qui la fait. Nous ignorons lequel.
Qu'on ne s'y trompe pas : Williamson ne nie pas que nos mots soient vagues. C'est précisément le vague qu'il entreprend d'expliquer, et son originalité est de proposer une théorie de ce en quoi cette vagueur consiste. Cette théorie l'identifie à une ignorance plutôt qu'à un flou des choses. Reste alors l'objection qui vient aussitôt à l'esprit, et qui faisait jusque-là figure de réfutation : si ces frontières existaient, nous devrions pouvoir les trouver ; or nous ne le pouvons pas ; donc elles n'existent pas. Tout l'effort du livre consiste à désamorcer ce raisonnement en expliquant pourquoi, si elles existaient, elles nous demeureraient par principe inaccessibles. L'explication mobilise deux ressorts. Le premier est la manière dont le sens d'un mot dépend de l'usage que nous en faisons collectivement. La signification de « mince » est fixée par l'immense réseau de nos dispositions à l'employer ou à le refuser ; or aucun de nous ne peut surveiller ce réseau dans tous ses détails, ni rendre l'usage qu'il fait du mot à un instant donné parfaitement sensible à l'ensemble dont il dépend. Le second ressort est la marge d'erreur. Williamson le montre par un exemple où il se prend lui-même pour cobaye. La phrase « TW est mince » est peut-être vraie, mais elle aurait très facilement pu être fausse, sans que ses mensurations changent d'un pouce, pour peu que l'usage du mot « mince » eût été tant soit peu différent, ce qui était parfaitement possible. Et celui qui prononce assertivement cette phrase aurait tout aussi facilement pu la prononcer à faux, car sa décision de l'énoncer n'était pas sensible à tous les menus déplacements d'usage qui l'auraient rendue fausse. Une croyance ne vaut comme connaissance que si elle n'aurait pas pu se tromper aussi aisément. Près de la frontière, cette condition n'est jamais remplie. D'où notre ignorance, non pas accidentelle, mais structurelle.
On reconnaît ici, transposé des couleurs aux significations, le mécanisme étudié dans ''Identity and Discrimination''. Un mot vague est entouré d'autres significations possibles, infinitésimalement proches, que ceux qui les manieraient ne sauraient distinguer de la sienne ; et c'est cette indiscernabilité des sens voisins qui nous voile la frontière. La théorie du vague rejoint enfin l'épistémologie par un autre biais, celui du principe que les logiciens écrivent KK : si l'on sait quelque chose, sait-on que l'on le sait ? Williamson répond non. Reprenons l'exemple de l'arbre devant lequel il passe presque chaque jour depuis des années, sans jamais le mesurer. Sa connaissance de la hauteur de cet arbre est inexacte : sa vue, sa mémoire, son sens des proportions sont imparfaits. On peut construire un modèle où la relation entre situations compatibles avec ce que l'on sait n'est pas transitive, exactement comme l'indiscernabilité des hauteurs ; et le principe KK s'y effondre : on peut savoir sans pour autant savoir que l'on sait. Le sorite ne menace donc pas le prédicat « tas » ; il menacerait, tout au plus, le prédicat « tas connu », et seulement si l'on acceptait KK. Sans ce principe, une itération de savoir se perd à chaque pas, et le paradoxe s'épuise avant d'atteindre sa conclusion fausse<ref>« Inexact Knowledge », ''Mind'', 1992, p. 237-238, et ''Vagueness'', 1994, chap. 8 : le diagnostic du sorite pour la connaissance procède en niant le principe KK, lui-même conséquence du principe de marge d'erreur. L'analyse est reprise dans ''Knowledge and Its Limits'', 2000, chap. 4-5.</ref>.
== La connaissance d'abord ==
Pendant un demi-siècle, l'épistémologie de langue anglaise a tourné autour d'un projet : analyser la connaissance, c'est-à-dire la décomposer en éléments plus simples. La formule héritée de Platon en donnait la première version : connaître, ce serait croire quelque chose de vrai et de justifié. En 1963, un article de trois pages d'Edmund Gettier ruina cette définition par deux contre-exemples, et ouvrit une longue chasse à la condition manquante qui réparerait la formule<ref>Edmund Gettier, « Is Justified True Belief Knowledge? », ''Analysis'', vol. 23, 1963, p. 121-123.</ref>. Toutes les tentatives échouèrent, chacune appelant un nouveau contre-exemple. Williamson propose alors de renverser l'ordre des priorités : et si la connaissance ne se laissait pas analyser, parce qu'elle était première ?
Renversement, donc, plutôt qu'abolition. Williamson ne prétend pas clore une fois pour toutes le projet d'analyse de la connaissance ; il en inverse la direction, de manière influente, et propose d'en faire l'économie. Au lieu de tenir la connaissance pour un composé de croyance, de vérité et d'on ne sait quel ingrédient supplémentaire, il en fait le point de départ, le concept à l'aide duquel on éclaire les autres. ''Knowledge and Its Limits'', paru en 2000, porte ce programme : la connaissance d'abord, ''knowledge first''. La connaissance y est présentée comme un état mental à part entière, et même comme l'état mental factif le plus général, celui qui chapeaute toute la famille des attitudes qui ne peuvent porter que sur du vrai<ref>''Knowledge and Its Limits'', Oxford, Oxford University Press, 2000, chap. 1 : la connaissance est un état mental factif, et le plus général d'entre eux, en ce sens que tout état factif implique la connaissance de son contenu.</ref>. Voir que la porte est ouverte, se souvenir qu'on l'a fermée, s'apercevoir qu'il pleut : autant d'états qui enveloppent la vérité de leur contenu, et qui sont, chacun, une manière de savoir. On ne définit pas la connaissance ; on la situe, au sommet de cette famille.
Pourquoi tenir tant à cette indécomposabilité, que Williamson nomme la primalité ? Parce que la connaissance explique ce que la simple croyance n'explique pas. Il en donne un exemple resté célèbre, celui du cambrioleur. Un voleur qui sait qu'un diamant se trouve dans la maison la fouillera toute la nuit, sans se décourager ; celui qui le croit seulement, même avec raison et de bon droit, risque d'abandonner plus tôt, parce que sa relation au fait est plus fragile. La connaissance, attache plus solide au monde, soutient l'action avec une constance que la croyance n'a pas. Or si l'on décompose le savoir en un noyau interne, la croyance, et un supplément externe, la vérité plus quelque garantie, on perd cette unité explicative : l'explication renvoie à la connaissance prise en bloc, non à une conjonction de deux facteurs indépendants.
À cet état premier, Williamson refuse une propriété que la tradition lui prêtait volontiers : la transparence, ou comme il dit la luminosité. Une condition est lumineuse si, dès qu'elle est remplie, on est en position de savoir qu'elle l'est. On a longtemps cru que nos propres états d'esprit étaient ainsi faits, qu'il suffisait d'éprouver une douleur ou de sentir le froid pour savoir qu'on les éprouve. Williamson construit contre cette idée un argument serré, fondé une fois encore sur la marge d'erreur<ref>''Knowledge and Its Limits'', chap. 4 et 5, pour l'argument contre la luminosité et la notion de sécurité (''safety'').</ref>. La conséquence est une réfutation du principe KK déjà rencontré à propos du vague : on peut savoir sans savoir que l'on sait, parce que la connaissance exige une marge de sécurité, la sécurité que l'on n'aurait pas pu aisément se tromper. Cette notion de sécurité fournit d'ailleurs la caractérisation positive du savoir que Williamson est prêt à concéder, non comme une analyse, mais comme une vérité éclairante : si l'on sait, on n'aurait pas pu facilement avoir tort dans un cas semblable. Une croyance est sûre lorsque, dans tous les cas suffisamment proches où on la formerait sur une base semblable, elle serait vraie. La sécurité n'est pas une condition interne ; elle dépend de la configuration du monde autour de nous. C'est dire combien l'épistémologie de Williamson tourne le dos à l'[[internalisme]], à l'idée que tout ce qui compte pour la justification serait accessible par simple réflexion. La connaissance habite le monde, non l'intériorité d'un sujet replié sur ses états.
De ce primat de la connaissance, Williamson tire une dernière conséquence, qui a fait couler beaucoup d'encre : notre évidence se réduit à ce que nous savons<ref>''Knowledge and Its Limits'', chap. 9 : l'évidence est la connaissance (''E = K'').</ref>. ''E = K'', écrit-il, l'évidence est la connaissance. Ce dont nous disposons pour étayer nos croyances, ce sur quoi nous raisonnons, n'est ni un donné sensoriel ni un ensemble d'impressions privées, mais l'ensemble des propositions que nous connaissons. Le foyer cognitif cartésien, ce lieu intérieur où l'esprit serait chez lui et ne pourrait se tromper, est un mythe : il n'y a pas de retraite à l'abri du monde.
Il faut le dire sans détour : cette thèse demeure l'une des plus débattues de l'épistémologie récente, et l'article ne lui rendrait pas justice en la présentant comme un acquis. Les internalistes lui reprochent de congédier trop vite l'idée d'une justification accessible de l'intérieur ; les partisans d'une théorie de la justification refusent de renoncer au projet d'analyse ; d'autres contestent que l'on puisse traiter la connaissance comme un état mental factif primitif. Ernest Sosa, par exemple, a objecté que « croire sûrement » serait un état factif plus général que la connaissance, ce qui ruinerait la caractérisation ; Williamson a répliqué que « croire sûrement » n'est pas sémantiquement insécable, et ne saurait donc compter parmi les états factifs primitifs. Le débat n'est pas clos ; il a seulement changé de terrain, ce qui est peut-être la meilleure mesure de l'influence du livre.
== La modalité : du possible imaginé au possible réel ==
La modalité, ce domaine du nécessaire et du possible, occupe Williamson sous deux aspects qu'il importe de ne pas confondre : comment connaissons-nous ce qui aurait pu être, et qu'est-ce, au juste, qui aurait pu être ? La première question est épistémologique, la seconde métaphysique, et il leur a donné des réponses également originales.
Sur la connaissance du possible, la conception reçue voulait que nous disposions d'une faculté propre, la conception ou ''conceivability'', qui ferait office de fenêtre sur le possible : ce que je puis concevoir sans contradiction serait possible, ce que je ne puis concevoir serait impossible. Williamson récuse cette image d'une faculté spéciale. Notre savoir des possibilités, soutient-il dans ''The Philosophy of Philosophy'', fait appel à la même aptitude tout ordinaire qui nous sert à évaluer des [[conditionnel contrefactuel|conditionnels contrefactuels]], ces énoncés en « si... alors il en serait allé ainsi » que nous manions à longueur de journée<ref>''The Philosophy of Philosophy'', Oxford, Blackwell, 2007, chap. 5 : la connaissance modale fait appel à la même capacité cognitive que l'évaluation des conditionnels contrefactuels, sans qu'il faille postuler une faculté supplémentaire.</ref>. Pour décider si quelque chose aurait pu se produire, nous développons l'hypothèse et regardons si une contradiction en surgit, exactement comme lorsque nous nous demandons ce qui serait arrivé si nous avions pris l'autre chemin. Or cette aptitude n'a rien d'a priori au sens traditionnel : elle puise abondamment dans notre connaissance du monde, elle est faillible, elle n'est pas transparente. On ne lit pas le possible dans le ciel des idées ; on l'établit, avec les moyens du bord, à partir de ce que l'on sait déjà. Du même coup, les démarches qui prétendent s'appuyer sur un a priori bien net, comme la sémantique à deux dimensions chère à [[David Chalmers]], se trouvent fragilisées dans leurs fondements épistémiques<ref>« Armchair Philosophy, Metaphysical Modality and Counterfactual Thinking », ''Proceedings of the Aristotelian Society'', vol. 105, 2005, p. 1-23, et ''The Philosophy of Philosophy'', 2007, chap. 5. La concevabilité y est tenue pour un test peu fiable du possible tant qu'on ne la définit pas par la possibilité même ; l'aptitude réellement à l'œuvre est celle, ordinaire, qui sert à évaluer les conditionnels contrefactuels, de sorte qu'aucune faculté spéciale n'a besoin d'être postulée.</ref>.
Reste la seconde question, proprement métaphysique : qu'est-ce qui aurait pu être ? Ici Williamson défend, dans ''Modal Logic as Metaphysics'' (2013), une thèse qu'il nomme le [[nécessitisme]], et qui heurte de front le sens commun. On peut l'énoncer en une formule : nécessairement, tout est nécessairement quelque chose<ref>''Modal Logic as Metaphysics'', Oxford, Oxford University Press, 2013, chap. 1 ; et « Necessitism, Contingentism, and Plural Quantification », ''Mind'', vol. 119, n° 475, 2010, p. 657-748, qui formule la thèse (NNE : nécessairement, tout est nécessairement quelque chose) et la distingue du possibilisme comme du meinongianisme. Le terme retenu pour les objets en question est « contingentement non concret » et non « seulement possible ».</ref>. Autrement dit, rien de ce qui est ne pourrait n'avoir absolument rien été ; et rien, non plus, ne pourrait s'ajouter à ce qu'il y a. Le contingentiste, son adversaire, soutient l'inverse : telle table existe, mais aurait pu n'exister pas du tout, et d'autres choses auraient pu exister qui n'existent pas.
L'objection saute aux yeux. Si rien ne peut commencer ni cesser d'être quelque chose, que faire de l'enfant que tel couple aurait pu avoir et n'a pas eu, de la table que ce menuisier aurait pu fabriquer et n'a pas fabriquée ? C'est ici qu'il faut être précis, sous peine de caricaturer la thèse. Le nécessitiste ne dit pas qu'il existe, à côté des choses concrètes, une foule de fantômes seulement possibles. Ce que nous sommes tentés d'appeler un « objet seulement possible », par exemple un enfant possible de Wittgenstein, est en réalité un objet contingentement non concret : il est bel et bien quelque chose, il aurait pu être concret, de chair et d'os, mais il se trouve qu'il ne l'est pas. Il n'est pas un néant, ni un possible flottant entre l'être et le non-être ; il est, sur le mode du non-concret. Williamson prend soin de distinguer cette position de deux autres avec lesquelles on la confond aisément : elle n'est pas le meinongianisme, qui peuplerait le monde d'objets inexistants ; elle n'est pas davantage le possibilisme classique. Le débat embrouillé entre possibilistes et actualistes se laisse, dit-il, reformuler en un débat plus clair et plus maniable, celui du nécessitisme et du [[contingentisme]], qui se joue sur la validité d'une formule logique précise, la [[formule de Barcan]].
Pourquoi soutenir une thèse aussi contre-intuitive ? Non par goût du paradoxe, mais par fidélité à la méthode. Le nécessitisme, montre Williamson, fournit la logique modale quantifiée la plus simple et la plus puissante : il valide la formule de Barcan et sa réciproque, il autorise une sémantique à domaine constant, il évite une foule de complications. Entre deux théories rivales, on choisit comme le physicien choisit entre deux hypothèses : celle qui rend le plus avec le moins. Que la plus simple heurte nos intuitions n'est pas, en soi, un argument contre elle ; nos intuitions sur ce qui aurait pu exister n'ont pas plus d'autorité, sur ce terrain, que le sens commun n'en avait sur la mécanique céleste.
== La méthode : l'anti-exceptionnalisme ==
Tous ces résultats reposent sur une même conception de ce qu'est philosopher, exposée dans ''The Philosophy of Philosophy'' (2007) puis, sous une forme accessible à tous, dans ''Doing Philosophy'' (2018). La thèse y est déjà nette, même si le mot ne s'imposera vraiment que plus tard : c'est ce qu'il appellera, et de plus en plus explicitement, anti-exceptionnalisme<ref>''The Philosophy of Philosophy'', chap. 1 et 7 ; ''Doing Philosophy'', Oxford, Oxford University Press, 2018. La thèse méthodologique est présente dès 2007 ; le qualificatif « anti-exceptionnaliste » ne devient un mot d'ordre explicite que dans les travaux plus récents, du sous-titre de ''Good as Usual'' (2025) à des essais comme « Moral Anti-Exceptionalism ».</ref>. La philosophie, soutient-il, n'occupe aucune position d'exception parmi les savoirs. Elle ne dispose pas d'une faculté spéciale qui lui ouvrirait un accès direct aux essences ; elle ne procède pas par une méthode purement a priori qui la couperait de l'expérience. Elle est de la même famille que les autres enquêtes, simplement plus abstraite et privée de laboratoire.
Le cas le plus discuté est celui des intuitions. On répète volontiers que la philosophie se fonde sur des intuitions, ces jugements spontanés que provoquent en nous les expériences de pensée : le wagon fou que l'on peut dévier sur une autre voie, la chambre chinoise, le village où l'on ne sait plus qui est chauve. Williamson conteste cette description. Ce que nous appelons intuition n'est pas le verdict d'une faculté mystérieuse, ni un donné qu'il faudrait recueillir comme on recueille des réponses à un sondage. C'est un simple jugement, exercé sur un cas hypothétique, et il vaut comme source de connaissance pour autant qu'il est compétent, non parce qu'il serait « intuitif ». La même capacité ordinaire d'évaluer des conditionnels contrefactuels, déjà rencontrée à propos du possible, suffit à en rendre compte : juger ce qui se passerait si telle situation se présentait, voilà ce que nous faisons devant une expérience de pensée, et c'est une chose que nous savons faire.
De là une conséquence qui dérange les habitudes : la distinction même de l'a priori et de l'a posteriori, sur laquelle tant de débats se sont bâtis, lui paraît trop grossière pour un travail théorique sérieux. Nos connaissances modales, par exemple, ne sont ni purement indépendantes de l'expérience ni purement tirées d'elle ; l'expérience y joue un rôle qui n'est ni de simple justification ni de simple déclenchement. La frontière s'estompe. Comment, alors, tranche-t-on une question philosophique ? Par la même méthode que partout : l'inférence vers la meilleure explication, ce que la tradition nomme l'[[abduction]]. On compare des théories rivales, on pèse leur simplicité, leur puissance, leur accord avec ce que l'on tient par ailleurs pour acquis, et l'on retient la meilleure. Rien, en philosophie, n'est gratuit au point de n'imposer aucune contrainte à la réalité : une thèse a des conséquences, et ses conséquences se paient. C'est cette conception qui commande, chaque fois, les choix de Williamson, du nécessitisme à la défense de la logique classique. La question n'est jamais « qu'est-ce qui est évident ? », mais « quelle théorie d'ensemble fait le mieux le travail ? ».
== Le dialogue : ''Tetralogue'' ==
''Tetralogue'', paru en 2015, est un dialogue à la manière antique : quatre voyageurs se trouvent réunis dans un train et discutent jusqu'au terminus. Sarah défend la science et la raison ; Bob, qu'un guérisseur a guéri, en est venu à croire à la sorcellerie ; Roxana, logicienne intransigeante, traque la moindre incohérence ; Zac, conciliant et relativiste, voudrait que chacun ait raison à sa façon. De ce quatuor naît une comédie d'idées où s'affrontent les attitudes que nous adoptons spontanément face au désaccord.
Le propos du livre est de défendre, sans pédantisme, deux thèses jumelles que Williamson tient pour inséparables : la vérité est objective, et nous sommes faillibles. Contre Zac, il s'agit de montrer que la formule « vrai pour moi » ne veut rien dire de cohérent : si une chose est vraie, elle l'est tout court, et croire le contraire à propos du même monde, c'est se tromper, non détenir une autre vérité. Contre une certaine arrogance scientiste, il s'agit de rappeler que reconnaître la possibilité de son erreur n'oblige nullement à renoncer à juger. Le titre, ''I'm Right, You're Wrong'', condense cette double leçon avec une provocation calculée : dans un désaccord véritable, l'un a raison et l'autre tort, et l'admettre n'est pas un manque de tolérance, c'est la condition d'une conversation sérieuse. On respecte mieux autrui en le tenant pour capable de vérité et d'erreur qu'en le confinant poliment dans sa bulle. Le dialogue, sous ses dehors plaisants, est ainsi une défense du réalisme contre le [[relativisme]], ce même réalisme qui gouverne en sous-main toute l'œuvre.
== L'éthique et l'action : ''Good as Usual'' ==
Le dernier grand chantier de Williamson, rassemblé en 2025 sous le titre ''Good as Usual'', dont le sous-titre annonce des essais anti-exceptionnalistes sur les normes, les valeurs et l'action, étend à la philosophie pratique le programme élaboré ailleurs. La thèse directrice est que le normatif ne forme pas un royaume à part. Le bien, la connaissance morale, les normes de la croyance et de l'action ne sont pas plus exceptionnels que le reste ; ils s'étudient avec les mêmes outils, et la connaissance y joue le même rôle central que dans la vie intellectuelle.
La connaissance morale, d'abord. Contre l'argument sceptique qui invoque l'ampleur des désaccords moraux pour conclure à l'absence de savoir éthique, Williamson rappelle que la connaissance n'exige qu'une fiabilité locale. Pourvu que l'on admette qu'il y a des vérités morales, il n'y a, soutient-il, aucun obstacle particulier à les connaître. Que des sociétés divergent sur ce qui est juste ne prouve pas que nul ne sait rien en morale, pas plus que l'existence de désaccords perceptifs ne ruine la perception ; on peut être fiable touchant les actions de son propre milieu sans l'être touchant celles d'un milieu lointain. La capacité de reconnaître le bien et le mal est une capacité de reconnaissance comme une autre, faillible et néanmoins source de savoir.
Ensuite, la connaissance d'abord s'applique à l'action, et c'est ici qu'il faut restituer exactement les termes de l'analogie, qu'on déforme facilement. Connaître se tient à croire comme produire intentionnellement un état de choses se tient à le désirer<ref>L'analogie remonte à « Knowing and Asserting », ''The Philosophical Review'', vol. 105, n° 4, 1996, p. 489-523 (notamment p. 521) : connaître se tient à croire comme produire intentionnellement un état de choses se tient à le désirer ; les deux assurent l'accord du contenu et du monde, mais selon des directions d'ajustement opposées. Elle est reprise et développée dans ''Good as Usual'', 2025.</ref>. Si je sais que P, alors P ; de même, si je fais en sorte que P, alors P. Mais il ne suffit pas, pour savoir que P, de le croire alors que P se trouve vrai, car l'accord pourrait n'être qu'accidentel ; il ne suffit pas davantage, pour avoir produit P, de l'avoir désiré alors que P se trouve réalisé. La connaissance est le bon cas d'une direction d'ajustement, celle de l'esprit au monde : la croyance vise à se conformer au monde, et la connaissance est la croyance qui y parvient sans hasard. L'action est le bon cas de la direction inverse, celle du monde à l'esprit : le désir vise à conformer le monde à lui, et l'action est le désir qui y parvient sans hasard. Ce qui sépare connaissance et action n'est donc pas le degré de réussite, c'est le sens de l'ajustement. La connaissance est l'entrée du raisonnement pratique, son point de départ ; l'action en est la sortie réussie. De là une norme symétrique de celle de l'assertion : n'agis que sur ce que tu sais. Quand la délibération fonctionne bien, on n'emploie comme prémisse que ce que l'on connaît ; une prémisse simplement crue, sans être sue, est un grain de sable qui dérègle la machine. Williamson y intègre une thèse qu'il défend de longue date avec [[Jason Stanley]], l'intellectualisme touchant le savoir-faire : savoir faire quelque chose, c'est savoir une vérité, et non posséder une aptitude d'une autre nature ; le savoir-faire peut donc fournir une prémisse au raisonnement pratique précisément parce qu'il est un savoir-que.
Le même esprit conduit Williamson à reprendre, du côté de la croyance, sa critique de l'internalisme. Il existe plusieurs normes possibles de la croyance : une norme de vérité, une norme d'évidence, une norme de connaissance. Il plaide pour la dernière, sous une forme fonctionnelle : crois seulement ce que tu sais. Et il fait jouer une dernière fois l'argument contre la luminosité pour récuser l'exigence internaliste selon laquelle les fondements de nos jugements devraient nous être accessibles par simple introspection. Le titre du recueil joue d'ailleurs sur les mots : le bien y est traité « comme d'habitude », c'est-à-dire comme le fonctionnement normal, non défectueux, d'êtres engagés dans le monde. Là encore, le geste de Williamson est de ramener la valeur dans le tissu commun de la connaissance et de l'action, au lieu de la reléguer dans une sphère séparée.
== Réception et influence ==
L'œuvre de Williamson a suscité une littérature critique abondante, signe de son importance. Deux volumes collectifs lui ont été consacrés, l'un sur la connaissance, l'autre sur la modalité, chacun accompagné de ses réponses détaillées aux objections<ref>Patrick Greenough et Duncan Pritchard (dir.), ''Williamson on Knowledge'', 2009 ; Mark McCullagh et Juhani Yli-Vakkuri (dir.), ''Williamson on Modality'', 2017.</ref>. Les fronts de discussion sont nombreux. Les internalistes tiennent qu'il a écarté trop vite l'idée d'une justification accessible de l'intérieur. Les défenseurs de la méthode des survaluations, comme [[Delia Graff Fara]], refusent de payer la bivalence au prix de l'intuition qu'aucune coupure nette ne traverse nos prédicats vagues. Les partisans des logiques non classiques rejettent son plaidoyer pour la logique standard. Certains critiques jugent le nécessitisme, avec ses objets contingentement non concrets, d'un coût métaphysique trop lourd. À chacun Williamson répond avec la même rigueur méthodique, en déplaçant le débat sur le terrain qui est le sien, celui de la comparaison des théories ; et c'est souvent cette manière de répondre, autant que les thèses elles-mêmes, qui a marqué ses lecteurs.
Son influence tient aussi à autre chose qu'à ses arguments. Il a contribué à légitimer une certaine façon de faire de la philosophie : technique sans être stérile, ambitieuse sans verser dans la spéculation, attentive à la forme logique des problèmes. Son rayonnement passe enfin par l'enseignement. Il a dirigé un grand nombre de thèses, et plusieurs de ses anciens étudiants comptent aujourd'hui parmi les figures montantes de la discipline. Il s'est aussi adressé au grand public, par ses dialogues, par ses petits livres d'initiation, par ses chroniques de presse, convaincu que la philosophie n'a rien à gagner à se retrancher dans un jargon d'initiés. L'auteur de traités exigeants et le pédagogue ne font chez lui qu'une seule personne, fidèle à l'idée que la difficulté ne doit pas être masquée mais apprivoisée.
== Conclusion ==
Ce qui frappe, au terme de ce parcours, c'est l'unité d'une œuvre que la diversité des sujets pourrait faire croire dispersée. Du vague à la connaissance, de la modalité à la méthode, et jusqu'à l'éthique des derniers travaux, une même sensibilité se reconnaît. Un réalisme constant, d'abord : le réel a ses traits indépendamment de nous, et notre ignorance ne doit jamais être prise pour une indétermination des choses. Un attachement à la logique classique, ensuite, défendu non par dogmatisme mais parce qu'elle figure dans la meilleure théorie globale. La conviction, encore, que la connaissance est la pierre angulaire, le concept premier à partir duquel s'éclairent l'évidence, l'assertion, l'action et la valeur. Et, partout, deux motifs qui donnent à l'ensemble sa signature : la structure de la connaissance inexacte, avec son principe de marge d'erreur, née de l'indiscernabilité non transitive et reparaissant aussi bien dans la théorie du vague que dans l'argument contre la luminosité ; et l'anti-exceptionnalisme, cette idée que la philosophie ne diffère pas en nature des autres enquêtes et procède comme elles par inférence vers la meilleure explication.
Williamson aura beaucoup contribué à une certaine idée de la philosophie analytique : une discipline qui traite ses questions avec autant de sérieux théorique que les sciences, sans pour autant céder à l'obscurité ni au relativisme. On peut discuter chacune de ses thèses, et beaucoup le font ; on peut juger le nécessitisme trop coûteux, l'épistémicisme trop hardi, le primat de la connaissance trop exclusif. Reste, par-delà ces désaccords, une exigence de rigueur et une manière de poser les problèmes dont la philosophie de notre temps porte l'empreinte.
== Notes et références ==
{{références|colonnes=2}}
== Bibliographie ==
=== Sources primaires (œuvres de Timothy Williamson) ===
* « Criteria of Identity and the Axiom of Choice », ''The Journal of Philosophy'', vol. 83, n° 7, 1986, p. 380-394.
* ''Identity and Discrimination'', Oxford, Basil Blackwell, 1990 (édition augmentée, Wiley-Blackwell, 2013).
* ''Vagueness'', Londres, Routledge, 1994.
* « Knowing and Asserting », ''The Philosophical Review'', vol. 105, n° 4, 1996, p. 489-523.
* ''Knowledge and Its Limits'', Oxford, Oxford University Press, 2000.
* ''The Philosophy of Philosophy'', Oxford, Blackwell, 2007 (2e édition augmentée, Wiley-Blackwell, 2021).
* « Necessitism, Contingentism, and Plural Quantification », ''Mind'', vol. 119, n° 475, 2010, p. 657-748.
* ''Modal Logic as Metaphysics'', Oxford, Oxford University Press, 2013.
* ''Tetralogue: I'm Right, You're Wrong'', Oxford, Oxford University Press, 2015.
* ''Doing Philosophy: From Common Curiosity to Logical Reasoning'', Oxford, Oxford University Press, 2018 (réédition en poche sous le titre ''Philosophical Method: A Very Short Introduction'', 2020).
* ''Suppose and Tell: The Semantics and Heuristics of Conditionals'', Oxford, Oxford University Press, 2020.
* (avec Paul Boghossian) ''Debating the A Priori'', Oxford, Oxford University Press, 2020.
* ''Overfitting and Heuristics in Philosophy'', Oxford, Oxford University Press, 2024.
* ''Good as Usual: Anti-Exceptionalist Essays on Norms, Values, and Action'', Oxford, Oxford University Press, 2025.
=== Études critiques consacrées à son œuvre ===
* Patrick Greenough et Duncan Pritchard (dir.), ''Williamson on Knowledge'', Oxford, Oxford University Press, 2009 (avec les « Replies to Critics » de Williamson).
* Mark McCullagh et Juhani Yli-Vakkuri (dir.), ''Williamson on Modality'', Londres, Routledge, 2017.
=== Autres ouvrages et articles cités ===
* Gottlob Frege, ''Les Fondements de l'arithmétique'' (1884).
* Edmund Gettier, « Is Justified True Belief Knowledge? », ''Analysis'', vol. 23, 1963, p. 121-123.
* Saul Kripke, ''Naming and Necessity'', Oxford, Blackwell, 1980.
* David Chalmers, ''The Conscious Mind: In Search of a Fundamental Theory'', Oxford, Oxford University Press, 1996.
* Ernest Sosa, ''Knowing Full Well'', Princeton, Princeton University Press, 2011.
=== Sources biographiques ===
Les données biographiques (dates, postes, distinctions) proviennent des sources institutionnelles suivantes :
* [https://www.philosophy.ox.ac.uk/people/timothy-williamson Page de Timothy Williamson, Faculty of Philosophy, université d'Oxford]
* [https://www.new.ox.ac.uk/timothy-williamson Page de Timothy Williamson, New College, Oxford]
* [https://www.thebritishacademy.ac.uk/fellows/timothy-williamson-FBA/ Notice « Professor Timothy Williamson FBA », The British Academy (élu Fellow en 1997)]
* [https://www.rse.org.uk/fellow/timothy-williamson/ Notice « Professor Timothy Williamson FRSE », The Royal Society of Edinburgh (élu Fellow en 1997)]
* [https://www.philosophy.ox.ac.uk/sitefiles/twcvshortnew-v2.pdf Curriculum vitae officiel (université d'Oxford)]
== Sur Wikisource ==
Deux textes classiques évoqués dans cet article sont disponibles en texte intégral sur Wikisource :
* [[s:fr:Nouveaux Essais sur l’entendement humain|Leibniz, ''Nouveaux Essais sur l'entendement humain'']], où sont discutés le Tas et le Chauve.
* [[s:fr:Essai philosophique concernant l’entendement humain|Locke, ''Essai philosophique concernant l'entendement humain'']], dont Leibniz fait son interlocuteur.
[[Catégorie:Philosophe]]
{{DEFAULTSORT:Williamson}}
[[Catégorie:Dictionnaire de philosophie (livre)]]
su3psdfttw9wuff9jamftq6m9fl8qyv
768379
768378
2026-06-23T03:53:00Z
PandaMystique
119061
768379
wikitext
text/x-wiki
{{DicoPhilo|Timothy Williamson|lecture=oui}}
[[Fichier:Professor Timothy Williamson (cropped).JPG|vignette|upright=1.1|Timothy Williamson.]]
Philosophe britannique né à Uppsala, en Suède, en 1955, Timothy Williamson compte parmi les figures les plus influentes de la philosophie analytique contemporaine. Titulaire de la chaire Wykeham de logique à l'université d'Oxford de 2000 à 2023, il a exercé une influence majeure sur plusieurs domaines que l'on tenait pour bien distincts : la théorie du vague, l'[[Dictionnaire de philosophie/Épistémologie|épistémologie]], la [[Dictionnaire de philosophie/Métaphysique|métaphysique]] de la modalité et la réflexion sur la méthode même de la philosophie. Une thèse le rendit d'abord célèbre, et elle prend la forme d'un paradoxe assumé. Nos mots vagues, comme « chauve » ou « tas », ont une extension déterminée : il existe, pour chacun, une frontière qui sépare les cas où le mot s'applique des cas où il ne s'applique pas. Simplement, dans les cas limites, nous sommes hors d'état de savoir où passe cette frontière. Le vague n'est donc pas, pour Williamson, une indétermination des choses ; c'est une certaine forme de notre ignorance<ref>Sur l'épistémicisme comme théorie de ce en quoi le vague consiste, et non comme négation du vague, voir ''Vagueness'', Londres, Routledge, 1994, chap. 7-8, et la préface.</ref>. De cette idée première, qui réhabilite la logique classique là où plusieurs approches concurrentes proposaient de la réviser, procède une œuvre d'une rare unité. On y retrouve partout la même conviction : il existe un monde indépendant de nous, la [[Dictionnaire de philosophie/Connaissance|connaissance]] en est la pierre angulaire, et la philosophie ne diffère pas en nature des autres formes d'enquête.
== Repères biographiques ==
[[Fichier:New College, Oxford 2011 04.jpg|vignette|New College (Oxford), dont Williamson est fellow depuis 2000.]]
Williamson naît à Uppsala de parents britanniques. Sa formation se fait tout entière à Oxford, au collège de Balliol, où il étudie d'abord les mathématiques et la philosophie, puis prépare un doctorat de philosophie qu'il soutient au tout début des années 1980, sous une direction qui passa successivement de David Bostock à Bill Newton-Smith, puis à Michael Dummett. Cette double éducation laisse une marque durable. Le goût de la précision formelle, l'aisance dans la logique modale quantifiée, le refus de toute approximation dans la conduite d'un argument tiennent sans doute à cette formation initiale. Ses premiers postes le mènent hors d'Oxford. Il enseigne au Trinity College de Dublin, de 1980 à 1988, avant de revenir comme fellow et tuteur à University College, à Oxford. En 1995, l'université d'Édimbourg lui confie la chaire de logique et de métaphysique, qu'il occupe cinq ans.
L'année 2000 marque sa consécration institutionnelle : il est élu à la chaire Wykeham de logique d'Oxford, une chaire que Dummett avait occupée de 1979 à 1992, et dont il devient ainsi l'un des successeurs<ref>Dummett occupa la chaire Wykeham de logique de 1979 à 1992 ; Williamson y fut élu en 2000 et l'occupa jusqu'en 2023. Williamson ne succéda donc pas immédiatement à Dummett.</ref>. Fellow de New College, il y demeure jusqu'en 2023, date à laquelle il prend le titre de professeur émérite tout en continuant d'y enseigner et d'y diriger des recherches. À cette base oxonienne s'ajoutent, au fil des ans, de nombreux postes de visite, parmi lesquels une charge régulière de professeur invité à Yale, où il se rend quelques semaines chaque année, et une affiliation à l'université de la Suisse italienne. Membre de la British Academy et de la Royal Society of Edinburgh, ancien président de l'Aristotelian Society et de la Mind Association, il a formé ou codirigé un grand nombre de doctorants, dont plusieurs occupent aujourd'hui des positions de premier plan. Il écrit aussi pour un public plus large, dans le Times Literary Supplement comme dans la rubrique de philosophie du New York Times, signe d'une volonté constante de faire descendre les questions abstraites dans la conversation commune.
[[Fichier:Michael Dummett September 2004.jpg|vignette|Michael Dummett, qui dirigea en partie sa thèse et le précéda à la chaire Wykeham.]]
Son parcours épouse, à sa manière, l'histoire de la philosophie analytique des cinquante dernières années. Formé dans le sillage de Dummett et du tournant linguistique, cette idée selon laquelle les problèmes philosophiques seraient au fond des problèmes sur le langage, Williamson s'en est progressivement détaché pour reconstruire une métaphysique et une épistémologie pleinement réalistes. Il représente ainsi le moment où la discipline, après avoir longtemps suspecté ses propres ambitions spéculatives, ose de nouveau parler du monde et non plus seulement de nos façons d'en parler.
== Un tempérament et deux convictions ==
Avant d'entrer dans le détail des thèses, il faut saisir l'esprit qui les anime, car il donne à l'œuvre sa cohérence. Williamson philosophe en homme qui croit que les désaccords se tranchent. Là où une certaine tradition voyait dans la philosophie un exercice d'assouplissement, une thérapie destinée à nous délivrer de fausses questions, il défend l'idée que les questions philosophiques sont de vraies questions, dotées de réponses vraies ou fausses, et que l'on s'en approche par l'argument et par la preuve. Le titre, à demi provocateur, qu'il a donné à son dialogue de 2015, ''Tetralogue: I'm Right, You're Wrong'', dit assez cette humeur : on peut respecter son interlocuteur sans renoncer à penser qu'il se trompe.
Deux fils traversent l'ensemble, et il est utile de les nommer dès maintenant pour ne pas les perdre de vue. Le premier est une découverte de structure, faite très tôt et reprise sans cesse : celle de la connaissance inexacte. Nos capacités de discrimination sont grossières ; entre deux situations imperceptiblement différentes, nous ne saurions dire laquelle nous place du bon côté d'une frontière. De ce fait élémentaire, Williamson tire un principe qu'il nomme, en anglais, ''margin for error'', la marge d'erreur : pour savoir quelque chose par observation, il faut disposer d'une marge de sécurité, sans quoi l'on aurait tout aussi bien pu se tromper. Ce principe, né de l'étude des relations d'indiscernabilité dans son premier livre, irrigue ensuite sa théorie du vague, puis sa théorie de la connaissance. Le second fil est une conviction de méthode : la philosophie n'occupe aucune position d'exception parmi les savoirs, elle ne possède ni faculté propre ni méthode purement [[Dictionnaire de philosophie/A priori|a priori]], elle progresse, comme les sciences, par inférence vers la meilleure explication. Présente dès ''The Philosophy of Philosophy'', en 2007, cette thèse se déploie jusqu'à ses essais d'éthique de 2025, étendue à des territoires toujours nouveaux ; c'est elle que recouvrira, de façon de plus en plus assumée, le mot d'anti-exceptionnalisme.
Sous ces deux fils court une basse continue : le réalisme. Il y a une manière dont les choses sont, indépendamment de ce que nous en savons. La bivalence, cette thèse sémantique selon laquelle toute proposition est vraie ou fausse, et la logique classique qui en règle les inférences restent, à ses yeux, les meilleurs instruments pour traiter nos énoncés sur le monde, non qu'elles le décriraient à la façon d'une théorie physique, mais parce qu'elles figurent dans la meilleure théorie d'ensemble de l'inférence et de la signification ; et notre ignorance, si vaste soit-elle, ne doit jamais être confondue avec une indétermination des choses elles-mêmes. Cette distinction, banale en apparence, suffit à départager Williamson de la plupart de ses adversaires.
== Les premiers travaux : identité, indiscernabilité, critères ==
[[Fichier:Young frege.jpg|vignette|Gottlob Frege, dont le critère d'identité des directions sert de point de départ aux premiers travaux de Williamson.]]
On présente parfois l'œuvre comme si elle commençait avec le paradoxe du tas. Ce serait oublier les premiers travaux, où se forge pourtant l'outil dont toute la suite tirera parti. Dès 1986, dans un article au titre austère, « Criteria of Identity and the Axiom of Choice », puis plus amplement dans son premier livre, ''Identity and Discrimination'', paru en 1990, Williamson reprend une question que les philosophes posent depuis Frege : qu'est-ce qu'un critère d'identité<ref>« Criteria of Identity and the Axiom of Choice », ''The Journal of Philosophy'', vol. 83, n° 7, 1986, p. 380-394 ; ''Identity and Discrimination'', Oxford, Basil Blackwell, 1990. L'analyse établit que, lorsque la relation de base est réflexive, symétrique mais non transitive, aucune relation n'obéit à la contrainte « forte » d'un critère d'identité, et que plusieurs y obéissent au sens « faible », l'existence d'un tel critère étant équivalente à l'axiome du choix.</ref> ? Frege en avait donné l'exemple canonique. Pour penser la direction d'une droite, disait-il, il faut d'abord savoir ce que c'est, pour deux droites, que d'être parallèles : la direction de la droite ''a'' est identique à la direction de la droite ''b'' si et seulement si ''a'' et ''b'' sont parallèles. Un critère d'identité, c'est cela : une relation entre des objets de départ, ici les droites, qui fixe l'identité d'objets dérivés, ici les directions. Et pour faire ce travail, la relation doit posséder une forme bien précise, celle des relations d'équivalence : réflexive, symétrique et transitive, à l'image de l'identité elle-même.
Or Williamson met le doigt sur un cas où le candidat le plus naturel échoue à remplir cette condition. Cherchons un critère d'identité pour la couleur perçue. La relation qui s'impose est l'indiscernabilité : deux échantillons ont la même couleur perçue lorsque l'œil ne parvient pas à les distinguer. Mais cette relation a un défaut qui la disqualifie. Elle n'est pas transitive. Un premier échantillon peut être indiscernable d'un deuxième, le deuxième d'un troisième, et le premier se distinguer pourtant nettement du troisième ; de minuscules écarts, insensibles un à un, finissent par s'additionner. L'indiscernabilité ne peut donc pas tenir lieu de critère d'identité, puisqu'un critère doit être transitif et qu'elle ne l'est pas.
La suite de l'analyse est d'une grande technicité, et c'est là qu'intervient l'axiome du choix, ce principe de la théorie des ensembles qui autorise à prélever un élément dans chacun des membres d'une collection, fût-elle infinie. Williamson démontre un résultat à deux faces. Là où la relation de départ n'est pas transitive, aucune relation ne peut servir de critère d'identité au sens fort ; et si l'on se contente d'un critère au sens faible, l'axiome du choix garantit qu'il en existe, mais plusieurs à la fois, sans qu'aucun ait un meilleur titre que les autres à passer pour le bon. Mieux, l'hypothèse même qu'un tel critère existe toujours s'avère équivalente à l'axiome du choix. La conséquence inquiète notre confiance ordinaire dans l'identité : partout où la transitivité de l'indiscernabilité se brise, nos jugements d'identité perçue perdent toute valeur de vérité déterminée, et le concept lui-même menace de n'être pas bien défini. Williamson illustre la même structure par l'identité personnelle, par ces cas de fission où une personne se scinderait en deux continuateurs : auquel des deux faut-il l'identifier ? Aucune réponse ne s'impose, et le choix paraît arbitraire.
Ce premier livre n'est pas un exercice isolé de logique. Il contient en germe presque tout ce qui suivra. L'idée que des différences imperceptibles s'accumulent jusqu'à devenir perceptibles, que nos capacités de discrimination sont par nature grossières, qu'il faut une certaine marge entre deux situations pour pouvoir les départager en connaissance de cause : voilà déjà le principe de marge d'erreur. Il reparaîtra au cœur de la théorie du vague, puis de la théorie de la connaissance. La structure découverte à propos des couleurs, transposée aux significations, puis aux états de connaissance, deviendra la matrice de toute l'œuvre<ref>Le lien entre l'indiscernabilité non transitive et le principe de marge d'erreur est noué dans ''Identity and Discrimination'', 1990, puis formalisé dans « Inexact Knowledge », ''Mind'', vol. 101, 1992, et dans ''Vagueness'', 1994, chap. 8 (p. 229 et suiv.). La marge d'erreur y est posée comme condition de fiabilité : une croyance ne vaut comme connaissance que si la proposition reste vraie dans tous les cas suffisamment semblables.</ref>.
== Le vague et l'ignorance ==
[[Fichier:Color gradient illustrating a sorites paradox.png|vignette|Un dégradé continu : à partir de quelle nuance le rouge cesse-t-il d'être rouge ? L'absence de frontière visible est au cœur du sorite.]]
Sa notoriété philosophique commence surtout avec un casse-tête vénérable, le sorite, du grec ''sôros'', le tas. Un seul grain de blé ne fait pas un tas ; ajouter un grain à ce qui n'est pas un tas ne saurait le transformer en tas ; donc, de proche en proche, dix mille grains ne font toujours pas un tas. La conclusion est manifestement absurde, et pourtant chacune des prémisses paraît irréprochable. Le paradoxe vaut pour tous les prédicats vagues de notre langue : « chauve », « grand », « mince », « rouge ». Combien de cheveux faut-il perdre pour devenir chauve ? À quel instant précis l'enfant que nous fûmes a-t-il cessé d'être un enfant ? Ces questions semblent n'admettre aucune réponse, et c'est cette absence apparente de frontière nette qui paraît constituer le vague lui-même.
Le premier tiers de ''Vagueness'' est d'ailleurs une histoire, conduite avec une érudition que l'on n'attend pas toujours d'un logicien<ref>''Vagueness'', chap. 1, pour l'histoire du paradoxe, de Chrysippe à Frege et Russell.</ref>. Williamson y exhume la longue carrière du paradoxe, depuis les Mégariques qui l'inventèrent jusqu'aux logiciens modernes qui le redécouvrirent. Il s'attarde sur la réponse de Chrysippe le stoïcien, qui se taisait avant la question embarrassante, comme un cocher retient ses chevaux au bord du précipice, et il note que les stoïciens, loin de nier l'existence d'une coupure nette, l'acceptaient au contraire de bon cœur. Il rappelle que Leibniz, répondant à Locke, discutait déjà du Tas et du Chauve, que Hegel se servait du sorite pour illustrer le passage du quantitatif au qualitatif, l'eau qui se change soudain en vapeur ou en glace. Avec Frege et Russell, le vague redevient une menace pour la logique : Frege le bannissait comme un défaut du langage ordinaire, Russell le rattachait à la non-transitivité de l'indiscernabilité et au seuil de la discrimination. En reconstruisant cette tradition, Williamson ne fait pas seulement œuvre d'historien : il montre que sa propre solution, l'idée d'une frontière nette mais cachée, a des ancêtres, et qu'elle est moins extravagante qu'elle n'en a l'air.
Trois grandes stratégies se partageaient le terrain lorsque Williamson publie ''Vagueness'', en 1994. La première, issue des logiques à valeurs multiples, propose de remplacer le couple vrai-faux par un continuum de degrés de vérité : « Il est chauve » serait vrai à 0,6, ni tout à fait vrai ni tout à fait faux. La deuxième, la méthode des survaluations, conserve le vrai et le faux mais admet que certaines propositions n'ont aucune valeur de vérité dans les cas limites ; une phrase ne devient vraie que si elle l'est sous toutes les façons admissibles de rendre le terme précis. La troisième, le nihilisme, conclut du paradoxe que les prédicats vagues sont tout simplement incohérents, qu'il n'y a ni tas ni chauves. Williamson examine ces trois voies avec une patience d'horloger, et les écarte l'une après l'autre, parce que toutes paient leur solution d'un sacrifice : elles renoncent à la logique classique, ou à la bivalence, ou aux choses mêmes.
La thèse qu'il leur substitue déconcerte au premier abord, et il ne s'en cache pas. Sa préface s'ouvre sur un aveu : ce livre, écrit-il, est né de ses tentatives pour réfuter sa propre thèse principale, à savoir que le vague consiste dans notre ignorance des frontières nettes de nos concepts, et qu'il n'exige donc aucune révision de la logique standard<ref>La préface de ''Vagueness'' présente le livre comme né de tentatives pour réfuter la thèse épistémique : le vague consiste dans notre ignorance des frontières nettes de nos concepts.</ref>. L'idée est la suivante. Il existe bel et bien un nombre de cheveux à partir duquel on est chauve : un homme avec ce nombre de cheveux est chauve, un homme avec un cheveu de plus ne l'est pas. La coupure existe. Simplement, nous ne pouvons pas savoir où elle passe. Le vague n'est pas une propriété du monde, une indétermination des faits ; c'est une variété particulière de notre ignorance. Cette position, que l'on nomme aujourd'hui épistémicisme, permet de tout conserver : la bivalence, le tiers exclu, la logique classique dans son intégrité. Le sorite est résolu d'un mot : sa prémisse inductive, l'idée qu'un grain de plus ne fait jamais la différence, est tout bonnement fausse. Il y a un grain qui la fait. Nous ignorons lequel.
Qu'on ne s'y trompe pas : Williamson ne nie pas que nos mots soient vagues. C'est précisément le vague qu'il entreprend d'expliquer, et son originalité est de proposer une théorie de ce en quoi cette vagueur consiste. Cette théorie l'identifie à une ignorance plutôt qu'à un flou des choses. Reste alors l'objection qui vient aussitôt à l'esprit, et qui faisait jusque-là figure de réfutation : si ces frontières existaient, nous devrions pouvoir les trouver ; or nous ne le pouvons pas ; donc elles n'existent pas. Tout l'effort du livre consiste à désamorcer ce raisonnement en expliquant pourquoi, si elles existaient, elles nous demeureraient par principe inaccessibles. L'explication mobilise deux ressorts. Le premier est la manière dont le sens d'un mot dépend de l'usage que nous en faisons collectivement. La signification de « mince » est fixée par l'immense réseau de nos dispositions à l'employer ou à le refuser ; or aucun de nous ne peut surveiller ce réseau dans tous ses détails, ni rendre l'usage qu'il fait du mot à un instant donné parfaitement sensible à l'ensemble dont il dépend. Le second ressort est la marge d'erreur. Williamson le montre par un exemple où il se prend lui-même pour cobaye. La phrase « TW est mince » est peut-être vraie, mais elle aurait très facilement pu être fausse, sans que ses mensurations changent d'un pouce, pour peu que l'usage du mot « mince » eût été tant soit peu différent, ce qui était parfaitement possible. Et celui qui prononce assertivement cette phrase aurait tout aussi facilement pu la prononcer à faux, car sa décision de l'énoncer n'était pas sensible à tous les menus déplacements d'usage qui l'auraient rendue fausse. Une croyance ne vaut comme connaissance que si elle n'aurait pas pu se tromper aussi aisément. Près de la frontière, cette condition n'est jamais remplie. D'où notre ignorance, non pas accidentelle, mais structurelle.
On reconnaît ici, transposé des couleurs aux significations, le mécanisme étudié dans ''Identity and Discrimination''. Un mot vague est entouré d'autres significations possibles, infinitésimalement proches, que ceux qui les manieraient ne sauraient distinguer de la sienne ; et c'est cette indiscernabilité des sens voisins qui nous voile la frontière. La théorie du vague rejoint enfin l'épistémologie par un autre biais, celui du principe que les logiciens écrivent KK : si l'on sait quelque chose, sait-on que l'on le sait ? Williamson répond non. Reprenons l'exemple de l'arbre devant lequel il passe presque chaque jour depuis des années, sans jamais le mesurer. Sa connaissance de la hauteur de cet arbre est inexacte : sa vue, sa mémoire, son sens des proportions sont imparfaits. On peut construire un modèle où la relation entre situations compatibles avec ce que l'on sait n'est pas transitive, exactement comme l'indiscernabilité des hauteurs ; et le principe KK s'y effondre : on peut savoir sans pour autant savoir que l'on sait. Le sorite ne menace donc pas le prédicat « tas » ; il menacerait, tout au plus, le prédicat « tas connu », et seulement si l'on acceptait KK. Sans ce principe, une itération de savoir se perd à chaque pas, et le paradoxe s'épuise avant d'atteindre sa conclusion fausse<ref>« Inexact Knowledge », ''Mind'', 1992, p. 237-238, et ''Vagueness'', 1994, chap. 8 : le diagnostic du sorite pour la connaissance procède en niant le principe KK, lui-même conséquence du principe de marge d'erreur. L'analyse est reprise dans ''Knowledge and Its Limits'', 2000, chap. 4-5.</ref>.
== La connaissance d'abord ==
Pendant un demi-siècle, l'épistémologie de langue anglaise a tourné autour d'un projet : analyser la connaissance, c'est-à-dire la décomposer en éléments plus simples. La formule héritée de Platon en donnait la première version : connaître, ce serait croire quelque chose de vrai et de justifié. En 1963, un article de trois pages d'Edmund Gettier ruina cette définition par deux contre-exemples, et ouvrit une longue chasse à la condition manquante qui réparerait la formule<ref>Edmund Gettier, « Is Justified True Belief Knowledge? », ''Analysis'', vol. 23, 1963, p. 121-123.</ref>. Toutes les tentatives échouèrent, chacune appelant un nouveau contre-exemple. Williamson propose alors de renverser l'ordre des priorités : et si la connaissance ne se laissait pas analyser, parce qu'elle était première ?
Renversement, donc, plutôt qu'abolition. Williamson ne prétend pas clore une fois pour toutes le projet d'analyse de la connaissance ; il en inverse la direction, de manière influente, et propose d'en faire l'économie. Au lieu de tenir la connaissance pour un composé de croyance, de vérité et d'on ne sait quel ingrédient supplémentaire, il en fait le point de départ, le concept à l'aide duquel on éclaire les autres. ''Knowledge and Its Limits'', paru en 2000, porte ce programme : la connaissance d'abord, ''knowledge first''. La connaissance y est présentée comme un état mental à part entière, et même comme l'état mental factif le plus général, celui qui chapeaute toute la famille des attitudes qui ne peuvent porter que sur du vrai<ref>''Knowledge and Its Limits'', Oxford, Oxford University Press, 2000, chap. 1 : la connaissance est un état mental factif, et le plus général d'entre eux, en ce sens que tout état factif implique la connaissance de son contenu.</ref>. Voir que la porte est ouverte, se souvenir qu'on l'a fermée, s'apercevoir qu'il pleut : autant d'états qui enveloppent la vérité de leur contenu, et qui sont, chacun, une manière de savoir. On ne définit pas la connaissance ; on la situe, au sommet de cette famille.
Pourquoi tenir tant à cette indécomposabilité, que Williamson nomme la primalité ? Parce que la connaissance explique ce que la simple croyance n'explique pas. Il en donne un exemple resté célèbre, celui du cambrioleur. Un voleur qui sait qu'un diamant se trouve dans la maison la fouillera toute la nuit, sans se décourager ; celui qui le croit seulement, même avec raison et de bon droit, risque d'abandonner plus tôt, parce que sa relation au fait est plus fragile. La connaissance, attache plus solide au monde, soutient l'action avec une constance que la croyance n'a pas. Or si l'on décompose le savoir en un noyau interne, la croyance, et un supplément externe, la vérité plus quelque garantie, on perd cette unité explicative : l'explication renvoie à la connaissance prise en bloc, non à une conjonction de deux facteurs indépendants.
À cet état premier, Williamson refuse une propriété que la tradition lui prêtait volontiers : la transparence, ou comme il dit la luminosité. Une condition est lumineuse si, dès qu'elle est remplie, on est en position de savoir qu'elle l'est. On a longtemps cru que nos propres états d'esprit étaient ainsi faits, qu'il suffisait d'éprouver une douleur ou de sentir le froid pour savoir qu'on les éprouve. Williamson construit contre cette idée un argument serré, fondé une fois encore sur la marge d'erreur<ref>''Knowledge and Its Limits'', chap. 4 et 5, pour l'argument contre la luminosité et la notion de sécurité (''safety'').</ref>. La conséquence est une réfutation du principe KK déjà rencontré à propos du vague : on peut savoir sans savoir que l'on sait, parce que la connaissance exige une marge de sécurité, la sécurité que l'on n'aurait pas pu aisément se tromper. Cette notion de sécurité fournit d'ailleurs la caractérisation positive du savoir que Williamson est prêt à concéder, non comme une analyse, mais comme une vérité éclairante : si l'on sait, on n'aurait pas pu facilement avoir tort dans un cas semblable. Une croyance est sûre lorsque, dans tous les cas suffisamment proches où on la formerait sur une base semblable, elle serait vraie. La sécurité n'est pas une condition interne ; elle dépend de la configuration du monde autour de nous. C'est dire combien l'épistémologie de Williamson tourne le dos à l'internalisme, à l'idée que tout ce qui compte pour la justification serait accessible par simple réflexion. La connaissance habite le monde, non l'intériorité d'un sujet replié sur ses états.
De ce primat de la connaissance, Williamson tire une dernière conséquence, qui a fait couler beaucoup d'encre : notre évidence se réduit à ce que nous savons<ref>''Knowledge and Its Limits'', chap. 9 : l'évidence est la connaissance (''E = K'').</ref>. ''E = K'', écrit-il, l'évidence est la connaissance. Ce dont nous disposons pour étayer nos croyances, ce sur quoi nous raisonnons, n'est ni un donné sensoriel ni un ensemble d'impressions privées, mais l'ensemble des propositions que nous connaissons. Le foyer cognitif cartésien, ce lieu intérieur où l'esprit serait chez lui et ne pourrait se tromper, est un mythe : il n'y a pas de retraite à l'abri du monde.
Il faut le dire sans détour : cette thèse demeure l'une des plus débattues de l'épistémologie récente, et l'article ne lui rendrait pas justice en la présentant comme un acquis. Les internalistes lui reprochent de congédier trop vite l'idée d'une justification accessible de l'intérieur ; les partisans d'une théorie de la justification refusent de renoncer au projet d'analyse ; d'autres contestent que l'on puisse traiter la connaissance comme un état mental factif primitif. Ernest Sosa, par exemple, a objecté que « croire sûrement » serait un état factif plus général que la connaissance, ce qui ruinerait la caractérisation ; Williamson a répliqué que « croire sûrement » n'est pas sémantiquement insécable, et ne saurait donc compter parmi les états factifs primitifs. Le débat n'est pas clos ; il a seulement changé de terrain, ce qui est peut-être la meilleure mesure de l'influence du livre.
== La modalité : du possible imaginé au possible réel ==
La modalité, ce domaine du nécessaire et du possible, occupe Williamson sous deux aspects qu'il importe de ne pas confondre : comment connaissons-nous ce qui aurait pu être, et qu'est-ce, au juste, qui aurait pu être ? La première question est épistémologique, la seconde métaphysique, et il leur a donné des réponses également originales.
Sur la connaissance du possible, la conception reçue voulait que nous disposions d'une faculté propre, la conception ou ''conceivability'', qui ferait office de fenêtre sur le possible : ce que je puis concevoir sans contradiction serait possible, ce que je ne puis concevoir serait impossible. Williamson récuse cette image d'une faculté spéciale. Notre savoir des possibilités, soutient-il dans ''The Philosophy of Philosophy'', fait appel à la même aptitude tout ordinaire qui nous sert à évaluer des conditionnels contrefactuels, ces énoncés en « si... alors il en serait allé ainsi » que nous manions à longueur de journée<ref>''The Philosophy of Philosophy'', Oxford, Blackwell, 2007, chap. 5 : la connaissance modale fait appel à la même capacité cognitive que l'évaluation des conditionnels contrefactuels, sans qu'il faille postuler une faculté supplémentaire.</ref>. Pour décider si quelque chose aurait pu se produire, nous développons l'hypothèse et regardons si une contradiction en surgit, exactement comme lorsque nous nous demandons ce qui serait arrivé si nous avions pris l'autre chemin. Or cette aptitude n'a rien d'a priori au sens traditionnel : elle puise abondamment dans notre connaissance du monde, elle est faillible, elle n'est pas transparente. On ne lit pas le possible dans le ciel des idées ; on l'établit, avec les moyens du bord, à partir de ce que l'on sait déjà. Du même coup, les démarches qui prétendent s'appuyer sur un a priori bien net, comme la sémantique à deux dimensions chère à [[Dictionnaire de philosophie/David Chalmers|David Chalmers]], se trouvent fragilisées dans leurs fondements épistémiques<ref>« Armchair Philosophy, Metaphysical Modality and Counterfactual Thinking », ''Proceedings of the Aristotelian Society'', vol. 105, 2005, p. 1-23, et ''The Philosophy of Philosophy'', 2007, chap. 5. La concevabilité y est tenue pour un test peu fiable du possible tant qu'on ne la définit pas par la possibilité même ; l'aptitude réellement à l'œuvre est celle, ordinaire, qui sert à évaluer les conditionnels contrefactuels, de sorte qu'aucune faculté spéciale n'a besoin d'être postulée.</ref>.
Reste la seconde question, proprement métaphysique : qu'est-ce qui aurait pu être ? Ici Williamson défend, dans ''Modal Logic as Metaphysics'' (2013), une thèse qu'il nomme le nécessitisme, et qui heurte de front le sens commun. On peut l'énoncer en une formule : nécessairement, tout est nécessairement quelque chose<ref>''Modal Logic as Metaphysics'', Oxford, Oxford University Press, 2013, chap. 1 ; et « Necessitism, Contingentism, and Plural Quantification », ''Mind'', vol. 119, n° 475, 2010, p. 657-748, qui formule la thèse (NNE : nécessairement, tout est nécessairement quelque chose) et la distingue du possibilisme comme du meinongianisme. Le terme retenu pour les objets en question est « contingentement non concret » et non « seulement possible ».</ref>. Autrement dit, rien de ce qui est ne pourrait n'avoir absolument rien été ; et rien, non plus, ne pourrait s'ajouter à ce qu'il y a. Le contingentiste, son adversaire, soutient l'inverse : telle table existe, mais aurait pu n'exister pas du tout, et d'autres choses auraient pu exister qui n'existent pas.
L'objection saute aux yeux. Si rien ne peut commencer ni cesser d'être quelque chose, que faire de l'enfant que tel couple aurait pu avoir et n'a pas eu, de la table que ce menuisier aurait pu fabriquer et n'a pas fabriquée ? C'est ici qu'il faut être précis, sous peine de caricaturer la thèse. Le nécessitiste ne dit pas qu'il existe, à côté des choses concrètes, une foule de fantômes seulement possibles. Ce que nous sommes tentés d'appeler un « objet seulement possible », par exemple un enfant possible de Wittgenstein, est en réalité un objet contingentement non concret : il est bel et bien quelque chose, il aurait pu être concret, de chair et d'os, mais il se trouve qu'il ne l'est pas. Il n'est pas un néant, ni un possible flottant entre l'être et le non-être ; il est, sur le mode du non-concret. Williamson prend soin de distinguer cette position de deux autres avec lesquelles on la confond aisément : elle n'est pas le meinongianisme, qui peuplerait le monde d'objets inexistants ; elle n'est pas davantage le possibilisme classique. Le débat embrouillé entre possibilistes et actualistes se laisse, dit-il, reformuler en un débat plus clair et plus maniable, celui du nécessitisme et du [[Dictionnaire de philosophie/Contingence|contingentisme]], qui se joue sur la validité d'une formule logique précise, la formule de Barcan.
Pourquoi soutenir une thèse aussi contre-intuitive ? Non par goût du paradoxe, mais par fidélité à la méthode. Le nécessitisme, montre Williamson, fournit la logique modale quantifiée la plus simple et la plus puissante : il valide la formule de Barcan et sa réciproque, il autorise une sémantique à domaine constant, il évite une foule de complications. Entre deux théories rivales, on choisit comme le physicien choisit entre deux hypothèses : celle qui rend le plus avec le moins. Que la plus simple heurte nos intuitions n'est pas, en soi, un argument contre elle ; nos intuitions sur ce qui aurait pu exister n'ont pas plus d'autorité, sur ce terrain, que le sens commun n'en avait sur la mécanique céleste.
== La méthode : l'anti-exceptionnalisme ==
Tous ces résultats reposent sur une même conception de ce qu'est philosopher, exposée dans ''The Philosophy of Philosophy'' (2007) puis, sous une forme accessible à tous, dans ''Doing Philosophy'' (2018). La thèse y est déjà nette, même si le mot ne s'imposera vraiment que plus tard : c'est ce qu'il appellera, et de plus en plus explicitement, anti-exceptionnalisme<ref>''The Philosophy of Philosophy'', chap. 1 et 7 ; ''Doing Philosophy'', Oxford, Oxford University Press, 2018. La thèse méthodologique est présente dès 2007 ; le qualificatif « anti-exceptionnaliste » ne devient un mot d'ordre explicite que dans les travaux plus récents, du sous-titre de ''Good as Usual'' (2025) à des essais comme « Moral Anti-Exceptionalism ».</ref>. La philosophie, soutient-il, n'occupe aucune position d'exception parmi les savoirs. Elle ne dispose pas d'une faculté spéciale qui lui ouvrirait un accès direct aux essences ; elle ne procède pas par une méthode purement a priori qui la couperait de l'expérience. Elle est de la même famille que les autres enquêtes, simplement plus abstraite et privée de laboratoire.
Le cas le plus discuté est celui des intuitions. On répète volontiers que la philosophie se fonde sur des intuitions, ces jugements spontanés que provoquent en nous les expériences de pensée : le wagon fou que l'on peut dévier sur une autre voie, la chambre chinoise, le village où l'on ne sait plus qui est chauve. Williamson conteste cette description. Ce que nous appelons intuition n'est pas le verdict d'une faculté mystérieuse, ni un donné qu'il faudrait recueillir comme on recueille des réponses à un sondage. C'est un simple jugement, exercé sur un cas hypothétique, et il vaut comme source de connaissance pour autant qu'il est compétent, non parce qu'il serait « intuitif ». La même capacité ordinaire d'évaluer des conditionnels contrefactuels, déjà rencontrée à propos du possible, suffit à en rendre compte : juger ce qui se passerait si telle situation se présentait, voilà ce que nous faisons devant une expérience de pensée, et c'est une chose que nous savons faire.
De là une conséquence qui dérange les habitudes : la distinction même de l'a priori et de l'a posteriori, sur laquelle tant de débats se sont bâtis, lui paraît trop grossière pour un travail théorique sérieux. Nos connaissances modales, par exemple, ne sont ni purement indépendantes de l'expérience ni purement tirées d'elle ; l'expérience y joue un rôle qui n'est ni de simple justification ni de simple déclenchement. La frontière s'estompe. Comment, alors, tranche-t-on une question philosophique ? Par la même méthode que partout : l'inférence vers la meilleure explication, ce que la tradition nomme l'[[Dictionnaire de philosophie/Abduction|abduction]]. On compare des théories rivales, on pèse leur simplicité, leur puissance, leur accord avec ce que l'on tient par ailleurs pour acquis, et l'on retient la meilleure. Rien, en philosophie, n'est gratuit au point de n'imposer aucune contrainte à la réalité : une thèse a des conséquences, et ses conséquences se paient. C'est cette conception qui commande, chaque fois, les choix de Williamson, du nécessitisme à la défense de la logique classique. La question n'est jamais « qu'est-ce qui est évident ? », mais « quelle théorie d'ensemble fait le mieux le travail ? ».
== Le dialogue : ''Tetralogue'' ==
''Tetralogue'', paru en 2015, est un dialogue à la manière antique : quatre voyageurs se trouvent réunis dans un train et discutent jusqu'au terminus. Sarah défend la science et la raison ; Bob, qu'un guérisseur a guéri, en est venu à croire à la sorcellerie ; Roxana, logicienne intransigeante, traque la moindre incohérence ; Zac, conciliant et relativiste, voudrait que chacun ait raison à sa façon. De ce quatuor naît une comédie d'idées où s'affrontent les attitudes que nous adoptons spontanément face au désaccord.
Le propos du livre est de défendre, sans pédantisme, deux thèses jumelles que Williamson tient pour inséparables : la vérité est objective, et nous sommes faillibles. Contre Zac, il s'agit de montrer que la formule « vrai pour moi » ne veut rien dire de cohérent : si une chose est vraie, elle l'est tout court, et croire le contraire à propos du même monde, c'est se tromper, non détenir une autre vérité. Contre une certaine arrogance scientiste, il s'agit de rappeler que reconnaître la possibilité de son erreur n'oblige nullement à renoncer à juger. Le titre, ''I'm Right, You're Wrong'', condense cette double leçon avec une provocation calculée : dans un désaccord véritable, l'un a raison et l'autre tort, et l'admettre n'est pas un manque de tolérance, c'est la condition d'une conversation sérieuse. On respecte mieux autrui en le tenant pour capable de vérité et d'erreur qu'en le confinant poliment dans sa bulle. Le dialogue, sous ses dehors plaisants, est ainsi une défense du réalisme contre le relativisme, ce même réalisme qui gouverne en sous-main toute l'œuvre.
== L'éthique et l'action : ''Good as Usual'' ==
Le dernier grand chantier de Williamson, rassemblé en 2025 sous le titre ''Good as Usual'', dont le sous-titre annonce des essais anti-exceptionnalistes sur les normes, les valeurs et l'action, étend à la philosophie pratique le programme élaboré ailleurs. La thèse directrice est que le normatif ne forme pas un royaume à part. Le bien, la connaissance morale, les normes de la croyance et de l'action ne sont pas plus exceptionnels que le reste ; ils s'étudient avec les mêmes outils, et la connaissance y joue le même rôle central que dans la vie intellectuelle.
La connaissance morale, d'abord. Contre l'argument sceptique qui invoque l'ampleur des désaccords moraux pour conclure à l'absence de savoir éthique, Williamson rappelle que la connaissance n'exige qu'une fiabilité locale. Pourvu que l'on admette qu'il y a des vérités morales, il n'y a, soutient-il, aucun obstacle particulier à les connaître. Que des sociétés divergent sur ce qui est juste ne prouve pas que nul ne sait rien en morale, pas plus que l'existence de désaccords perceptifs ne ruine la perception ; on peut être fiable touchant les actions de son propre milieu sans l'être touchant celles d'un milieu lointain. La capacité de reconnaître le bien et le mal est une capacité de reconnaissance comme une autre, faillible et néanmoins source de savoir.
Ensuite, la connaissance d'abord s'applique à l'action, et c'est ici qu'il faut restituer exactement les termes de l'analogie, qu'on déforme facilement. Connaître se tient à croire comme produire intentionnellement un état de choses se tient à le désirer<ref>L'analogie remonte à « Knowing and Asserting », ''The Philosophical Review'', vol. 105, n° 4, 1996, p. 489-523 (notamment p. 521) : connaître se tient à croire comme produire intentionnellement un état de choses se tient à le désirer ; les deux assurent l'accord du contenu et du monde, mais selon des directions d'ajustement opposées. Elle est reprise et développée dans ''Good as Usual'', 2025.</ref>. Si je sais que P, alors P ; de même, si je fais en sorte que P, alors P. Mais il ne suffit pas, pour savoir que P, de le croire alors que P se trouve vrai, car l'accord pourrait n'être qu'accidentel ; il ne suffit pas davantage, pour avoir produit P, de l'avoir désiré alors que P se trouve réalisé. La connaissance est le bon cas d'une direction d'ajustement, celle de l'esprit au monde : la croyance vise à se conformer au monde, et la connaissance est la croyance qui y parvient sans hasard. L'action est le bon cas de la direction inverse, celle du monde à l'esprit : le désir vise à conformer le monde à lui, et l'action est le désir qui y parvient sans hasard. Ce qui sépare connaissance et action n'est donc pas le degré de réussite, c'est le sens de l'ajustement. La connaissance est l'entrée du raisonnement pratique, son point de départ ; l'action en est la sortie réussie. De là une norme symétrique de celle de l'assertion : n'agis que sur ce que tu sais. Quand la délibération fonctionne bien, on n'emploie comme prémisse que ce que l'on connaît ; une prémisse simplement crue, sans être sue, est un grain de sable qui dérègle la machine. Williamson y intègre une thèse qu'il défend de longue date avec Jason Stanley, l'intellectualisme touchant le savoir-faire : savoir faire quelque chose, c'est savoir une vérité, et non posséder une aptitude d'une autre nature ; le savoir-faire peut donc fournir une prémisse au raisonnement pratique précisément parce qu'il est un savoir-que.
Le même esprit conduit Williamson à reprendre, du côté de la croyance, sa critique de l'internalisme. Il existe plusieurs normes possibles de la croyance : une norme de vérité, une norme d'évidence, une norme de connaissance. Il plaide pour la dernière, sous une forme fonctionnelle : crois seulement ce que tu sais. Et il fait jouer une dernière fois l'argument contre la luminosité pour récuser l'exigence internaliste selon laquelle les fondements de nos jugements devraient nous être accessibles par simple introspection. Le titre du recueil joue d'ailleurs sur les mots : le bien y est traité « comme d'habitude », c'est-à-dire comme le fonctionnement normal, non défectueux, d'êtres engagés dans le monde. Là encore, le geste de Williamson est de ramener la valeur dans le tissu commun de la connaissance et de l'action, au lieu de la reléguer dans une sphère séparée.
== Réception et influence ==
L'œuvre de Williamson a suscité une littérature critique abondante, signe de son importance. Deux volumes collectifs lui ont été consacrés, l'un sur la connaissance, l'autre sur la modalité, chacun accompagné de ses réponses détaillées aux objections<ref>Patrick Greenough et Duncan Pritchard (dir.), ''Williamson on Knowledge'', 2009 ; Mark McCullagh et Juhani Yli-Vakkuri (dir.), ''Williamson on Modality'', 2017.</ref>. Les fronts de discussion sont nombreux. Les internalistes tiennent qu'il a écarté trop vite l'idée d'une justification accessible de l'intérieur. Les défenseurs de la méthode des survaluations, comme Delia Graff Fara, refusent de payer la bivalence au prix de l'intuition qu'aucune coupure nette ne traverse nos prédicats vagues. Les partisans des logiques non classiques rejettent son plaidoyer pour la logique standard. Certains critiques jugent le nécessitisme, avec ses objets contingentement non concrets, d'un coût métaphysique trop lourd. À chacun Williamson répond avec la même rigueur méthodique, en déplaçant le débat sur le terrain qui est le sien, celui de la comparaison des théories ; et c'est souvent cette manière de répondre, autant que les thèses elles-mêmes, qui a marqué ses lecteurs.
Son influence tient aussi à autre chose qu'à ses arguments. Il a contribué à légitimer une certaine façon de faire de la philosophie : technique sans être stérile, ambitieuse sans verser dans la spéculation, attentive à la forme logique des problèmes. Son rayonnement passe enfin par l'enseignement. Il a dirigé un grand nombre de thèses, et plusieurs de ses anciens étudiants comptent aujourd'hui parmi les figures montantes de la discipline. Il s'est aussi adressé au grand public, par ses dialogues, par ses petits livres d'initiation, par ses chroniques de presse, convaincu que la philosophie n'a rien à gagner à se retrancher dans un jargon d'initiés. L'auteur de traités exigeants et le pédagogue ne font chez lui qu'une seule personne, fidèle à l'idée que la difficulté ne doit pas être masquée mais apprivoisée.
== Conclusion ==
Ce qui frappe, au terme de ce parcours, c'est l'unité d'une œuvre que la diversité des sujets pourrait faire croire dispersée. Du vague à la connaissance, de la modalité à la méthode, et jusqu'à l'éthique des derniers travaux, une même sensibilité se reconnaît. Un réalisme constant, d'abord : le réel a ses traits indépendamment de nous, et notre ignorance ne doit jamais être prise pour une indétermination des choses. Un attachement à la logique classique, ensuite, défendu non par dogmatisme mais parce qu'elle figure dans la meilleure théorie globale. La conviction, encore, que la connaissance est la pierre angulaire, le concept premier à partir duquel s'éclairent l'évidence, l'assertion, l'action et la valeur. Et, partout, deux motifs qui donnent à l'ensemble sa signature : la structure de la connaissance inexacte, avec son principe de marge d'erreur, née de l'indiscernabilité non transitive et reparaissant aussi bien dans la théorie du vague que dans l'argument contre la luminosité ; et l'anti-exceptionnalisme, cette idée que la philosophie ne diffère pas en nature des autres enquêtes et procède comme elles par inférence vers la meilleure explication.
Williamson aura beaucoup contribué à une certaine idée de la philosophie analytique : une discipline qui traite ses questions avec autant de sérieux théorique que les sciences, sans pour autant céder à l'obscurité ni au relativisme. On peut discuter chacune de ses thèses, et beaucoup le font ; on peut juger le nécessitisme trop coûteux, l'épistémicisme trop hardi, le primat de la connaissance trop exclusif. Reste, par-delà ces désaccords, une exigence de rigueur et une manière de poser les problèmes dont la philosophie de notre temps porte l'empreinte.
== Notes et références ==
{{références|colonnes=2}}
== Bibliographie ==
=== Sources primaires (œuvres de Timothy Williamson) ===
* « Criteria of Identity and the Axiom of Choice », ''The Journal of Philosophy'', vol. 83, n° 7, 1986, p. 380-394.
* ''Identity and Discrimination'', Oxford, Basil Blackwell, 1990 (édition augmentée, Wiley-Blackwell, 2013).
* ''Vagueness'', Londres, Routledge, 1994.
* « Knowing and Asserting », ''The Philosophical Review'', vol. 105, n° 4, 1996, p. 489-523.
* ''Knowledge and Its Limits'', Oxford, Oxford University Press, 2000.
* ''The Philosophy of Philosophy'', Oxford, Blackwell, 2007 (2e édition augmentée, Wiley-Blackwell, 2021).
* « Necessitism, Contingentism, and Plural Quantification », ''Mind'', vol. 119, n° 475, 2010, p. 657-748.
* ''Modal Logic as Metaphysics'', Oxford, Oxford University Press, 2013.
* ''Tetralogue: I'm Right, You're Wrong'', Oxford, Oxford University Press, 2015.
* ''Doing Philosophy: From Common Curiosity to Logical Reasoning'', Oxford, Oxford University Press, 2018 (réédition en poche sous le titre ''Philosophical Method: A Very Short Introduction'', 2020).
* ''Suppose and Tell: The Semantics and Heuristics of Conditionals'', Oxford, Oxford University Press, 2020.
* (avec Paul Boghossian) ''Debating the A Priori'', Oxford, Oxford University Press, 2020.
* ''Overfitting and Heuristics in Philosophy'', Oxford, Oxford University Press, 2024.
* ''Good as Usual: Anti-Exceptionalist Essays on Norms, Values, and Action'', Oxford, Oxford University Press, 2025.
=== Études critiques consacrées à son œuvre ===
* Patrick Greenough et Duncan Pritchard (dir.), ''Williamson on Knowledge'', Oxford, Oxford University Press, 2009 (avec les « Replies to Critics » de Williamson).
* Mark McCullagh et Juhani Yli-Vakkuri (dir.), ''Williamson on Modality'', Londres, Routledge, 2017.
=== Autres ouvrages et articles cités ===
* Gottlob Frege, ''Les Fondements de l'arithmétique'' (1884).
* Edmund Gettier, « Is Justified True Belief Knowledge? », ''Analysis'', vol. 23, 1963, p. 121-123.
* Saul Kripke, ''Naming and Necessity'', Oxford, Blackwell, 1980.
* David Chalmers, ''The Conscious Mind: In Search of a Fundamental Theory'', Oxford, Oxford University Press, 1996.
* Ernest Sosa, ''Knowing Full Well'', Princeton, Princeton University Press, 2011.
=== Sources biographiques ===
Les données biographiques (dates, postes, distinctions) proviennent des sources institutionnelles suivantes :
* [https://www.philosophy.ox.ac.uk/people/timothy-williamson Page de Timothy Williamson, Faculty of Philosophy, université d'Oxford]
* [https://www.new.ox.ac.uk/timothy-williamson Page de Timothy Williamson, New College, Oxford]
* [https://www.thebritishacademy.ac.uk/fellows/timothy-williamson-FBA/ Notice « Professor Timothy Williamson FBA », The British Academy (élu Fellow en 1997)]
* [https://www.rse.org.uk/fellow/timothy-williamson/ Notice « Professor Timothy Williamson FRSE », The Royal Society of Edinburgh (élu Fellow en 1997)]
* [https://www.philosophy.ox.ac.uk/sitefiles/twcvshortnew-v2.pdf Curriculum vitae officiel (université d'Oxford)]
== Voir aussi ==
* {{Page|Épistémologie}}
* {{Page|Connaissance}}
* {{Page|Métaphysique}}
* {{Page|A priori}}
* {{Page|Contingence}}
* {{Page|Abduction}}
* {{Page|Vérité}}
* {{Page|David Chalmers}}
== Sur Wikisource ==
Deux textes classiques évoqués dans cet article sont disponibles en texte intégral sur Wikisource :
* [[s:Nouveaux Essais sur l’entendement humain|Leibniz, ''Nouveaux Essais sur l'entendement humain'']], où sont discutés le Tas et le Chauve.
* [[s:Essai philosophique concernant l’entendement humain|Locke, ''Essai philosophique concernant l'entendement humain'']], dont Leibniz fait son interlocuteur.
{{DEFAULTSORT:Williamson}}
[[Catégorie:Dictionnaire de philosophie (livre)]]
[[Catégorie:Philosophe]]
kar8qyzofz3ehwmeapeyiuodpp70va9